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;
}
} catch (Exception e) {
ApplicationLoader.appCenterLog(e);
}
try {
File dir = new File(ApplicationLoader.applicationContext.getCacheDir() + "/logs");
dir.mkdirs();
return dir;
} 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;
}
@ -1949,7 +1957,11 @@ public class AndroidUtilities {
try {
File file = ApplicationLoader.applicationContext.getFilesDir();
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) {

View file

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

View file

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

View file

@ -1546,6 +1546,9 @@ public class ActionBarLayout extends FrameLayout implements INavigationLayout, F
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));
if (fragment.actionBar != null && fragment.actionBar.shouldAddToContainer()) {
if (removeActionBarExtraHeight) {

View file

@ -984,5 +984,10 @@ public class ReactionsLayoutInBubble {
VisibleReaction that = (VisibleReaction) o;
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;
fillRecentReactionsList(visibleReactions);
}
filterReactions(visibleReactions);
setVisibleReactionsList(visibleReactions);
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) {
if (!allReactionsAvailable) {
//fill default reactions

View file

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

View file

@ -1077,7 +1077,7 @@ public class LaunchActivity extends BasePermissionsActivity implements INavigati
}
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 IntroActivity();
@ -2977,7 +2977,9 @@ public class LaunchActivity extends BasePermissionsActivity implements INavigati
}
}
}
if (SharedConfig.useLNavigation) {
actionBarLayout.rebuildFragments(INavigationLayout.REBUILD_FLAG_REBUILD_LAST);
}
if (AndroidUtilities.isTablet()) {
layersActionBarLayout.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));
}
Bundle savedInstanceState = activityMode == MODE_LOGIN ? loadCurrentState(newAccount) : null;
Bundle savedInstanceState = activityMode == MODE_LOGIN ? loadCurrentState(newAccount, currentAccount) : null;
if (savedInstanceState != null) {
currentViewNum = savedInstanceState.getInt("currentViewNum", 0);
syncContacts = savedInstanceState.getInt("syncContacts", 1) == 1;
@ -873,13 +873,10 @@ public class LoginActivity extends BaseFragment {
}
}
public static Bundle loadCurrentState(boolean newAccount) {
if (newAccount) {
return null;
}
public static Bundle loadCurrentState(boolean newAccount, int currentAccount) {
try {
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();
for (Map.Entry<String, ?> entry : params.entrySet()) {
String key = entry.getKey();
@ -916,7 +913,7 @@ public class LoginActivity extends BaseFragment {
}
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();
editor.clear();
editor.commit();
@ -1529,7 +1526,7 @@ public class LoginActivity extends BaseFragment {
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();
editor.clear();
putBundleToEditor(bundle, editor, null);
@ -3475,7 +3472,10 @@ public class LoginActivity extends BaseFragment {
timeText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15);
timeText.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
timeText.setOnClickListener(v-> {
if (isRequestingFirebaseSms || isResendingCode) {
// if (isRequestingFirebaseSms || isResendingCode) {
// return;
// }
if (time > 0 && timeTimer != null) {
return;
}
isResendingCode = true;
@ -3994,9 +3994,11 @@ public class LoginActivity extends BaseFragment {
if (currentType == AUTH_TYPE_MESSAGE) {
setProblemTextVisible(true);
timeText.setVisibility(GONE);
problemText.setVisibility(VISIBLE);
} else if (currentType == AUTH_TYPE_FLASH_CALL && (nextType == AUTH_TYPE_CALL || nextType == AUTH_TYPE_SMS)) {
setProblemTextVisible(false);
timeText.setVisibility(VISIBLE);
problemText.setVisibility(GONE);
if (nextType == AUTH_TYPE_CALL || nextType == AUTH_TYPE_MISSED_CALL) {
timeText.setText(LocaleController.formatString("CallAvailableIn", R.string.CallAvailableIn, 1, 0));
} 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));
setProblemTextVisible(time < 1000);
timeText.setVisibility(time < 1000 ? GONE : VISIBLE);
problemText.setVisibility(time < 1000 ? VISIBLE : GONE);
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE);
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));
setProblemTextVisible(time < 1000);
timeText.setVisibility(time < 1000 ? GONE : VISIBLE);
problemText.setVisibility(time < 1000 ? VISIBLE : GONE);
createTimer();
} else {
timeText.setVisibility(GONE);
problemText.setVisibility(VISIBLE);
setProblemTextVisible(false);
createCodeTimer();
}
@ -4090,6 +4095,7 @@ public class LoginActivity extends BaseFragment {
if (codeTime <= 1000) {
setProblemTextVisible(true);
timeText.setVisibility(GONE);
problemText.setVisibility(VISIBLE);
destroyCodeTimer();
}
});
@ -5889,6 +5895,10 @@ public class LoginActivity extends BaseFragment {
showKeyboard(codeFieldContainer.codeField[0]);
codeFieldContainer.requestFocus();
if (!restore && params.containsKey("nextType")) {
AndroidUtilities.runOnUIThread(resendCodeTimeout, params.getInt("timeout"));
}
}
private void onPasscodeError(boolean clear) {
@ -6141,8 +6151,6 @@ public class LoginActivity extends BaseFragment {
codeFieldContainer.setText("");
codeFieldContainer.codeField[0].requestFocus();
}
AndroidUtilities.runOnUIThread(resendCodeTimeout, 60000);
}, SHOW_DELAY);
}

View file

@ -1142,10 +1142,14 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter.
} catch (Throwable e) {
FileLog.e(e);
AndroidUtilities.runOnUIThread(() -> {
try {
RecyclerListView innerListView = sharedMediaLayout.getCurrentListView();
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.os.Build;
import android.util.Log;
import androidx.annotation.Nullable;
@ -162,20 +161,24 @@ public class HardwareVideoEncoderFactory implements VideoEncoderFactory {
private @Nullable MediaCodecInfo findCodecForType(VideoCodecMimeType type) {
ArrayList<MediaCodecInfo> infos = MediaCodecUtils.getSortedCodecsList();
int count = infos.size();
MediaCodecInfo info2 = null;
for (int i = 0; i < count; ++i) {
MediaCodecInfo info = infos.get(i);
if (info == null || !info.isEncoder()) {
continue;
}
if (isSupportedCodec(info, type)) {
if (isSupportedCodec(info, type, true)) {
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.
private boolean isSupportedCodec(MediaCodecInfo info, VideoCodecMimeType type) {
private boolean isSupportedCodec(MediaCodecInfo info, VideoCodecMimeType type, boolean isHardwareSupportedInSdk) {
if (!MediaCodecUtils.codecSupportsType(info, type)) {
return false;
}
@ -185,7 +188,7 @@ public class HardwareVideoEncoderFactory implements VideoEncoderFactory {
== null) {
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

View file

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

View file

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