update to 9.4.7

This commit is contained in:
xaxtix 2023-02-27 09:38:13 +04:00
parent 116092e32d
commit 7554c9b726
13 changed files with 91 additions and 38 deletions

View file

@ -578,15 +578,23 @@ public class AndroidUtilities {
return dir; return dir;
} }
} catch (Exception e) { } catch (Exception e) {
ApplicationLoader.appCenterLog(e);
} }
try { try {
File dir = new File(ApplicationLoader.applicationContext.getCacheDir() + "/logs"); File dir = new File(ApplicationLoader.applicationContext.getCacheDir() + "/logs");
dir.mkdirs(); dir.mkdirs();
return dir; return dir;
} catch (Exception e) { } catch (Exception e) {
ApplicationLoader.appCenterLog(e);
} }
try {
File dir = new File(ApplicationLoader.applicationContext.getFilesDir() + "/logs");
dir.mkdirs();
return dir;
} catch (Exception e) {
}
ApplicationLoader.appCenterLog(new RuntimeException("can't create logs directory"));
return null; return null;
} }
@ -1949,7 +1957,11 @@ public class AndroidUtilities {
try { try {
File file = ApplicationLoader.applicationContext.getFilesDir(); File file = ApplicationLoader.applicationContext.getFilesDir();
if (file != null) { if (file != null) {
return file; File cacheFile = new File(file, "cache/");
cacheFile.mkdirs();
if ((file.exists() || file.mkdirs()) && file.canWrite()) {
return cacheFile;
}
} }
} catch (Exception e) { } catch (Exception e) {

View file

@ -24,8 +24,8 @@ public class BuildVars {
public static boolean USE_CLOUD_STRINGS = true; public static boolean USE_CLOUD_STRINGS = true;
public static boolean CHECK_UPDATES = true; public static boolean CHECK_UPDATES = true;
public static boolean NO_SCOPED_STORAGE = Build.VERSION.SDK_INT <= 29; public static boolean NO_SCOPED_STORAGE = Build.VERSION.SDK_INT <= 29;
public static int BUILD_VERSION = 3155; public static int BUILD_VERSION = 3160;
public static String BUILD_VERSION_STRING = "9.4.6"; public static String BUILD_VERSION_STRING = "9.4.7";
public static int APP_ID = 4; public static int APP_ID = 4;
public static String APP_HASH = "014b35b6184100b085b0d0572f9b5103"; public static String APP_HASH = "014b35b6184100b085b0d0572f9b5103";

View file

@ -33,6 +33,7 @@ import android.hardware.Sensor;
import android.hardware.SensorEvent; import android.hardware.SensorEvent;
import android.hardware.SensorEventListener; import android.hardware.SensorEventListener;
import android.hardware.SensorManager; import android.hardware.SensorManager;
import android.media.AudioDeviceInfo;
import android.media.AudioFormat; import android.media.AudioFormat;
import android.media.AudioManager; import android.media.AudioManager;
import android.media.AudioRecord; import android.media.AudioRecord;
@ -52,6 +53,7 @@ import android.provider.OpenableColumns;
import android.telephony.PhoneStateListener; import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log;
import android.util.SparseArray; import android.util.SparseArray;
import android.view.HapticFeedbackConstants; import android.view.HapticFeedbackConstants;
import android.view.TextureView; import android.view.TextureView;
@ -60,6 +62,8 @@ import android.view.WindowManager;
import android.webkit.MimeTypeMap; import android.webkit.MimeTypeMap;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import androidx.annotation.RequiresApi;
import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.ExoPlayer;
import com.google.android.exoplayer2.ui.AspectRatioFrameLayout; import com.google.android.exoplayer2.ui.AspectRatioFrameLayout;
@ -95,6 +99,7 @@ import java.nio.channels.FileChannel;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Timer; import java.util.Timer;
import java.util.TimerTask; import java.util.TimerTask;
@ -1623,10 +1628,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener,
if (raisedToBack == minCount || accelerometerVertical) { if (raisedToBack == minCount || accelerometerVertical) {
lastAccelerometerDetected = System.currentTimeMillis(); lastAccelerometerDetected = System.currentTimeMillis();
} }
if (proximityTouched && (raisedToBack == minCount || accelerometerVertical || System.currentTimeMillis() - lastAccelerometerDetected < 60) && !NotificationsController.audioManager.isWiredHeadsetOn()) { if (proximityTouched && (raisedToBack == minCount || accelerometerVertical || System.currentTimeMillis() - lastAccelerometerDetected < 60) && !NotificationsController.audioManager.isWiredHeadsetOn() && !VoIPService.isAnyKindOfCallActive()) {
if (BuildVars.LOGS_ENABLED) {
FileLog.d("sensor values reached");
}
if (playingMessageObject == null && recordStartRunnable == null && recordingAudio == null && !PhotoViewer.getInstance().isVisible() && ApplicationLoader.isScreenOn && !inputFieldHasText && allowStartRecord && raiseChat != null && !callInProgress) { if (playingMessageObject == null && recordStartRunnable == null && recordingAudio == null && !PhotoViewer.getInstance().isVisible() && ApplicationLoader.isScreenOn && !inputFieldHasText && allowStartRecord && raiseChat != null && !callInProgress) {
if (!raiseToEarRecord) { if (!raiseToEarRecord) {
if (BuildVars.LOGS_ENABLED) { if (BuildVars.LOGS_ENABLED) {
@ -1663,7 +1665,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener,
raisedToTop = 0; raisedToTop = 0;
raisedToTopSign = 0; raisedToTopSign = 0;
countLess = 0; countLess = 0;
} else if (proximityTouched && ((accelerometerSensor == null || linearSensor == null) && gravitySensor == null)) { } else if (proximityTouched && ((accelerometerSensor == null || linearSensor == null) && gravitySensor == null) && !VoIPService.isAnyKindOfCallActive()) {
if (playingMessageObject != null && !ApplicationLoader.mainInterfacePaused && (playingMessageObject.isVoice() || playingMessageObject.isRoundVideo())) { if (playingMessageObject != null && !ApplicationLoader.mainInterfacePaused && (playingMessageObject.isVoice() || playingMessageObject.isRoundVideo())) {
if (!useFrontSpeaker && !NotificationsController.audioManager.isWiredHeadsetOn()) { if (!useFrontSpeaker && !NotificationsController.audioManager.isWiredHeadsetOn()) {
if (BuildVars.LOGS_ENABLED) { if (BuildVars.LOGS_ENABLED) {

View file

@ -1546,6 +1546,9 @@ public class ActionBarLayout extends FrameLayout implements INavigationLayout, F
parent.removeView(fragmentView); parent.removeView(fragmentView);
} }
} }
if (!fragment.hasOwnBackground && fragmentView.getBackground() == null) {
fragmentView.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
}
containerView.addView(fragmentView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); containerView.addView(fragmentView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT));
if (fragment.actionBar != null && fragment.actionBar.shouldAddToContainer()) { if (fragment.actionBar != null && fragment.actionBar.shouldAddToContainer()) {
if (removeActionBarExtraHeight) { if (removeActionBarExtraHeight) {

View file

@ -984,5 +984,10 @@ public class ReactionsLayoutInBubble {
VisibleReaction that = (VisibleReaction) o; VisibleReaction that = (VisibleReaction) o;
return documentId == that.documentId && Objects.equals(emojicon, that.emojicon); return documentId == that.documentId && Objects.equals(emojicon, that.emojicon);
} }
@Override
public int hashCode() {
return Objects.hash(emojicon, documentId);
}
} }
} }

View file

@ -977,7 +977,7 @@ public class ReactionsContainerLayout extends FrameLayout implements Notificatio
allReactionsAvailable = true; allReactionsAvailable = true;
fillRecentReactionsList(visibleReactions); fillRecentReactionsList(visibleReactions);
} }
filterReactions(visibleReactions);
setVisibleReactionsList(visibleReactions); setVisibleReactionsList(visibleReactions);
if (message.messageOwner.reactions != null && message.messageOwner.reactions.results != null) { if (message.messageOwner.reactions != null && message.messageOwner.reactions.results != null) {
@ -989,6 +989,17 @@ public class ReactionsContainerLayout extends FrameLayout implements Notificatio
} }
} }
private void filterReactions(List<ReactionsLayoutInBubble.VisibleReaction> visibleReactions) {
HashSet<ReactionsLayoutInBubble.VisibleReaction> set = new HashSet<>();
for (int i = 0; i < visibleReactions.size(); i++) {
if (set.contains(visibleReactions.get(i))) {
i--;
visibleReactions.remove(i);
}
set.add(visibleReactions.get(i));
}
}
private void fillRecentReactionsList(List<ReactionsLayoutInBubble.VisibleReaction> visibleReactions) { private void fillRecentReactionsList(List<ReactionsLayoutInBubble.VisibleReaction> visibleReactions) {
if (!allReactionsAvailable) { if (!allReactionsAvailable) {
//fill default reactions //fill default reactions

View file

@ -11,6 +11,7 @@ package org.telegram.ui.Components;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.Context; import android.content.Context;
import android.graphics.SurfaceTexture; import android.graphics.SurfaceTexture;
import android.media.AudioManager;
import android.net.Uri; import android.net.Uri;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
@ -501,13 +502,13 @@ public class VideoPlayer implements Player.Listener, VideoListener, AnalyticsLis
public void setStreamType(int type) { public void setStreamType(int type) {
if (player != null) { if (player != null) {
player.setAudioAttributes(new AudioAttributes.Builder() player.setAudioAttributes(new AudioAttributes.Builder()
.setContentType(type) .setUsage(type == AudioManager.STREAM_VOICE_CALL ? C.USAGE_VOICE_COMMUNICATION : C.USAGE_MEDIA)
.build(), false); .build(), false);
} }
if (audioPlayer != null) { if (audioPlayer != null) {
audioPlayer.setAudioAttributes(new AudioAttributes.Builder() audioPlayer.setAudioAttributes(new AudioAttributes.Builder()
.setContentType(type) .setUsage(type == AudioManager.STREAM_VOICE_CALL ? C.USAGE_VOICE_COMMUNICATION : C.USAGE_MEDIA)
.build(), false); .build(), true);
} }
} }

View file

@ -1077,7 +1077,7 @@ public class LaunchActivity extends BasePermissionsActivity implements INavigati
} }
private BaseFragment getClientNotActivatedFragment() { private BaseFragment getClientNotActivatedFragment() {
if (LoginActivity.loadCurrentState(false).getInt("currentViewNum", 0) != 0) { if (LoginActivity.loadCurrentState(false, currentAccount).getInt("currentViewNum", 0) != 0) {
return new LoginActivity(); return new LoginActivity();
} }
return new IntroActivity(); return new IntroActivity();
@ -2977,7 +2977,9 @@ public class LaunchActivity extends BasePermissionsActivity implements INavigati
} }
} }
} }
actionBarLayout.rebuildFragments(INavigationLayout.REBUILD_FLAG_REBUILD_LAST); if (SharedConfig.useLNavigation) {
actionBarLayout.rebuildFragments(INavigationLayout.REBUILD_FLAG_REBUILD_LAST);
}
if (AndroidUtilities.isTablet()) { if (AndroidUtilities.isTablet()) {
layersActionBarLayout.rebuildFragments(INavigationLayout.REBUILD_FLAG_REBUILD_LAST); layersActionBarLayout.rebuildFragments(INavigationLayout.REBUILD_FLAG_REBUILD_LAST);
rightActionBarLayout.rebuildFragments(INavigationLayout.REBUILD_FLAG_REBUILD_LAST); rightActionBarLayout.rebuildFragments(INavigationLayout.REBUILD_FLAG_REBUILD_LAST);

View file

@ -589,7 +589,7 @@ public class LoginActivity extends BaseFragment {
slideViewsContainer.addView(views[a], LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.CENTER, AndroidUtilities.isTablet() ? 26 : 18, 30, AndroidUtilities.isTablet() ? 26 : 18, 0)); slideViewsContainer.addView(views[a], LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.CENTER, AndroidUtilities.isTablet() ? 26 : 18, 30, AndroidUtilities.isTablet() ? 26 : 18, 0));
} }
Bundle savedInstanceState = activityMode == MODE_LOGIN ? loadCurrentState(newAccount) : null; Bundle savedInstanceState = activityMode == MODE_LOGIN ? loadCurrentState(newAccount, currentAccount) : null;
if (savedInstanceState != null) { if (savedInstanceState != null) {
currentViewNum = savedInstanceState.getInt("currentViewNum", 0); currentViewNum = savedInstanceState.getInt("currentViewNum", 0);
syncContacts = savedInstanceState.getInt("syncContacts", 1) == 1; syncContacts = savedInstanceState.getInt("syncContacts", 1) == 1;
@ -873,13 +873,10 @@ public class LoginActivity extends BaseFragment {
} }
} }
public static Bundle loadCurrentState(boolean newAccount) { public static Bundle loadCurrentState(boolean newAccount, int currentAccount) {
if (newAccount) {
return null;
}
try { try {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("logininfo2", Context.MODE_PRIVATE); SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("logininfo2" + (newAccount ? "_" + currentAccount : ""), Context.MODE_PRIVATE);
Map<String, ?> params = preferences.getAll(); Map<String, ?> params = preferences.getAll();
for (Map.Entry<String, ?> entry : params.entrySet()) { for (Map.Entry<String, ?> entry : params.entrySet()) {
String key = entry.getKey(); String key = entry.getKey();
@ -916,7 +913,7 @@ public class LoginActivity extends BaseFragment {
} }
private void clearCurrentState() { private void clearCurrentState() {
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("logininfo2", Context.MODE_PRIVATE); SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("logininfo2" + (newAccount ? "_" + currentAccount : ""), Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit(); SharedPreferences.Editor editor = preferences.edit();
editor.clear(); editor.clear();
editor.commit(); editor.commit();
@ -1529,7 +1526,7 @@ public class LoginActivity extends BaseFragment {
v.saveStateParams(bundle); v.saveStateParams(bundle);
} }
} }
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("logininfo2", Context.MODE_PRIVATE); SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("logininfo2" + (newAccount ? "_" + currentAccount : ""), Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit(); SharedPreferences.Editor editor = preferences.edit();
editor.clear(); editor.clear();
putBundleToEditor(bundle, editor, null); putBundleToEditor(bundle, editor, null);
@ -3475,7 +3472,10 @@ public class LoginActivity extends BaseFragment {
timeText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15); timeText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15);
timeText.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL); timeText.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
timeText.setOnClickListener(v-> { timeText.setOnClickListener(v-> {
if (isRequestingFirebaseSms || isResendingCode) { // if (isRequestingFirebaseSms || isResendingCode) {
// return;
// }
if (time > 0 && timeTimer != null) {
return; return;
} }
isResendingCode = true; isResendingCode = true;
@ -3994,9 +3994,11 @@ public class LoginActivity extends BaseFragment {
if (currentType == AUTH_TYPE_MESSAGE) { if (currentType == AUTH_TYPE_MESSAGE) {
setProblemTextVisible(true); setProblemTextVisible(true);
timeText.setVisibility(GONE); timeText.setVisibility(GONE);
problemText.setVisibility(VISIBLE);
} else if (currentType == AUTH_TYPE_FLASH_CALL && (nextType == AUTH_TYPE_CALL || nextType == AUTH_TYPE_SMS)) { } else if (currentType == AUTH_TYPE_FLASH_CALL && (nextType == AUTH_TYPE_CALL || nextType == AUTH_TYPE_SMS)) {
setProblemTextVisible(false); setProblemTextVisible(false);
timeText.setVisibility(VISIBLE); timeText.setVisibility(VISIBLE);
problemText.setVisibility(GONE);
if (nextType == AUTH_TYPE_CALL || nextType == AUTH_TYPE_MISSED_CALL) { if (nextType == AUTH_TYPE_CALL || nextType == AUTH_TYPE_MISSED_CALL) {
timeText.setText(LocaleController.formatString("CallAvailableIn", R.string.CallAvailableIn, 1, 0)); timeText.setText(LocaleController.formatString("CallAvailableIn", R.string.CallAvailableIn, 1, 0));
} else if (nextType == AUTH_TYPE_SMS) { } else if (nextType == AUTH_TYPE_SMS) {
@ -4014,6 +4016,7 @@ public class LoginActivity extends BaseFragment {
timeText.setText(LocaleController.formatString("CallAvailableIn", R.string.CallAvailableIn, 2, 0)); timeText.setText(LocaleController.formatString("CallAvailableIn", R.string.CallAvailableIn, 2, 0));
setProblemTextVisible(time < 1000); setProblemTextVisible(time < 1000);
timeText.setVisibility(time < 1000 ? GONE : VISIBLE); timeText.setVisibility(time < 1000 ? GONE : VISIBLE);
problemText.setVisibility(time < 1000 ? VISIBLE : GONE);
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE);
String hash = preferences.getString("sms_hash", null); String hash = preferences.getString("sms_hash", null);
@ -4036,9 +4039,11 @@ public class LoginActivity extends BaseFragment {
timeText.setText(LocaleController.formatString("SmsAvailableIn", R.string.SmsAvailableIn, 2, 0)); timeText.setText(LocaleController.formatString("SmsAvailableIn", R.string.SmsAvailableIn, 2, 0));
setProblemTextVisible(time < 1000); setProblemTextVisible(time < 1000);
timeText.setVisibility(time < 1000 ? GONE : VISIBLE); timeText.setVisibility(time < 1000 ? GONE : VISIBLE);
problemText.setVisibility(time < 1000 ? VISIBLE : GONE);
createTimer(); createTimer();
} else { } else {
timeText.setVisibility(GONE); timeText.setVisibility(GONE);
problemText.setVisibility(VISIBLE);
setProblemTextVisible(false); setProblemTextVisible(false);
createCodeTimer(); createCodeTimer();
} }
@ -4090,6 +4095,7 @@ public class LoginActivity extends BaseFragment {
if (codeTime <= 1000) { if (codeTime <= 1000) {
setProblemTextVisible(true); setProblemTextVisible(true);
timeText.setVisibility(GONE); timeText.setVisibility(GONE);
problemText.setVisibility(VISIBLE);
destroyCodeTimer(); destroyCodeTimer();
} }
}); });
@ -5889,6 +5895,10 @@ public class LoginActivity extends BaseFragment {
showKeyboard(codeFieldContainer.codeField[0]); showKeyboard(codeFieldContainer.codeField[0]);
codeFieldContainer.requestFocus(); codeFieldContainer.requestFocus();
if (!restore && params.containsKey("nextType")) {
AndroidUtilities.runOnUIThread(resendCodeTimeout, params.getInt("timeout"));
}
} }
private void onPasscodeError(boolean clear) { private void onPasscodeError(boolean clear) {
@ -6141,8 +6151,6 @@ public class LoginActivity extends BaseFragment {
codeFieldContainer.setText(""); codeFieldContainer.setText("");
codeFieldContainer.codeField[0].requestFocus(); codeFieldContainer.codeField[0].requestFocus();
} }
AndroidUtilities.runOnUIThread(resendCodeTimeout, 60000);
}, SHOW_DELAY); }, SHOW_DELAY);
} }

View file

@ -1142,9 +1142,13 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter.
} catch (Throwable e) { } catch (Throwable e) {
FileLog.e(e); FileLog.e(e);
AndroidUtilities.runOnUIThread(() -> { AndroidUtilities.runOnUIThread(() -> {
RecyclerListView innerListView = sharedMediaLayout.getCurrentListView(); try {
if (innerListView != null && innerListView.getAdapter() != null) { RecyclerListView innerListView = sharedMediaLayout.getCurrentListView();
innerListView.getAdapter().notifyDataSetChanged(); if (innerListView != null && innerListView.getAdapter() != null) {
innerListView.getAdapter().notifyDataSetChanged();
}
} catch (Throwable e2) {
} }
}); });
} }

View file

@ -18,7 +18,6 @@ import static org.webrtc.MediaCodecUtils.QCOM_PREFIX;
import android.media.MediaCodecInfo; import android.media.MediaCodecInfo;
import android.os.Build; import android.os.Build;
import android.util.Log;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
@ -162,20 +161,24 @@ public class HardwareVideoEncoderFactory implements VideoEncoderFactory {
private @Nullable MediaCodecInfo findCodecForType(VideoCodecMimeType type) { private @Nullable MediaCodecInfo findCodecForType(VideoCodecMimeType type) {
ArrayList<MediaCodecInfo> infos = MediaCodecUtils.getSortedCodecsList(); ArrayList<MediaCodecInfo> infos = MediaCodecUtils.getSortedCodecsList();
int count = infos.size(); int count = infos.size();
MediaCodecInfo info2 = null;
for (int i = 0; i < count; ++i) { for (int i = 0; i < count; ++i) {
MediaCodecInfo info = infos.get(i); MediaCodecInfo info = infos.get(i);
if (info == null || !info.isEncoder()) { if (info == null || !info.isEncoder()) {
continue; continue;
} }
if (isSupportedCodec(info, type)) { if (isSupportedCodec(info, type, true)) {
return info; return info;
} }
if (isSupportedCodec(info, type, false)) {
info2 = info;
}
} }
return null; // No support for this type. return info2; // No support for this type.
} }
// Returns true if the given MediaCodecInfo indicates a supported encoder for the given type. // Returns true if the given MediaCodecInfo indicates a supported encoder for the given type.
private boolean isSupportedCodec(MediaCodecInfo info, VideoCodecMimeType type) { private boolean isSupportedCodec(MediaCodecInfo info, VideoCodecMimeType type, boolean isHardwareSupportedInSdk) {
if (!MediaCodecUtils.codecSupportsType(info, type)) { if (!MediaCodecUtils.codecSupportsType(info, type)) {
return false; return false;
} }
@ -185,7 +188,7 @@ public class HardwareVideoEncoderFactory implements VideoEncoderFactory {
== null) { == null) {
return false; return false;
} }
return isHardwareSupportedInCurrentSdk(info, type) && isMediaCodecAllowed(info); return (!isHardwareSupportedInSdk || isHardwareSupportedInCurrentSdk(info, type)) && isMediaCodecAllowed(info);
} }
// Returns true if the given MediaCodecInfo indicates a hardware module that is supported on the // Returns true if the given MediaCodecInfo indicates a hardware module that is supported on the

View file

@ -1,5 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<paths> <paths>
<external-path name="media" path="."/> <external-path name="media" path="."/>
<files-path name="logs" path="/logs/"/>
<files-path name="cache" path="/cache/"/>
<root-path name="external_files" path="/storage/" /> <root-path name="external_files" path="/storage/" />
</paths> </paths>

View file

@ -13,8 +13,8 @@
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true # org.gradle.parallel=true
#Sat Mar 12 05:53:50 MSK 2016 #Sat Mar 12 05:53:50 MSK 2016
APP_VERSION_NAME=9.4.6 APP_VERSION_NAME=9.4.7
APP_VERSION_CODE=3155 APP_VERSION_CODE=3160
APP_PACKAGE=org.telegram.messenger APP_PACKAGE=org.telegram.messenger
RELEASE_KEY_PASSWORD=android RELEASE_KEY_PASSWORD=android
RELEASE_KEY_ALIAS=androidkey RELEASE_KEY_ALIAS=androidkey