正在查看: Plus 12 v10.13.1.1 应用的 MediaController.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: Plus 12 v10.13.1.1 应用的 MediaController.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package org.telegram.messenger;
import android.animation.ValueAnimator;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.DownloadManager;
import android.bluetooth.BluetoothAdapter;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.content.DialogInterface;
import android.database.Cursor;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.media.AudioDeviceInfo;
import android.media.AudioManager;
import android.media.AudioRecord;
import android.media.MediaCodecInfo;
import android.media.MediaCodecList;
import android.media.MediaExtractor;
import android.media.MediaMetadataRetriever;
import android.media.audiofx.AcousticEchoCanceler;
import android.media.audiofx.AutomaticGainControl;
import android.media.audiofx.NoiseSuppressor;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import android.os.PowerManager;
import android.provider.MediaStore;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.SparseArray;
import android.view.TextureView;
import android.view.View;
import android.webkit.MimeTypeMap;
import android.widget.FrameLayout;
import com.google.android.exoplayer2.ext.opus.OpusDecoder;
import com.google.android.exoplayer2.ui.AspectRatioFrameLayout;
import j$.util.concurrent.ConcurrentHashMap;
import java.io.File;
import java.io.FileDescriptor;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.channels.FileChannel;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Timer;
import java.util.TimerTask;
import org.telegram.messenger.MediaController$;
import org.telegram.messenger.MediaDataController;
import org.telegram.messenger.MessageObject;
import org.telegram.messenger.MessagesController;
import org.telegram.messenger.MessagesStorage;
import org.telegram.messenger.SendMessagesHelper;
import org.telegram.messenger.Utilities;
import org.telegram.messenger.audioinfo.AudioInfo;
import org.telegram.messenger.voip.VoIPService;
import org.telegram.tgnet.ConnectionsManager;
import org.telegram.tgnet.TLObject;
import org.telegram.tgnet.TLRPC;
import org.telegram.tgnet.TLRPC$Document;
import org.telegram.tgnet.TLRPC$User;
import org.telegram.tgnet.tl.TL_stories;
import org.telegram.ui.ActionBar.AlertDialog;
import org.telegram.ui.ActionBar.BaseFragment;
import org.telegram.ui.ActionBar.PlusSettings;
import org.telegram.ui.ActionBar.Theme;
import org.telegram.ui.ChatActivity;
import org.telegram.ui.Components.PipRoundVideoView;
import org.telegram.ui.Components.VideoPlayer;
import org.telegram.ui.LaunchActivity;
import org.telegram.ui.PhotoViewer;
public class MediaController implements AudioManager.OnAudioFocusChangeListener, NotificationCenter$NotificationCenterDelegate, SensorEventListener {
private static final int AUDIO_FOCUSED = 2;
public static final String AUDIO_MIME_TYPE = "audio/mp4a-latm";
private static final int AUDIO_NO_FOCUS_CAN_DUCK = 1;
private static final int AUDIO_NO_FOCUS_NO_DUCK = 0;
private static volatile MediaController Instance = null;
public static final int VIDEO_BITRATE_1080 = 6800000;
public static final int VIDEO_BITRATE_360 = 750000;
public static final int VIDEO_BITRATE_480 = 1000000;
public static final int VIDEO_BITRATE_720 = 2621440;
public static final String VIDEO_MIME_TYPE = "video/avc";
private static final float VOLUME_DUCK = 0.2f;
private static final float VOLUME_NORMAL = 1.0f;
public static AlbumEntry allMediaAlbumEntry;
public static ArrayList<AlbumEntry> allMediaAlbums;
public static ArrayList<AlbumEntry> allPhotoAlbums;
public static AlbumEntry allPhotosAlbumEntry;
public static AlbumEntry allVideosAlbumEntry;
private static Runnable broadcastPhotosRunnable;
private static final ConcurrentHashMap<String, Integer> cachedEncoderBitrates;
public static boolean forceBroadcastNewPhotos;
public static String iFilter;
private static final String[] projectionPhotos;
private static final String[] projectionVideo;
private static Runnable refreshGalleryRunnable;
private static long volumeBarLastTimeShown;
private Sensor accelerometerSensor;
private boolean accelerometerVertical;
private AcousticEchoCanceler acousticEchoCanceler;
private boolean allowStartRecord;
private AudioInfo audioInfo;
private AudioRecord audioRecorder;
private boolean audioRecorderPaused;
private float audioVolume;
private ValueAnimator audioVolumeAnimator;
private AutomaticGainControl automaticGainControl;
private Activity baseActivity;
private boolean callInProgress;
private int countLess;
private AspectRatioFrameLayout currentAspectRatioFrameLayout;
private float currentAspectRatioFrameLayoutRatio;
private boolean currentAspectRatioFrameLayoutReady;
private int currentAspectRatioFrameLayoutRotation;
private VideoConvertMessage currentForegroundConvertingVideo;
private int currentPlaylistNum;
private TextureView currentTextureView;
private FrameLayout currentTextureViewContainer;
private boolean downloadingCurrentMessage;
private ExternalObserver externalObserver;
private View feedbackView;
private ByteBuffer fileBuffer;
private DispatchQueue fileEncodingQueue;
private BaseFragment flagSecureFragment;
private boolean forceLoopCurrentPlaylist;
private MessageObject goingToShowMessageObject;
private Sensor gravitySensor;
private int hasAudioFocus;
private boolean hasRecordAudioFocus;
private boolean ignoreOnPause;
private boolean ignoreProximity;
private boolean inputFieldHasText;
private InternalObserver internalObserver;
private boolean isDrawingWasReady;
private boolean isStreamingCurrentAudio;
private long lastAccelerometerDetected;
private int lastChatAccount;
private long lastChatEnterTime;
private long lastChatLeaveTime;
private ArrayList<Long> lastChatVisibleMessages;
private long lastMediaCheckTime;
private int lastMessageId;
private long lastSaveTime;
private TLRPC.EncryptedChat lastSecretChat;
private TLRPC$User lastUser;
private Sensor linearSensor;
private boolean loadingPlaylist;
private boolean manualRecording;
private String[] mediaProjections;
private NoiseSuppressor noiseSuppressor;
private PipRoundVideoView pipRoundVideoView;
private int pipSwitchingState;
private boolean playMusicAgain;
private int playerNum;
private boolean playerWasReady;
private MessageObject playingMessageObject;
private int playlistClassGuid;
private PlaylistGlobalSearchParams playlistGlobalSearchParams;
private long playlistMergeDialogId;
private float previousAccValue;
private boolean proximityHasDifferentValues;
private Sensor proximitySensor;
private boolean proximityTouched;
private PowerManager.WakeLock proximityWakeLock;
private ChatActivity raiseChat;
private boolean raiseToEarRecord;
private int raisedToBack;
private int raisedToTop;
private int raisedToTopSign;
private long recordDialogId;
private DispatchQueue recordQueue;
private String recordQuickReplyShortcut;
private int recordQuickReplyShortcutId;
private MessageObject recordReplyingMsg;
private TL_stories.StoryItem recordReplyingStory;
private MessageObject recordReplyingTopMsg;
private Runnable recordStartRunnable;
private long recordStartTime;
public long recordTimeCount;
private long recordTopicId;
public TLRPC.TL_document recordingAudio;
private File recordingAudioFile;
private int recordingCurrentAccount;
private boolean resumeAudioOnFocusGain;
public long samplesCount;
private float seekToProgressPending;
private int sendAfterDone;
private boolean sendAfterDoneNotify;
private boolean sendAfterDoneOnce;
private int sendAfterDoneScheduleDate;
private SensorManager sensorManager;
private boolean sensorsStarted;
private String shouldSavePositionForCurrentAudio;
private int startObserverToken;
private StopMediaObserverRunnable stopMediaObserverRunnable;
private long timeSinceRaise;
private boolean useFrontSpeaker;
private VideoPlayer videoPlayer;
private ArrayList<MessageObject> voiceMessagesPlaylist;
private SparseArray<MessageObject> voiceMessagesPlaylistMap;
private boolean voiceMessagesPlaylistUnread;
private long writedFileLenght;
public int writedFrame;
public AudioManager.OnAudioFocusChangeListener audioRecordFocusChangedListener = new MediaController$.ExternalSyntheticLambda2(this);
private final Object videoConvertSync = new Object();
private long lastTimestamp = 0;
private float lastProximityValue = -100.0f;
private float[] gravity = new float[3];
private float[] gravityFast = new float[3];
private float[] linearAcceleration = new float[3];
private int audioFocus = 0;
private ArrayList<VideoConvertMessage> foregroundConvertingMessages = new ArrayList<>();
private ArrayList<VideoConvertMessage> videoConvertQueue = new ArrayList<>();
private final Object videoQueueSync = new Object();
private HashMap<String, MessageObject> generatingWaveform = new HashMap<>();
public boolean isSilent = false;
private boolean isPaused = false;
private boolean wasPlayingAudioBeforePause = false;
private VideoPlayer audioPlayer = null;
private VideoPlayer emojiSoundPlayer = null;
private int emojiSoundPlayerNum = 0;
private float currentPlaybackSpeed = VOLUME_NORMAL;
private float currentMusicPlaybackSpeed = VOLUME_NORMAL;
private float fastPlaybackSpeed = VOLUME_NORMAL;
private float fastMusicPlaybackSpeed = VOLUME_NORMAL;
private long lastProgress = 0;
private Timer progressTimer = null;
private final Object progressTimerSync = new Object();
private ArrayList<MessageObject> playlist = new ArrayList<>();
private HashMap<Integer, MessageObject> playlistMap = new HashMap<>();
private ArrayList<MessageObject> shuffledPlaylist = new ArrayList<>();
private boolean[] playlistEndReached = {false, false};
private int[] playlistMaxId = {ConnectionsManager.DEFAULT_DATACENTER_ID, ConnectionsManager.DEFAULT_DATACENTER_ID};
private Runnable setLoadingRunnable = new 1(this);
private int recordingGuid = -1;
public short[] recordSamples = new short[ConnectionsManager.RequestFlagDoNotWaitFloodWait];
private final Object sync = new Object();
private ArrayList<ByteBuffer> recordBuffers = new ArrayList<>();
public int recordBufferSize = 1280;
public int sampleRate = OpusDecoder.SAMPLE_RATE;
private int audioSpeedIndex = -1;
private Runnable recordRunnable = new 2(this);
private final ValueAnimator.AnimatorUpdateListener audioVolumeUpdateListener = new 3(this);
private static int getVideoBitrateWithFactor(float f) {
return (int) (f * 2000.0f * 1000.0f * 1.13f);
}
public static native byte[] getWaveform(String path);
public static native int isOpusFile(String path);
private static boolean isRecognizedFormat(int colorFormat) {
if (colorFormat == 39 || colorFormat == 2130706688) {
return true;
}
switch (colorFormat) {
case 19:
case 20:
case 21:
return true;
default:
return false;
}
}
private native int resumeRecord(String path, int sampleRate);
private native int startRecord(String path, int sampleRate);
private native void stopRecord(boolean allowResuming);
public native int writeFrame(ByteBuffer frame, int len);
public native byte[] getWaveform2(short[] array, int length);
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
public boolean isBuffering() {
VideoPlayer videoPlayer = this.audioPlayer;
if (videoPlayer != null) {
return videoPlayer.isBuffering();
}
return false;
}
public VideoConvertMessage getCurrentForegroundConverMessage() {
return this.currentForegroundConvertingVideo;
}
static {
String[] strArr = new String[9];
strArr[0] = "_id";
strArr[1] = "bucket_id";
strArr[2] = "bucket_display_name";
strArr[3] = "_data";
int i = Build.VERSION.SDK_INT;
strArr[4] = i > 28 ? "date_modified" : "datetaken";
strArr[5] = "orientation";
strArr[6] = "width";
strArr[7] = "height";
strArr[8] = "_size";
projectionPhotos = strArr;
String[] strArr2 = new String[9];
strArr2[0] = "_id";
strArr2[1] = "bucket_id";
strArr2[2] = "bucket_display_name";
strArr2[3] = "_data";
strArr2[4] = i <= 28 ? "datetaken" : "date_modified";
strArr2[5] = "duration";
strArr2[6] = "width";
strArr2[7] = "height";
strArr2[8] = "_size";
projectionVideo = strArr2;
cachedEncoderBitrates = new ConcurrentHashMap<>();
iFilter = "*";
allMediaAlbums = new ArrayList<>();
allPhotoAlbums = new ArrayList<>();
}
public void lambda$new$0(int i) {
if (i != 1) {
this.hasRecordAudioFocus = false;
}
}
public static void checkGallery() {
AlbumEntry albumEntry;
if (Build.VERSION.SDK_INT < 24 || (albumEntry = allPhotosAlbumEntry) == null) {
return;
}
Utilities.globalQueue.postRunnable(new MediaController$.ExternalSyntheticLambda4(albumEntry.photos.size()), 2000L);
}
public static void lambda$checkGallery$1(int r17) {
throw new UnsupportedOperationException("Method not decompiled: org.telegram.messenger.MediaController.lambda$checkGallery$1(int):void");
}
public static MediaController getInstance() {
MediaController mediaController = Instance;
if (mediaController == null) {
synchronized (MediaController.class) {
mediaController = Instance;
if (mediaController == null) {
mediaController = new MediaController();
Instance = mediaController;
}
}
}
return mediaController;
}
public MediaController() {
DispatchQueue dispatchQueue = new DispatchQueue("recordQueue");
this.recordQueue = dispatchQueue;
dispatchQueue.setPriority(10);
DispatchQueue dispatchQueue2 = new DispatchQueue("fileEncodingQueue");
this.fileEncodingQueue = dispatchQueue2;
dispatchQueue2.setPriority(10);
this.recordQueue.postRunnable(new MediaController$.ExternalSyntheticLambda10(this));
Utilities.globalQueue.postRunnable(new MediaController$.ExternalSyntheticLambda16(this));
this.fileBuffer = ByteBuffer.allocateDirect(1920);
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda15(this));
String[] strArr = new String[7];
strArr[0] = "_data";
strArr[1] = "_display_name";
strArr[2] = "bucket_display_name";
strArr[3] = Build.VERSION.SDK_INT > 28 ? "date_modified" : "datetaken";
strArr[4] = "title";
strArr[5] = "width";
strArr[6] = "height";
this.mediaProjections = strArr;
ContentResolver contentResolver = ApplicationLoader.applicationContext.getContentResolver();
try {
contentResolver.registerContentObserver(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, true, new GalleryObserverExternal());
} catch (Exception e) {
FileLog.e(e);
}
try {
contentResolver.registerContentObserver(MediaStore.Images.Media.INTERNAL_CONTENT_URI, true, new GalleryObserverInternal());
} catch (Exception e2) {
FileLog.e(e2);
}
try {
contentResolver.registerContentObserver(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, true, new GalleryObserverExternal());
} catch (Exception e3) {
FileLog.e(e3);
}
try {
contentResolver.registerContentObserver(MediaStore.Video.Media.INTERNAL_CONTENT_URI, true, new GalleryObserverInternal());
} catch (Exception e4) {
FileLog.e(e4);
}
}
public void lambda$new$2() {
try {
this.sampleRate = OpusDecoder.SAMPLE_RATE;
int minBufferSize = AudioRecord.getMinBufferSize(OpusDecoder.SAMPLE_RATE, 16, 2);
if (minBufferSize <= 0) {
minBufferSize = 1280;
}
this.recordBufferSize = minBufferSize;
for (int i = 0; i < 5; i++) {
ByteBuffer allocateDirect = ByteBuffer.allocateDirect(this.recordBufferSize);
allocateDirect.order(ByteOrder.nativeOrder());
this.recordBuffers.add(allocateDirect);
}
} catch (Exception e) {
FileLog.e(e);
}
}
public void lambda$new$3() {
try {
this.currentPlaybackSpeed = MessagesController.getGlobalMainSettings().getFloat("playbackSpeed", VOLUME_NORMAL);
this.currentMusicPlaybackSpeed = MessagesController.getGlobalMainSettings().getFloat("musicPlaybackSpeed", VOLUME_NORMAL);
this.fastPlaybackSpeed = MessagesController.getGlobalMainSettings().getFloat("fastPlaybackSpeed", 1.8f);
this.fastMusicPlaybackSpeed = MessagesController.getGlobalMainSettings().getFloat("fastMusicPlaybackSpeed", 1.8f);
SensorManager sensorManager = (SensorManager) ApplicationLoader.applicationContext.getSystemService("sensor");
this.sensorManager = sensorManager;
this.linearSensor = sensorManager.getDefaultSensor(10);
Sensor defaultSensor = this.sensorManager.getDefaultSensor(9);
this.gravitySensor = defaultSensor;
if (this.linearSensor == null || defaultSensor == null) {
if (BuildVars.LOGS_ENABLED) {
FileLog.d("gravity or linear sensor not found");
}
this.accelerometerSensor = this.sensorManager.getDefaultSensor(1);
this.linearSensor = null;
this.gravitySensor = null;
}
this.proximitySensor = this.sensorManager.getDefaultSensor(8);
this.proximityWakeLock = ((PowerManager) ApplicationLoader.applicationContext.getSystemService("power")).newWakeLock(32, "telegram:proximity_lock");
} catch (Exception e) {
FileLog.e(e);
}
try {
PhoneStateListener phoneStateListener = new 4(this);
TelephonyManager telephonyManager = (TelephonyManager) ApplicationLoader.applicationContext.getSystemService("phone");
if (telephonyManager != null) {
telephonyManager.listen(phoneStateListener, 32);
}
} catch (Exception e2) {
FileLog.e(e2);
}
}
public void lambda$new$4() {
for (int i = 0; i < UserConfig.MAX_ACCOUNT_COUNT; i++) {
NotificationCenter.getInstance(i).addObserver(this, NotificationCenter.fileLoaded);
NotificationCenter.getInstance(i).addObserver(this, NotificationCenter.httpFileDidLoad);
NotificationCenter.getInstance(i).addObserver(this, NotificationCenter.didReceiveNewMessages);
NotificationCenter.getInstance(i).addObserver(this, NotificationCenter.messagesDeleted);
NotificationCenter.getInstance(i).addObserver(this, NotificationCenter.removeAllMessagesFromDialog);
NotificationCenter.getInstance(i).addObserver(this, NotificationCenter.musicDidLoad);
NotificationCenter.getInstance(i).addObserver(this, NotificationCenter.mediaDidLoad);
NotificationCenter.getGlobalInstance().addObserver(this, NotificationCenter.playerDidStartPlaying);
}
}
@Override
public void onAudioFocusChange(int focusChange) {
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda19(this, focusChange));
}
public void lambda$onAudioFocusChange$5(int i) {
if (i == -1) {
if (isPlayingMessage(getPlayingMessageObject()) && !isMessagePaused()) {
lambda$startAudioAgain$7(this.playingMessageObject);
}
this.hasAudioFocus = 0;
this.audioFocus = 0;
} else if (i == 1) {
this.audioFocus = 2;
if (this.resumeAudioOnFocusGain) {
this.resumeAudioOnFocusGain = false;
if (isPlayingMessage(getPlayingMessageObject()) && isMessagePaused()) {
playMessage(getPlayingMessageObject());
}
}
} else if (i == -3) {
this.audioFocus = 1;
} else if (i == -2) {
this.audioFocus = 0;
if (isPlayingMessage(getPlayingMessageObject()) && !isMessagePaused()) {
lambda$startAudioAgain$7(this.playingMessageObject);
this.resumeAudioOnFocusGain = true;
}
}
setPlayerVolume();
}
public void setPlayerVolume() {
float f;
try {
if (this.isSilent) {
f = 0.0f;
} else {
f = this.audioFocus != 1 ? VOLUME_NORMAL : VOLUME_DUCK;
}
VideoPlayer videoPlayer = this.audioPlayer;
if (videoPlayer != null) {
videoPlayer.setVolume(f * this.audioVolume);
return;
}
VideoPlayer videoPlayer2 = this.videoPlayer;
if (videoPlayer2 != null) {
videoPlayer2.setVolume(f);
}
} catch (Exception e) {
FileLog.e(e);
}
}
public VideoPlayer getVideoPlayer() {
return this.videoPlayer;
}
private void startProgressTimer(final MessageObject currentPlayingMessageObject) {
synchronized (this.progressTimerSync) {
Timer timer = this.progressTimer;
if (timer != null) {
try {
timer.cancel();
this.progressTimer = null;
} catch (Exception e) {
FileLog.e(e);
}
}
currentPlayingMessageObject.getFileName();
Timer timer2 = new Timer();
this.progressTimer = timer2;
timer2.schedule((TimerTask) new 5(this, currentPlayingMessageObject), 0L, 17L);
}
}
private void stopProgressTimer() {
synchronized (this.progressTimerSync) {
Timer timer = this.progressTimer;
if (timer != null) {
try {
timer.cancel();
this.progressTimer = null;
} catch (Exception e) {
FileLog.e(e);
}
}
}
}
public void cleanup() {
cleanupPlayer(true, true);
this.audioInfo = null;
this.playMusicAgain = false;
for (int i = 0; i < UserConfig.MAX_ACCOUNT_COUNT; i++) {
DownloadController.getInstance(i).cleanup();
}
this.videoConvertQueue.clear();
this.generatingWaveform.clear();
this.voiceMessagesPlaylist = null;
this.voiceMessagesPlaylistMap = null;
clearPlaylist();
cancelVideoConvert(null);
}
private void clearPlaylist() {
this.playlist.clear();
this.playlistMap.clear();
this.shuffledPlaylist.clear();
this.playlistClassGuid = 0;
boolean[] zArr = this.playlistEndReached;
zArr[1] = false;
zArr[0] = false;
this.playlistMergeDialogId = 0L;
int[] iArr = this.playlistMaxId;
iArr[1] = Integer.MAX_VALUE;
iArr[0] = Integer.MAX_VALUE;
this.loadingPlaylist = false;
this.playlistGlobalSearchParams = null;
}
public void startMediaObserver() {
ApplicationLoader.applicationHandler.removeCallbacks(this.stopMediaObserverRunnable);
this.startObserverToken++;
try {
if (this.internalObserver == null) {
ContentResolver contentResolver = ApplicationLoader.applicationContext.getContentResolver();
Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
ExternalObserver externalObserver = new ExternalObserver(this);
this.externalObserver = externalObserver;
contentResolver.registerContentObserver(uri, false, externalObserver);
}
} catch (Exception e) {
FileLog.e(e);
}
try {
if (this.externalObserver == null) {
ContentResolver contentResolver2 = ApplicationLoader.applicationContext.getContentResolver();
Uri uri2 = MediaStore.Images.Media.INTERNAL_CONTENT_URI;
InternalObserver internalObserver = new InternalObserver(this);
this.internalObserver = internalObserver;
contentResolver2.registerContentObserver(uri2, false, internalObserver);
}
} catch (Exception e2) {
FileLog.e(e2);
}
}
public void stopMediaObserver() {
if (this.stopMediaObserverRunnable == null) {
this.stopMediaObserverRunnable = new StopMediaObserverRunnable(this, (StopMediaObserverRunnable-IA) null);
}
this.stopMediaObserverRunnable.currentObserverToken = this.startObserverToken;
ApplicationLoader.applicationHandler.postDelayed(this.stopMediaObserverRunnable, 5000L);
}
public void processMediaObserver(android.net.Uri r14) {
throw new UnsupportedOperationException("Method not decompiled: org.telegram.messenger.MediaController.processMediaObserver(android.net.Uri):void");
}
public void lambda$processMediaObserver$6(ArrayList arrayList) {
NotificationCenter.getInstance(this.lastChatAccount).postNotificationName(NotificationCenter.screenshotTook, new Object[0]);
checkScreenshots(arrayList);
}
private void checkScreenshots(ArrayList<Long> dates) {
if (dates == null || dates.isEmpty() || this.lastChatEnterTime == 0) {
return;
}
if (this.lastUser != null || (this.lastSecretChat instanceof TLRPC.TL_encryptedChat)) {
boolean z = false;
for (int i = 0; i < dates.size(); i++) {
Long l = dates.get(i);
if ((this.lastMediaCheckTime == 0 || l.longValue() > this.lastMediaCheckTime) && l.longValue() >= this.lastChatEnterTime && (this.lastChatLeaveTime == 0 || l.longValue() <= this.lastChatLeaveTime + 2000)) {
this.lastMediaCheckTime = Math.max(this.lastMediaCheckTime, l.longValue());
z = true;
}
}
if (z) {
if (this.lastSecretChat != null) {
SecretChatHelper.getInstance(this.lastChatAccount).sendScreenshotMessage(this.lastSecretChat, this.lastChatVisibleMessages, (TLRPC.Message) null);
} else {
SendMessagesHelper.getInstance(this.lastChatAccount).sendScreenshotMessage(this.lastUser, this.lastMessageId, null);
}
}
}
}
public void setLastVisibleMessageIds(int account, long enterTime, long leaveTime, TLRPC$User user, TLRPC.EncryptedChat encryptedChat, ArrayList<Long> visibleMessages, int visibleMessage) {
this.lastChatEnterTime = enterTime;
this.lastChatLeaveTime = leaveTime;
this.lastChatAccount = account;
this.lastSecretChat = encryptedChat;
this.lastUser = user;
this.lastMessageId = visibleMessage;
this.lastChatVisibleMessages = visibleMessages;
}
@Override
public void didReceivedNotification(int id, int account, Object... args) {
ArrayList<MessageObject> arrayList;
int indexOf;
int i = 0;
if (id == NotificationCenter.fileLoaded || id == NotificationCenter.httpFileDidLoad) {
String str = (String) args[0];
MessageObject messageObject = this.playingMessageObject;
if (messageObject != null && messageObject.currentAccount == account && FileLoader.getAttachFileName(messageObject.getDocument()).equals(str)) {
if (this.downloadingCurrentMessage) {
this.playMusicAgain = true;
playMessage(this.playingMessageObject);
return;
} else {
if (this.audioInfo == null) {
try {
this.audioInfo = AudioInfo.getAudioInfo(FileLoader.getInstance(UserConfig.selectedAccount).getPathToMessage(this.playingMessageObject.messageOwner));
return;
} catch (Exception e) {
FileLog.e(e);
return;
}
}
return;
}
}
return;
}
if (id == NotificationCenter.messagesDeleted) {
if (((Boolean) args[2]).booleanValue()) {
return;
}
long longValue = ((Long) args[1]).longValue();
ArrayList arrayList2 = (ArrayList) args[0];
MessageObject messageObject2 = this.playingMessageObject;
if (messageObject2 != null && longValue == messageObject2.messageOwner.peer_id.channel_id && arrayList2.contains(Integer.valueOf(messageObject2.getId()))) {
cleanupPlayer(true, true);
}
ArrayList<MessageObject> arrayList3 = this.voiceMessagesPlaylist;
if (arrayList3 == null || arrayList3.isEmpty() || longValue != this.voiceMessagesPlaylist.get(0).messageOwner.peer_id.channel_id) {
return;
}
while (i < arrayList2.size()) {
Integer num = (Integer) arrayList2.get(i);
MessageObject messageObject3 = this.voiceMessagesPlaylistMap.get(num.intValue());
this.voiceMessagesPlaylistMap.remove(num.intValue());
if (messageObject3 != null) {
this.voiceMessagesPlaylist.remove(messageObject3);
}
i++;
}
return;
}
if (id == NotificationCenter.removeAllMessagesFromDialog) {
long longValue2 = ((Long) args[0]).longValue();
MessageObject messageObject4 = this.playingMessageObject;
if (messageObject4 == null || messageObject4.getDialogId() != longValue2) {
return;
}
cleanupPlayer(false, true);
return;
}
if (id == NotificationCenter.musicDidLoad) {
long longValue3 = ((Long) args[0]).longValue();
MessageObject messageObject5 = this.playingMessageObject;
if (messageObject5 == null || !messageObject5.isMusic() || this.playingMessageObject.getDialogId() != longValue3 || this.playingMessageObject.scheduled) {
return;
}
ArrayList arrayList4 = (ArrayList) args[1];
ArrayList arrayList5 = (ArrayList) args[2];
this.playlist.addAll(0, arrayList4);
this.playlist.addAll(arrayList5);
int size = this.playlist.size();
for (int i2 = 0; i2 < size; i2++) {
MessageObject messageObject6 = this.playlist.get(i2);
this.playlistMap.put(Integer.valueOf(messageObject6.getId()), messageObject6);
int[] iArr = this.playlistMaxId;
iArr[0] = Math.min(iArr[0], messageObject6.getId());
}
sortPlaylist();
if (SharedConfig.shuffleMusic) {
buildShuffledPlayList();
} else {
MessageObject messageObject7 = this.playingMessageObject;
if (messageObject7 != null && (indexOf = this.playlist.indexOf(messageObject7)) >= 0) {
this.currentPlaylistNum = indexOf;
}
}
this.playlistClassGuid = ConnectionsManager.generateClassGuid();
return;
}
if (id == NotificationCenter.mediaDidLoad) {
if (((Integer) args[3]).intValue() != this.playlistClassGuid || this.playingMessageObject == null) {
return;
}
long longValue4 = ((Long) args[0]).longValue();
((Integer) args[4]).intValue();
ArrayList arrayList6 = (ArrayList) args[2];
DialogObject.isEncryptedDialog(longValue4);
char c = longValue4 == this.playlistMergeDialogId ? (char) 1 : (char) 0;
if (!arrayList6.isEmpty()) {
this.playlistEndReached[c] = ((Boolean) args[5]).booleanValue();
}
int i3 = 0;
for (int i4 = 0; i4 < arrayList6.size(); i4++) {
MessageObject messageObject8 = (MessageObject) arrayList6.get(i4);
if (!messageObject8.isVoiceOnce() && !this.playlistMap.containsKey(Integer.valueOf(messageObject8.getId()))) {
i3++;
this.playlist.add(0, messageObject8);
this.playlistMap.put(Integer.valueOf(messageObject8.getId()), messageObject8);
int[] iArr2 = this.playlistMaxId;
iArr2[c] = Math.min(iArr2[c], messageObject8.getId());
}
}
sortPlaylist();
int indexOf2 = this.playlist.indexOf(this.playingMessageObject);
if (indexOf2 >= 0) {
this.currentPlaylistNum = indexOf2;
}
this.loadingPlaylist = false;
if (SharedConfig.shuffleMusic) {
buildShuffledPlayList();
}
if (i3 != 0) {
NotificationCenter.getInstance(this.playingMessageObject.currentAccount).postNotificationName(NotificationCenter.moreMusicDidLoad, new Object[]{Integer.valueOf(i3)});
return;
}
return;
}
if (id == NotificationCenter.didReceiveNewMessages) {
if (((Boolean) args[2]).booleanValue() || (arrayList = this.voiceMessagesPlaylist) == null || arrayList.isEmpty() || ((Long) args[0]).longValue() != this.voiceMessagesPlaylist.get(0).getDialogId()) {
return;
}
ArrayList arrayList7 = (ArrayList) args[1];
while (i < arrayList7.size()) {
MessageObject messageObject9 = (MessageObject) arrayList7.get(i);
if ((messageObject9.isVoice() || messageObject9.isRoundVideo()) && !messageObject9.isVoiceOnce() && !messageObject9.isRoundOnce() && (!this.voiceMessagesPlaylistUnread || (messageObject9.isContentUnread() && !messageObject9.isOut()))) {
this.voiceMessagesPlaylist.add(messageObject9);
this.voiceMessagesPlaylistMap.put(messageObject9.getId(), messageObject9);
}
i++;
}
return;
}
if (id != NotificationCenter.playerDidStartPlaying || isCurrentPlayer((VideoPlayer) args[0])) {
return;
}
MessageObject playingMessageObject = getPlayingMessageObject();
if (playingMessageObject != null && isPlayingMessage(playingMessageObject) && !isMessagePaused() && (playingMessageObject.isMusic() || playingMessageObject.isVoice())) {
this.wasPlayingAudioBeforePause = true;
}
lambda$startAudioAgain$7(playingMessageObject);
}
public boolean isRecordingAudio() {
return (this.recordStartRunnable == null && this.recordingAudio == null) ? false : true;
}
private boolean isNearToSensor(float value) {
MessageObject messageObject;
if (!PlusSettings.disableAudioStop || (messageObject = this.playingMessageObject) == null || (!messageObject.isVoice() && !this.playingMessageObject.isRoundVideo())) {
return value < 5.0f && value != this.proximitySensor.getMaximumRange();
}
PowerManager.WakeLock wakeLock = this.proximityWakeLock;
if (wakeLock != null && wakeLock.isHeld()) {
this.proximityWakeLock.release();
}
return false;
}
public boolean isRecordingOrListeningByProximity() {
MessageObject messageObject;
return this.proximityTouched && (isRecordingAudio() || ((messageObject = this.playingMessageObject) != null && (messageObject.isVoice() || this.playingMessageObject.isRoundVideo())));
}
private boolean forbidRaiseToListen() {
try {
if (Build.VERSION.SDK_INT < 23) {
return NotificationsController.audioManager.isWiredHeadsetOn() || NotificationsController.audioManager.isBluetoothA2dpOn() || NotificationsController.audioManager.isBluetoothScoOn();
}
for (AudioDeviceInfo audioDeviceInfo : NotificationsController.audioManager.getDevices(2)) {
int type = audioDeviceInfo.getType();
if ((type == 8 || type == 7 || type == 26 || type == 27 || type == 4 || type == 3) && audioDeviceInfo.isSink()) {
return true;
}
}
return false;
} catch (Exception e) {
FileLog.e(e);
return false;
}
}
@Override
public void onSensorChanged(SensorEvent event) {
double d;
boolean z;
int i;
MessageObject messageObject;
if (this.sensorsStarted && VoIPService.getSharedInstance() == null) {
if (event.sensor.getType() == 8) {
if (BuildVars.LOGS_ENABLED) {
FileLog.d("proximity changed to " + event.values[0] + " max value = " + event.sensor.getMaximumRange());
}
float f = this.lastProximityValue;
float[] fArr = event.values;
if (f != fArr[0]) {
this.proximityHasDifferentValues = true;
}
this.lastProximityValue = fArr[0];
if (this.proximityHasDifferentValues) {
this.proximityTouched = isNearToSensor(fArr[0]);
}
} else {
Sensor sensor = event.sensor;
if (sensor == this.accelerometerSensor) {
long j = this.lastTimestamp;
if (j == 0) {
d = 0.9800000190734863d;
} else {
double d2 = event.timestamp - j;
Double.isNaN(d2);
d = 1.0d / ((d2 / 1.0E9d) + 1.0d);
}
this.lastTimestamp = event.timestamp;
float[] fArr2 = this.gravity;
double d3 = fArr2[0];
Double.isNaN(d3);
double d4 = 1.0d - d;
float[] fArr3 = event.values;
double d5 = fArr3[0];
Double.isNaN(d5);
fArr2[0] = (float) ((d3 * d) + (d5 * d4));
double d6 = fArr2[1];
Double.isNaN(d6);
double d7 = fArr3[1];
Double.isNaN(d7);
fArr2[1] = (float) ((d6 * d) + (d7 * d4));
double d8 = fArr2[2];
Double.isNaN(d8);
double d9 = d * d8;
double d10 = fArr3[2];
Double.isNaN(d10);
fArr2[2] = (float) (d9 + (d4 * d10));
float[] fArr4 = this.gravityFast;
fArr4[0] = (fArr2[0] * 0.8f) + (fArr3[0] * 0.19999999f);
fArr4[1] = (fArr2[1] * 0.8f) + (fArr3[1] * 0.19999999f);
fArr4[2] = (fArr2[2] * 0.8f) + (fArr3[2] * 0.19999999f);
float[] fArr5 = this.linearAcceleration;
fArr5[0] = fArr3[0] - fArr2[0];
fArr5[1] = fArr3[1] - fArr2[1];
fArr5[2] = fArr3[2] - fArr2[2];
} else if (sensor == this.linearSensor) {
float[] fArr6 = this.linearAcceleration;
float[] fArr7 = event.values;
fArr6[0] = fArr7[0];
fArr6[1] = fArr7[1];
fArr6[2] = fArr7[2];
} else if (sensor == this.gravitySensor) {
float[] fArr8 = this.gravityFast;
float[] fArr9 = this.gravity;
float[] fArr10 = event.values;
float f2 = fArr10[0];
fArr9[0] = f2;
fArr8[0] = f2;
float f3 = fArr10[1];
fArr9[1] = f3;
fArr8[1] = f3;
float f4 = fArr10[2];
fArr9[2] = f4;
fArr8[2] = f4;
}
}
Sensor sensor2 = event.sensor;
if (sensor2 == this.linearSensor || sensor2 == this.gravitySensor || sensor2 == this.accelerometerSensor) {
float[] fArr11 = this.gravity;
float f5 = fArr11[0];
float[] fArr12 = this.linearAcceleration;
float f6 = (f5 * fArr12[0]) + (fArr11[1] * fArr12[1]) + (fArr11[2] * fArr12[2]);
int i2 = this.raisedToBack;
if (i2 != 6 && ((f6 > 0.0f && this.previousAccValue > 0.0f) || (f6 < 0.0f && this.previousAccValue < 0.0f))) {
if (f6 > 0.0f) {
z = f6 > 15.0f;
i = 1;
} else {
z = f6 < -15.0f;
i = 2;
}
int i3 = this.raisedToTopSign;
if (i3 != 0 && i3 != i) {
int i4 = this.raisedToTop;
if (i4 != 6 || !z) {
if (!z) {
this.countLess++;
}
if (this.countLess == 10 || i4 != 6 || i2 != 0) {
this.raisedToTop = 0;
this.raisedToTopSign = 0;
this.raisedToBack = 0;
this.countLess = 0;
}
} else if (i2 < 6) {
int i5 = i2 + 1;
this.raisedToBack = i5;
if (i5 == 6) {
this.raisedToTop = 0;
this.raisedToTopSign = 0;
this.countLess = 0;
this.timeSinceRaise = System.currentTimeMillis();
if (BuildVars.LOGS_ENABLED && BuildVars.DEBUG_PRIVATE_VERSION) {
FileLog.d("motion detected");
}
}
}
} else if (z && i2 == 0 && (i3 == 0 || i3 == i)) {
int i6 = this.raisedToTop;
if (i6 < 6 && !this.proximityTouched) {
this.raisedToTopSign = i;
int i7 = i6 + 1;
this.raisedToTop = i7;
if (i7 == 6) {
this.countLess = 0;
}
}
} else {
if (!z) {
this.countLess++;
}
if (i3 != i || this.countLess == 10 || this.raisedToTop != 6 || i2 != 0) {
this.raisedToBack = 0;
this.raisedToTop = 0;
this.raisedToTopSign = 0;
this.countLess = 0;
}
}
}
this.previousAccValue = f6;
float[] fArr13 = this.gravityFast;
this.accelerometerVertical = fArr13[1] > 2.5f && Math.abs(fArr13[2]) < 4.0f && Math.abs(this.gravityFast[0]) > 1.5f;
}
if (this.raisedToBack == 6 || this.accelerometerVertical) {
this.lastAccelerometerDetected = System.currentTimeMillis();
}
boolean z2 = !this.manualRecording && this.playingMessageObject == null && SharedConfig.enabledRaiseTo(true) && ApplicationLoader.isScreenOn && !this.inputFieldHasText && this.allowStartRecord && this.raiseChat != null && !this.callInProgress;
boolean z3 = SharedConfig.enabledRaiseTo(false) && (messageObject = this.playingMessageObject) != null && (messageObject.isVoice() || this.playingMessageObject.isRoundVideo());
boolean z4 = this.proximityTouched;
boolean z5 = this.raisedToBack == 6 || this.accelerometerVertical || System.currentTimeMillis() - this.lastAccelerometerDetected < 60;
boolean z6 = this.useFrontSpeaker || this.raiseToEarRecord;
boolean z7 = (z5 || z6) && !forbidRaiseToListen() && !VoIPService.isAnyKindOfCallActive() && (z2 || z3) && !PhotoViewer.getInstance().isVisible();
PowerManager.WakeLock wakeLock = this.proximityWakeLock;
if (wakeLock != null) {
boolean isHeld = wakeLock.isHeld();
if (isHeld && !z7) {
if (BuildVars.LOGS_ENABLED) {
FileLog.d("wake lock releasing (proximityDetected=" + z4 + ", accelerometerDetected=" + z5 + ", alreadyPlaying=" + z6 + ")");
}
this.proximityWakeLock.release();
} else if (!isHeld && z7) {
if (BuildVars.LOGS_ENABLED) {
FileLog.d("wake lock acquiring (proximityDetected=" + z4 + ", accelerometerDetected=" + z5 + ", alreadyPlaying=" + z6 + ")");
}
this.proximityWakeLock.acquire();
}
}
boolean z8 = this.proximityTouched;
if (z8 && z7) {
if (z2 && this.recordStartRunnable == null) {
if (!this.raiseToEarRecord) {
if (BuildVars.LOGS_ENABLED) {
FileLog.d("start record");
}
this.useFrontSpeaker = true;
if (this.recordingAudio != null || !this.raiseChat.playFirstUnreadVoiceMessage()) {
this.raiseToEarRecord = true;
this.useFrontSpeaker = false;
raiseToSpeakUpdated(true);
}
if (this.useFrontSpeaker) {
setUseFrontSpeaker(true);
}
}
} else if (z3 && !this.useFrontSpeaker) {
if (BuildVars.LOGS_ENABLED) {
FileLog.d("start listen");
}
setUseFrontSpeaker(true);
startAudioAgain(false);
}
this.raisedToBack = 0;
this.raisedToTop = 0;
this.raisedToTopSign = 0;
this.countLess = 0;
} else if (z8 && ((this.accelerometerSensor == null || this.linearSensor == null) && this.gravitySensor == null && !VoIPService.isAnyKindOfCallActive())) {
if (this.playingMessageObject != null && !ApplicationLoader.mainInterfacePaused && z3 && !PlusSettings.disableAudioStop && !this.useFrontSpeaker && !this.manualRecording && !forbidRaiseToListen()) {
if (BuildVars.LOGS_ENABLED) {
FileLog.d("start listen by proximity only");
}
setUseFrontSpeaker(true);
startAudioAgain(false);
}
} else if (!this.proximityTouched && !this.manualRecording) {
if (this.raiseToEarRecord) {
if (BuildVars.LOGS_ENABLED) {
FileLog.d("stop record");
}
raiseToSpeakUpdated(false);
this.raiseToEarRecord = false;
this.ignoreOnPause = false;
} else if (this.useFrontSpeaker) {
if (BuildVars.LOGS_ENABLED) {
FileLog.d("stop listen");
}
this.useFrontSpeaker = false;
startAudioAgain(true);
this.ignoreOnPause = false;
}
}
if (this.timeSinceRaise == 0 || this.raisedToBack != 6 || Math.abs(System.currentTimeMillis() - this.timeSinceRaise) <= 1000) {
return;
}
this.raisedToBack = 0;
this.raisedToTop = 0;
this.raisedToTopSign = 0;
this.countLess = 0;
this.timeSinceRaise = 0L;
}
}
private void raiseToSpeakUpdated(boolean raised) {
if (this.recordingAudio != null) {
toggleRecordingPause(false);
return;
}
if (raised) {
int currentAccount = this.raiseChat.getCurrentAccount();
long dialogId = this.raiseChat.getDialogId();
MessageObject threadMessage = this.raiseChat.getThreadMessage();
int classGuid = this.raiseChat.getClassGuid();
ChatActivity chatActivity = this.raiseChat;
startRecording(currentAccount, dialogId, null, threadMessage, null, classGuid, false, chatActivity != null ? chatActivity.quickReplyShortcut : null, chatActivity != null ? chatActivity.getQuickReplyId() : 0);
return;
}
stopRecording(2, false, 0, false);
}
private void setUseFrontSpeaker(boolean value) {
this.useFrontSpeaker = value;
AudioManager audioManager = NotificationsController.audioManager;
if (value) {
audioManager.setBluetoothScoOn(false);
audioManager.setSpeakerphoneOn(false);
} else {
audioManager.setSpeakerphoneOn(true);
}
}
public void startRecordingIfFromSpeaker() {
if (this.useFrontSpeaker && this.raiseChat != null && this.allowStartRecord && SharedConfig.enabledRaiseTo(true)) {
this.raiseToEarRecord = true;
int currentAccount = this.raiseChat.getCurrentAccount();
long dialogId = this.raiseChat.getDialogId();
MessageObject threadMessage = this.raiseChat.getThreadMessage();
int classGuid = this.raiseChat.getClassGuid();
ChatActivity chatActivity = this.raiseChat;
startRecording(currentAccount, dialogId, null, threadMessage, null, classGuid, false, chatActivity != null ? chatActivity.quickReplyShortcut : null, chatActivity != null ? chatActivity.getQuickReplyId() : 0);
this.ignoreOnPause = true;
}
}
private void startAudioAgain(boolean paused) {
MessageObject messageObject = this.playingMessageObject;
if (messageObject == null) {
return;
}
NotificationCenter.getInstance(messageObject.currentAccount).postNotificationName(NotificationCenter.audioRouteChanged, new Object[]{Boolean.valueOf(this.useFrontSpeaker)});
VideoPlayer videoPlayer = this.videoPlayer;
if (videoPlayer != null) {
videoPlayer.setStreamType(this.useFrontSpeaker ? 0 : 3);
if (!paused) {
if (this.videoPlayer.getCurrentPosition() < 1000) {
this.videoPlayer.seekTo(0L);
}
this.videoPlayer.play();
return;
}
lambda$startAudioAgain$7(this.playingMessageObject);
return;
}
VideoPlayer videoPlayer2 = this.audioPlayer;
boolean z = videoPlayer2 != null;
MessageObject messageObject2 = this.playingMessageObject;
float f = messageObject2.audioProgress;
int i = messageObject2.audioPlayerDuration;
if (paused || videoPlayer2 == null || !videoPlayer2.isPlaying() || i * f > VOLUME_NORMAL) {
messageObject2.audioProgress = f;
} else {
messageObject2.audioProgress = 0.0f;
}
cleanupPlayer(false, true);
playMessage(messageObject2);
if (paused) {
if (z) {
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda38(this, messageObject2), 100L);
} else {
lambda$startAudioAgain$7(messageObject2);
}
}
}
public void setInputFieldHasText(boolean value) {
this.inputFieldHasText = value;
}
public void setAllowStartRecord(boolean value) {
this.allowStartRecord = value;
}
public void startRaiseToEarSensors(ChatActivity chatActivity) {
if (chatActivity != null) {
if ((this.accelerometerSensor == null && (this.gravitySensor == null || this.linearAcceleration == null)) || this.proximitySensor == null) {
return;
}
if (!SharedConfig.enabledRaiseTo(false)) {
MessageObject messageObject = this.playingMessageObject;
if (messageObject == null) {
return;
}
if (!messageObject.isVoice() && !this.playingMessageObject.isRoundVideo()) {
return;
}
}
this.raiseChat = chatActivity;
if (this.sensorsStarted) {
return;
}
float[] fArr = this.gravity;
fArr[2] = 0.0f;
fArr[1] = 0.0f;
fArr[0] = 0.0f;
float[] fArr2 = this.linearAcceleration;
fArr2[2] = 0.0f;
fArr2[1] = 0.0f;
fArr2[0] = 0.0f;
float[] fArr3 = this.gravityFast;
fArr3[2] = 0.0f;
fArr3[1] = 0.0f;
fArr3[0] = 0.0f;
this.lastTimestamp = 0L;
this.previousAccValue = 0.0f;
this.raisedToTop = 0;
this.raisedToTopSign = 0;
this.countLess = 0;
this.raisedToBack = 0;
Utilities.globalQueue.postRunnable(new MediaController$.ExternalSyntheticLambda8(this));
this.sensorsStarted = true;
}
}
public void lambda$startRaiseToEarSensors$8() {
Sensor sensor = this.gravitySensor;
if (sensor != null) {
this.sensorManager.registerListener(this, sensor, 30000);
}
Sensor sensor2 = this.linearSensor;
if (sensor2 != null) {
this.sensorManager.registerListener(this, sensor2, 30000);
}
Sensor sensor3 = this.accelerometerSensor;
if (sensor3 != null) {
this.sensorManager.registerListener(this, sensor3, 30000);
}
this.sensorManager.registerListener(this, this.proximitySensor, 3);
}
public void stopRaiseToEarSensors(ChatActivity chatActivity, boolean fromChat, boolean stopRecording) {
if (this.ignoreOnPause) {
this.ignoreOnPause = false;
return;
}
if (stopRecording) {
stopRecording(fromChat ? 2 : 0, false, 0, false);
}
if (!this.sensorsStarted || this.ignoreOnPause) {
return;
}
if ((this.accelerometerSensor == null && (this.gravitySensor == null || this.linearAcceleration == null)) || this.proximitySensor == null || this.raiseChat != chatActivity) {
return;
}
this.raiseChat = null;
this.sensorsStarted = false;
this.accelerometerVertical = false;
this.proximityTouched = false;
this.raiseToEarRecord = false;
this.useFrontSpeaker = false;
Utilities.globalQueue.postRunnable(new MediaController$.ExternalSyntheticLambda18(this));
PowerManager.WakeLock wakeLock = this.proximityWakeLock;
if (wakeLock == null || !wakeLock.isHeld()) {
return;
}
this.proximityWakeLock.release();
}
public void lambda$stopRaiseToEarSensors$9() {
Sensor sensor = this.linearSensor;
if (sensor != null) {
this.sensorManager.unregisterListener(this, sensor);
}
Sensor sensor2 = this.gravitySensor;
if (sensor2 != null) {
this.sensorManager.unregisterListener(this, sensor2);
}
Sensor sensor3 = this.accelerometerSensor;
if (sensor3 != null) {
this.sensorManager.unregisterListener(this, sensor3);
}
this.sensorManager.unregisterListener(this, this.proximitySensor);
}
public void cleanupPlayer(boolean notify, boolean stopService) {
cleanupPlayer(notify, stopService, false, false);
}
public void cleanupPlayer(boolean r11, boolean r12, boolean r13, boolean r14) {
throw new UnsupportedOperationException("Method not decompiled: org.telegram.messenger.MediaController.cleanupPlayer(boolean, boolean, boolean, boolean):void");
}
public void lambda$cleanupPlayer$10(VideoPlayer videoPlayer, ValueAnimator valueAnimator) {
videoPlayer.setVolume((this.audioFocus != 1 ? VOLUME_NORMAL : VOLUME_DUCK) * ((Float) valueAnimator.getAnimatedValue()).floatValue());
}
public boolean isGoingToShowMessageObject(MessageObject messageObject) {
return this.goingToShowMessageObject == messageObject;
}
public void resetGoingToShowMessageObject() {
this.goingToShowMessageObject = null;
}
private boolean isSamePlayingMessage(MessageObject messageObject) {
MessageObject messageObject2 = this.playingMessageObject;
if (messageObject2 != null && messageObject2.getDialogId() == messageObject.getDialogId() && this.playingMessageObject.getId() == messageObject.getId()) {
if ((this.playingMessageObject.eventId == 0) == (messageObject.eventId == 0)) {
return true;
}
}
return false;
}
public boolean seekToProgress(MessageObject messageObject, float progress) {
MessageObject messageObject2 = this.playingMessageObject;
if ((this.audioPlayer != null || this.videoPlayer != null) && messageObject != null && messageObject2 != null && isSamePlayingMessage(messageObject)) {
try {
VideoPlayer videoPlayer = this.audioPlayer;
if (videoPlayer != null) {
long duration = videoPlayer.getDuration();
if (duration == -9223372036854775807L) {
this.seekToProgressPending = progress;
} else {
messageObject2.audioProgress = progress;
long j = (int) (duration * progress);
this.audioPlayer.seekTo(j);
this.lastProgress = j;
}
} else {
VideoPlayer videoPlayer2 = this.videoPlayer;
if (videoPlayer2 != null) {
videoPlayer2.seekTo((long) (videoPlayer2.getDuration() * progress));
}
}
NotificationCenter.getInstance(messageObject.currentAccount).postNotificationName(NotificationCenter.messagePlayingDidSeek, new Object[]{Integer.valueOf(messageObject2.getId()), Float.valueOf(progress)});
return true;
} catch (Exception e) {
FileLog.e(e);
}
}
return false;
}
public void seekShift(int ms) {
VideoPlayer videoPlayer = this.audioPlayer;
if (videoPlayer != null) {
videoPlayer.seekTo(Math.max(0L, videoPlayer.getCurrentPosition() + ms));
}
}
private void initVoiceEnhancements() {
if (PlusSettings.improveVoiceRecordingQuality) {
int audioSessionId = this.audioRecorder.getAudioSessionId();
if (AutomaticGainControl.isAvailable()) {
AutomaticGainControl create = AutomaticGainControl.create(audioSessionId);
this.automaticGainControl = create;
create.setEnabled(true);
}
if (NoiseSuppressor.isAvailable()) {
NoiseSuppressor create2 = NoiseSuppressor.create(audioSessionId);
this.noiseSuppressor = create2;
create2.setEnabled(true);
}
if (AcousticEchoCanceler.isAvailable()) {
AcousticEchoCanceler create3 = AcousticEchoCanceler.create(audioSessionId);
this.acousticEchoCanceler = create3;
create3.setEnabled(true);
}
}
}
private void releaseVoiceEnhancements() {
if (PlusSettings.improveVoiceRecordingQuality) {
AutomaticGainControl automaticGainControl = this.automaticGainControl;
if (automaticGainControl != null) {
automaticGainControl.release();
this.automaticGainControl = null;
}
NoiseSuppressor noiseSuppressor = this.noiseSuppressor;
if (noiseSuppressor != null) {
noiseSuppressor.release();
this.noiseSuppressor = null;
}
AcousticEchoCanceler acousticEchoCanceler = this.acousticEchoCanceler;
if (acousticEchoCanceler != null) {
acousticEchoCanceler.release();
this.acousticEchoCanceler = null;
}
}
}
private static boolean isAvailable() {
return AutomaticGainControl.isAvailable() || NoiseSuppressor.isAvailable() || AcousticEchoCanceler.isAvailable();
}
public long getDuration() {
VideoPlayer videoPlayer = this.audioPlayer;
if (videoPlayer == null) {
return 0L;
}
return videoPlayer.getDuration();
}
public MessageObject getPlayingMessageObject() {
return this.playingMessageObject;
}
public int getPlayingMessageObjectNum() {
return this.currentPlaylistNum;
}
private void buildShuffledPlayList() {
if (this.playlist.isEmpty()) {
return;
}
ArrayList arrayList = new ArrayList(this.playlist);
this.shuffledPlaylist.clear();
MessageObject messageObject = this.playlist.get(this.currentPlaylistNum);
arrayList.remove(this.currentPlaylistNum);
int size = arrayList.size();
for (int i = 0; i < size; i++) {
int nextInt = Utilities.random.nextInt(arrayList.size());
this.shuffledPlaylist.add((MessageObject) arrayList.get(nextInt));
arrayList.remove(nextInt);
}
this.shuffledPlaylist.add(messageObject);
this.currentPlaylistNum = this.shuffledPlaylist.size() - 1;
}
public void loadMoreMusic() {
throw new UnsupportedOperationException("Method not decompiled: org.telegram.messenger.MediaController.loadMoreMusic():void");
}
public void lambda$loadMoreMusic$12(int i, int i2, TLObject tLObject, TLRPC.TL_error tL_error) {
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda28(this, i, tL_error, tLObject, i2));
}
public void lambda$loadMoreMusic$11(int i, TLRPC.TL_error tL_error, TLObject tLObject, int i2) {
PlaylistGlobalSearchParams playlistGlobalSearchParams;
if (this.playlistClassGuid != i || (playlistGlobalSearchParams = this.playlistGlobalSearchParams) == null || this.playingMessageObject == null || tL_error != null) {
return;
}
this.loadingPlaylist = false;
TLRPC.messages_Messages messages_messages = (TLRPC.messages_Messages) tLObject;
playlistGlobalSearchParams.nextSearchRate = messages_messages.next_rate;
MessagesStorage.getInstance(i2).putUsersAndChats(messages_messages.users, messages_messages.chats, true, true);
MessagesController.getInstance(i2).putUsers(messages_messages.users, false);
MessagesController.getInstance(i2).putChats(messages_messages.chats, false);
int size = messages_messages.messages.size();
int i3 = 0;
for (int i4 = 0; i4 < size; i4++) {
MessageObject messageObject = new MessageObject(i2, (TLRPC.Message) messages_messages.messages.get(i4), false, true);
if (!messageObject.isVoiceOnce() && !this.playlistMap.containsKey(Integer.valueOf(messageObject.getId()))) {
this.playlist.add(0, messageObject);
this.playlistMap.put(Integer.valueOf(messageObject.getId()), messageObject);
i3++;
}
}
sortPlaylist();
this.loadingPlaylist = false;
this.playlistGlobalSearchParams.endReached = this.playlist.size() == this.playlistGlobalSearchParams.totalCount;
if (SharedConfig.shuffleMusic) {
buildShuffledPlayList();
}
if (i3 != 0) {
NotificationCenter.getInstance(this.playingMessageObject.currentAccount).postNotificationName(NotificationCenter.moreMusicDidLoad, new Object[]{Integer.valueOf(i3)});
}
}
public boolean setPlaylist(ArrayList<MessageObject> messageObjects, MessageObject current, long mergeDialogId, PlaylistGlobalSearchParams globalSearchParams) {
return setPlaylist(messageObjects, current, mergeDialogId, true, globalSearchParams);
}
public boolean setPlaylist(ArrayList<MessageObject> messageObjects, MessageObject current, long mergeDialogId) {
return setPlaylist(messageObjects, current, mergeDialogId, true, null);
}
public boolean setPlaylist(ArrayList<MessageObject> messageObjects, MessageObject current, long mergeDialogId, boolean loadMusic, PlaylistGlobalSearchParams params) {
if (this.playingMessageObject == current) {
int indexOf = this.playlist.indexOf(current);
if (indexOf >= 0) {
this.currentPlaylistNum = indexOf;
}
return playMessage(current);
}
this.forceLoopCurrentPlaylist = !loadMusic;
this.playlistMergeDialogId = mergeDialogId;
this.playMusicAgain = !this.playlist.isEmpty();
clearPlaylist();
this.playlistGlobalSearchParams = params;
boolean z = false;
if (!messageObjects.isEmpty() && DialogObject.isEncryptedDialog(messageObjects.get(0).getDialogId())) {
z = true;
}
int i = ConnectionsManager.DEFAULT_DATACENTER_ID;
int i2 = Integer.MIN_VALUE;
for (int size = messageObjects.size() - 1; size >= 0; size--) {
MessageObject messageObject = messageObjects.get(size);
if (messageObject.isMusic()) {
int id = messageObject.getId();
if (id > 0 || z) {
i = Math.min(i, id);
i2 = Math.max(i2, id);
}
this.playlist.add(messageObject);
this.playlistMap.put(Integer.valueOf(id), messageObject);
}
}
sortPlaylist();
int indexOf2 = this.playlist.indexOf(current);
this.currentPlaylistNum = indexOf2;
if (indexOf2 == -1) {
clearPlaylist();
this.currentPlaylistNum = this.playlist.size();
this.playlist.add(current);
this.playlistMap.put(Integer.valueOf(current.getId()), current);
}
if (current.isMusic() && !current.scheduled) {
if (SharedConfig.shuffleMusic) {
buildShuffledPlayList();
}
if (loadMusic) {
if (this.playlistGlobalSearchParams == null) {
MediaDataController.getInstance(current.currentAccount).loadMusic(current.getDialogId(), i, i2);
} else {
this.playlistClassGuid = ConnectionsManager.generateClassGuid();
}
}
}
return playMessage(current);
}
private void sortPlaylist() {
Collections.sort(this.playlist, MediaController$.ExternalSyntheticLambda52.INSTANCE);
}
public static int lambda$sortPlaylist$13(MessageObject messageObject, MessageObject messageObject2) {
int compare;
int id = messageObject.getId();
int id2 = messageObject2.getId();
long j = messageObject.messageOwner.grouped_id;
long j2 = messageObject2.messageOwner.grouped_id;
if (id >= 0 || id2 >= 0) {
if (j != 0 && j == j2) {
compare = Integer.compare(id2, id);
return -compare;
}
return Long.compare(j2, j);
}
if (j != 0 && j == j2) {
compare = Integer.compare(id, id2);
return -compare;
}
return Long.compare(j2, j);
}
public boolean hasNoNextVoiceOrRoundVideoMessage() {
ArrayList<MessageObject> arrayList;
MessageObject messageObject = this.playingMessageObject;
if (messageObject != null) {
return !(messageObject.isVoice() || this.playingMessageObject.isRoundVideo()) || (arrayList = this.voiceMessagesPlaylist) == null || arrayList.size() <= 1 || !this.voiceMessagesPlaylist.contains(this.playingMessageObject) || this.voiceMessagesPlaylist.indexOf(this.playingMessageObject) >= this.voiceMessagesPlaylist.size() - 1;
}
return true;
}
public void playNextMessage() {
playNextMessageWithoutOrder(false);
}
public boolean findMessageInPlaylistAndPlay(MessageObject messageObject) {
int indexOf = this.playlist.indexOf(messageObject);
if (indexOf == -1) {
return playMessage(messageObject);
}
playMessageAtIndex(indexOf);
return true;
}
public void playMessageAtIndex(int index) {
int i = this.currentPlaylistNum;
if (i < 0 || i >= this.playlist.size()) {
return;
}
this.currentPlaylistNum = index;
this.playMusicAgain = true;
MessageObject messageObject = this.playlist.get(index);
if (this.playingMessageObject != null && !isSamePlayingMessage(messageObject)) {
this.playingMessageObject.resetPlayingProgress();
}
playMessage(messageObject);
}
public void playNextMessageWithoutOrder(boolean byStop) {
int i;
ArrayList<MessageObject> arrayList = SharedConfig.shuffleMusic ? this.shuffledPlaylist : this.playlist;
if (byStop && (((i = SharedConfig.repeatMode) == 2 || (i == 1 && arrayList.size() == 1)) && !this.forceLoopCurrentPlaylist)) {
cleanupPlayer(false, false);
MessageObject messageObject = arrayList.get(this.currentPlaylistNum);
messageObject.audioProgress = 0.0f;
messageObject.audioProgressSec = 0;
playMessage(messageObject);
return;
}
boolean traversePlaylist = traversePlaylist(arrayList, SharedConfig.playOrderReversed ? 1 : -1);
if (byStop && PlusSettings.dontPlayNextMedia && !traversePlaylist) {
traversePlaylist = true;
}
if (traversePlaylist && byStop && SharedConfig.repeatMode == 0 && !this.forceLoopCurrentPlaylist) {
VideoPlayer videoPlayer = this.audioPlayer;
if (videoPlayer == null && this.videoPlayer == null) {
return;
}
if (videoPlayer != null) {
try {
videoPlayer.releasePlayer(true);
} catch (Exception e) {
FileLog.e(e);
}
this.audioPlayer = null;
Theme.unrefAudioVisualizeDrawable(this.playingMessageObject);
} else {
this.currentAspectRatioFrameLayout = null;
this.currentTextureViewContainer = null;
this.currentAspectRatioFrameLayoutReady = false;
this.currentTextureView = null;
this.videoPlayer.releasePlayer(true);
this.videoPlayer = null;
try {
this.baseActivity.getWindow().clearFlags(ConnectionsManager.RequestFlagNeedQuickAck);
} catch (Exception e2) {
FileLog.e(e2);
}
AndroidUtilities.cancelRunOnUIThread(this.setLoadingRunnable);
FileLoader.getInstance(this.playingMessageObject.currentAccount).removeLoadingVideo(this.playingMessageObject.getDocument(), true, false);
}
stopProgressTimer();
this.lastProgress = 0L;
this.isPaused = true;
MessageObject messageObject2 = this.playingMessageObject;
messageObject2.audioProgress = 0.0f;
messageObject2.audioProgressSec = 0;
NotificationCenter.getInstance(messageObject2.currentAccount).postNotificationName(NotificationCenter.messagePlayingProgressDidChanged, new Object[]{Integer.valueOf(this.playingMessageObject.getId()), 0});
NotificationCenter.getInstance(this.playingMessageObject.currentAccount).postNotificationName(NotificationCenter.messagePlayingPlayStateChanged, new Object[]{Integer.valueOf(this.playingMessageObject.getId())});
return;
}
int i2 = this.currentPlaylistNum;
if (i2 < 0 || i2 >= arrayList.size()) {
return;
}
MessageObject messageObject3 = this.playingMessageObject;
if (messageObject3 != null) {
messageObject3.resetPlayingProgress();
}
this.playMusicAgain = true;
playMessage(arrayList.get(this.currentPlaylistNum));
}
public void playPreviousMessage() {
int i;
ArrayList<MessageObject> arrayList = SharedConfig.shuffleMusic ? this.shuffledPlaylist : this.playlist;
if (arrayList.isEmpty() || (i = this.currentPlaylistNum) < 0 || i >= arrayList.size()) {
return;
}
MessageObject messageObject = arrayList.get(this.currentPlaylistNum);
if (messageObject.audioProgressSec > 10) {
seekToProgress(messageObject, 0.0f);
return;
}
traversePlaylist(arrayList, SharedConfig.playOrderReversed ? -1 : 1);
if (this.currentPlaylistNum >= arrayList.size()) {
return;
}
this.playMusicAgain = true;
playMessage(arrayList.get(this.currentPlaylistNum));
}
private boolean traversePlaylist(ArrayList<MessageObject> playlist, int direction) {
MessageObject messageObject;
int i;
MessageObject messageObject2;
int i2 = this.currentPlaylistNum;
boolean z = ConnectionsManager.getInstance(UserConfig.selectedAccount).getConnectionState() == 2;
this.currentPlaylistNum += direction;
if (z) {
while (this.currentPlaylistNum < playlist.size() && (i = this.currentPlaylistNum) >= 0 && ((messageObject2 = playlist.get(i)) == null || !messageObject2.mediaExists)) {
this.currentPlaylistNum += direction;
}
}
if (this.currentPlaylistNum < playlist.size() && this.currentPlaylistNum >= 0) {
return false;
}
this.currentPlaylistNum = this.currentPlaylistNum >= playlist.size() ? 0 : playlist.size() - 1;
if (!z) {
return true;
}
while (true) {
int i3 = this.currentPlaylistNum;
if (i3 < 0 || i3 >= playlist.size()) {
break;
}
int i4 = this.currentPlaylistNum;
if (direction > 0) {
if (i4 > i2) {
break;
}
messageObject = playlist.get(this.currentPlaylistNum);
if (messageObject == null && messageObject.mediaExists) {
break;
}
this.currentPlaylistNum += direction;
} else {
if (i4 < i2) {
break;
}
messageObject = playlist.get(this.currentPlaylistNum);
if (messageObject == null) {
}
this.currentPlaylistNum += direction;
}
}
if (this.currentPlaylistNum < playlist.size() && this.currentPlaylistNum >= 0) {
return true;
}
this.currentPlaylistNum = this.currentPlaylistNum < playlist.size() ? playlist.size() - 1 : 0;
return true;
}
public void checkIsNextMediaFileDownloaded() {
MessageObject messageObject = this.playingMessageObject;
if (messageObject == null || !messageObject.isMusic()) {
return;
}
checkIsNextMusicFileDownloaded(this.playingMessageObject.currentAccount);
}
private void checkIsNextVoiceFileDownloaded(int currentAccount) {
ArrayList<MessageObject> arrayList = this.voiceMessagesPlaylist;
if (arrayList != null) {
if (arrayList.size() >= 2 && !PlusSettings.disableLoadingNextMedia) {
MessageObject messageObject = this.voiceMessagesPlaylist.get(1);
String str = messageObject.messageOwner.attachPath;
File file = null;
if (str != null && str.length() > 0) {
File file2 = new File(messageObject.messageOwner.attachPath);
if (file2.exists()) {
file = file2;
}
}
File pathToMessage = file != null ? file : FileLoader.getInstance(currentAccount).getPathToMessage(messageObject.messageOwner);
pathToMessage.exists();
if (pathToMessage == file || pathToMessage.exists()) {
return;
}
FileLoader.getInstance(currentAccount).loadFile(messageObject.getDocument(), messageObject, 0, messageObject.shouldEncryptPhotoOrVideo() ? 2 : 0);
}
}
}
private void checkIsNextMusicFileDownloaded(int currentAccount) {
int i;
if (DownloadController.getInstance(currentAccount).canDownloadNextTrack()) {
ArrayList<MessageObject> arrayList = SharedConfig.shuffleMusic ? this.shuffledPlaylist : this.playlist;
if (arrayList != null) {
if (arrayList.size() < 2) {
return;
}
if (SharedConfig.playOrderReversed) {
i = this.currentPlaylistNum + 1;
if (i >= arrayList.size()) {
i = 0;
}
} else {
i = this.currentPlaylistNum - 1;
if (i < 0) {
i = arrayList.size() - 1;
}
}
if (i < 0 || i >= arrayList.size() || PlusSettings.disableLoadingNextMedia) {
return;
}
MessageObject messageObject = arrayList.get(i);
File file = null;
if (!TextUtils.isEmpty(messageObject.messageOwner.attachPath)) {
File file2 = new File(messageObject.messageOwner.attachPath);
if (file2.exists()) {
file = file2;
}
}
File pathToMessage = file != null ? file : FileLoader.getInstance(currentAccount).getPathToMessage(messageObject.messageOwner);
pathToMessage.exists();
if (pathToMessage == file || pathToMessage.exists() || !messageObject.isMusic()) {
return;
}
FileLoader.getInstance(currentAccount).loadFile(messageObject.getDocument(), messageObject, 0, messageObject.shouldEncryptPhotoOrVideo() ? 2 : 0);
}
}
}
public void setVoiceMessagesPlaylist(ArrayList<MessageObject> playlist, boolean unread) {
if (!PlusSettings.dontPlayNextMedia || playlist == null) {
ArrayList<MessageObject> arrayList = playlist != null ? new ArrayList<>(playlist) : null;
this.voiceMessagesPlaylist = arrayList;
if (arrayList != null) {
this.voiceMessagesPlaylistUnread = unread;
this.voiceMessagesPlaylistMap = new SparseArray<>();
for (int i = 0; i < this.voiceMessagesPlaylist.size(); i++) {
MessageObject messageObject = this.voiceMessagesPlaylist.get(i);
this.voiceMessagesPlaylistMap.put(messageObject.getId(), messageObject);
}
}
}
}
private void checkAudioFocus(MessageObject messageObject) {
int i;
int requestAudioFocus;
if (messageObject.isVoice() || messageObject.isRoundVideo()) {
i = this.useFrontSpeaker ? 3 : 2;
} else {
i = 1;
}
if (this.hasAudioFocus != i) {
this.hasAudioFocus = i;
if (i == 3) {
requestAudioFocus = NotificationsController.audioManager.requestAudioFocus(this, 0, 1);
} else {
requestAudioFocus = NotificationsController.audioManager.requestAudioFocus(this, 3, (i != 2 || SharedConfig.pauseMusicOnMedia) ? 1 : 3);
}
if (requestAudioFocus == 1) {
this.audioFocus = 2;
}
}
}
public boolean isPiPShown() {
return this.pipRoundVideoView != null;
}
public void setCurrentVideoVisible(boolean visible) {
AspectRatioFrameLayout aspectRatioFrameLayout = this.currentAspectRatioFrameLayout;
if (aspectRatioFrameLayout == null) {
return;
}
if (visible) {
PipRoundVideoView pipRoundVideoView = this.pipRoundVideoView;
if (pipRoundVideoView != null) {
this.pipSwitchingState = 2;
pipRoundVideoView.close(true);
this.pipRoundVideoView = null;
return;
} else {
if (aspectRatioFrameLayout.getParent() == null) {
this.currentTextureViewContainer.addView(this.currentAspectRatioFrameLayout);
}
this.videoPlayer.setTextureView(this.currentTextureView);
return;
}
}
if (aspectRatioFrameLayout.getParent() != null) {
this.pipSwitchingState = 1;
this.currentTextureViewContainer.removeView(this.currentAspectRatioFrameLayout);
return;
}
if (this.pipRoundVideoView == null) {
try {
PipRoundVideoView pipRoundVideoView2 = new PipRoundVideoView();
this.pipRoundVideoView = pipRoundVideoView2;
pipRoundVideoView2.show(this.baseActivity, new MediaController$.ExternalSyntheticLambda14(this));
} catch (Exception unused) {
this.pipRoundVideoView = null;
}
}
PipRoundVideoView pipRoundVideoView3 = this.pipRoundVideoView;
if (pipRoundVideoView3 != null) {
this.videoPlayer.setTextureView(pipRoundVideoView3.getTextureView());
}
}
public void lambda$setCurrentVideoVisible$14() {
cleanupPlayer(true, true);
}
public void setTextureView(TextureView textureView, AspectRatioFrameLayout aspectRatioFrameLayout, FrameLayout container, boolean set) {
setTextureView(textureView, aspectRatioFrameLayout, container, set, null);
}
public void setTextureView(TextureView textureView, AspectRatioFrameLayout aspectRatioFrameLayout, FrameLayout container, boolean set, Runnable afterPip) {
if (textureView == null) {
return;
}
if (!set && this.currentTextureView == textureView) {
this.pipSwitchingState = 1;
this.currentTextureView = null;
this.currentAspectRatioFrameLayout = null;
this.currentTextureViewContainer = null;
return;
}
if (this.videoPlayer == null || textureView == this.currentTextureView) {
return;
}
this.isDrawingWasReady = aspectRatioFrameLayout != null && aspectRatioFrameLayout.isDrawingReady();
this.currentTextureView = textureView;
if (afterPip != null && this.pipRoundVideoView == null) {
try {
PipRoundVideoView pipRoundVideoView = new PipRoundVideoView();
this.pipRoundVideoView = pipRoundVideoView;
pipRoundVideoView.show(this.baseActivity, new MediaController$.ExternalSyntheticLambda9(this));
} catch (Exception unused) {
this.pipRoundVideoView = null;
}
}
PipRoundVideoView pipRoundVideoView2 = this.pipRoundVideoView;
if (pipRoundVideoView2 != null) {
this.videoPlayer.setTextureView(pipRoundVideoView2.getTextureView());
} else {
this.videoPlayer.setTextureView(this.currentTextureView);
}
this.currentAspectRatioFrameLayout = aspectRatioFrameLayout;
this.currentTextureViewContainer = container;
if (!this.currentAspectRatioFrameLayoutReady || aspectRatioFrameLayout == null) {
return;
}
aspectRatioFrameLayout.setAspectRatio(this.currentAspectRatioFrameLayoutRatio, this.currentAspectRatioFrameLayoutRotation);
}
public void lambda$setTextureView$15() {
cleanupPlayer(true, true);
}
public void setBaseActivity(Activity activity, boolean set) {
if (set) {
this.baseActivity = activity;
} else if (this.baseActivity == activity) {
this.baseActivity = null;
}
}
public void setFeedbackView(View view, boolean set) {
if (set) {
this.feedbackView = view;
} else if (this.feedbackView == view) {
this.feedbackView = null;
}
}
public void setPlaybackSpeed(boolean music, float speed) {
if (music) {
if (this.currentMusicPlaybackSpeed >= 6.0f && speed == VOLUME_NORMAL && this.playingMessageObject != null) {
this.audioPlayer.pause();
MessageObject messageObject = this.playingMessageObject;
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda39(this, messageObject, messageObject.audioProgress), 50L);
}
this.currentMusicPlaybackSpeed = speed;
if (Math.abs(speed - VOLUME_NORMAL) > 0.001f) {
this.fastMusicPlaybackSpeed = speed;
}
} else {
this.currentPlaybackSpeed = speed;
if (Math.abs(speed - VOLUME_NORMAL) > 0.001f) {
this.fastPlaybackSpeed = speed;
}
}
VideoPlayer videoPlayer = this.audioPlayer;
if (videoPlayer != null) {
videoPlayer.setPlaybackSpeed(Math.round(speed * 10.0f) / 10.0f);
} else {
VideoPlayer videoPlayer2 = this.videoPlayer;
if (videoPlayer2 != null) {
videoPlayer2.setPlaybackSpeed(Math.round(speed * 10.0f) / 10.0f);
}
}
MessagesController.getGlobalMainSettings().edit().putFloat(music ? "musicPlaybackSpeed" : "playbackSpeed", speed).putFloat(music ? "fastMusicPlaybackSpeed" : "fastPlaybackSpeed", music ? this.fastMusicPlaybackSpeed : this.fastPlaybackSpeed).commit();
NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.messagePlayingSpeedChanged, new Object[0]);
}
public void lambda$setPlaybackSpeed$16(MessageObject messageObject, float f) {
if (this.audioPlayer == null || this.playingMessageObject == null || this.isPaused) {
return;
}
if (isSamePlayingMessage(messageObject)) {
seekToProgress(this.playingMessageObject, f);
}
this.audioPlayer.play();
}
public int getAudioSpeedIndex() {
return this.audioSpeedIndex;
}
public void setAudioSpeedIndex(int index) {
this.audioSpeedIndex = index;
}
public float getPlaybackSpeed(boolean music) {
return music ? this.currentMusicPlaybackSpeed : this.currentPlaybackSpeed;
}
public float getFastPlaybackSpeed(boolean music) {
return music ? this.fastMusicPlaybackSpeed : this.fastPlaybackSpeed;
}
public void updateVideoState(MessageObject messageObject, int[] playCount, boolean destroyAtEnd, boolean playWhenReady, int playbackState) {
MessageObject messageObject2;
if (this.videoPlayer == null) {
return;
}
if (playbackState != 4 && playbackState != 1) {
try {
this.baseActivity.getWindow().addFlags(ConnectionsManager.RequestFlagNeedQuickAck);
} catch (Exception e) {
FileLog.e(e);
}
} else {
try {
this.baseActivity.getWindow().clearFlags(ConnectionsManager.RequestFlagNeedQuickAck);
} catch (Exception e2) {
FileLog.e(e2);
}
}
if (playbackState == 3) {
this.playerWasReady = true;
MessageObject messageObject3 = this.playingMessageObject;
if (messageObject3 != null && (messageObject3.isVideo() || this.playingMessageObject.isRoundVideo())) {
AndroidUtilities.cancelRunOnUIThread(this.setLoadingRunnable);
FileLoader.getInstance(messageObject.currentAccount).removeLoadingVideo(this.playingMessageObject.getDocument(), true, false);
}
this.currentAspectRatioFrameLayoutReady = true;
return;
}
if (playbackState == 2) {
if (!playWhenReady || (messageObject2 = this.playingMessageObject) == null) {
return;
}
if (messageObject2.isVideo() || this.playingMessageObject.isRoundVideo()) {
if (this.playerWasReady) {
this.setLoadingRunnable.run();
return;
} else {
AndroidUtilities.runOnUIThread(this.setLoadingRunnable, 1000L);
return;
}
}
return;
}
if (this.videoPlayer.isPlaying() && playbackState == 4) {
if (this.playingMessageObject.isVideo() && !destroyAtEnd && (playCount == null || playCount[0] < 4)) {
this.videoPlayer.seekTo(0L);
if (playCount != null) {
playCount[0] = playCount[0] + 1;
return;
}
return;
}
cleanupPlayer(true, hasNoNextVoiceOrRoundVideoMessage(), true, false);
}
}
public void injectVideoPlayer(VideoPlayer player, MessageObject messageObject) {
if (player == null || messageObject == null) {
return;
}
FileLoader.getInstance(messageObject.currentAccount).setLoadingVideoForPlayer(messageObject.getDocument(), true);
this.playerWasReady = false;
clearPlaylist();
this.videoPlayer = player;
this.playingMessageObject = messageObject;
int i = this.playerNum + 1;
this.playerNum = i;
player.setDelegate(new 7(this, i, messageObject, (int[]) null, true));
this.currentAspectRatioFrameLayoutReady = false;
TextureView textureView = this.currentTextureView;
if (textureView != null) {
this.videoPlayer.setTextureView(textureView);
}
checkAudioFocus(messageObject);
setPlayerVolume();
this.isPaused = false;
this.lastProgress = 0L;
MessageObject messageObject2 = this.playingMessageObject;
this.playingMessageObject = messageObject;
if (!SharedConfig.enabledRaiseTo(true)) {
startRaiseToEarSensors(this.raiseChat);
}
startProgressTimer(this.playingMessageObject);
NotificationCenter.getInstance(messageObject.currentAccount).postNotificationName(NotificationCenter.messagePlayingDidStart, new Object[]{messageObject, messageObject2});
}
public void playEmojiSound(AccountInstance accountInstance, String emoji, MessagesController.EmojiSound sound, boolean loadOnly) {
if (sound == null) {
return;
}
Utilities.stageQueue.postRunnable(new MediaController$.ExternalSyntheticLambda40(this, sound, accountInstance, loadOnly));
}
public void lambda$playEmojiSound$19(MessagesController.EmojiSound emojiSound, AccountInstance accountInstance, boolean z) {
TLRPC.TL_document tL_document = new TLRPC.TL_document();
tL_document.access_hash = emojiSound.accessHash;
tL_document.id = emojiSound.id;
tL_document.mime_type = "sound/ogg";
tL_document.file_reference = emojiSound.fileReference;
tL_document.dc_id = accountInstance.getConnectionsManager().getCurrentDatacenterId();
File pathToAttach = FileLoader.getInstance(accountInstance.getCurrentAccount()).getPathToAttach(tL_document, true);
if (!pathToAttach.exists()) {
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda7(accountInstance, tL_document));
} else {
if (z) {
return;
}
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda30(this, pathToAttach));
}
}
public void lambda$playEmojiSound$17(File file) {
try {
int i = this.emojiSoundPlayerNum + 1;
this.emojiSoundPlayerNum = i;
VideoPlayer videoPlayer = this.emojiSoundPlayer;
if (videoPlayer != null) {
videoPlayer.releasePlayer(true);
}
VideoPlayer videoPlayer2 = new VideoPlayer(false, false);
this.emojiSoundPlayer = videoPlayer2;
videoPlayer2.setDelegate(new 8(this, i));
this.emojiSoundPlayer.preparePlayer(Uri.fromFile(file), "other");
this.emojiSoundPlayer.setStreamType(3);
this.emojiSoundPlayer.play();
} catch (Exception e) {
FileLog.e(e);
VideoPlayer videoPlayer3 = this.emojiSoundPlayer;
if (videoPlayer3 != null) {
videoPlayer3.releasePlayer(true);
this.emojiSoundPlayer = null;
}
}
}
public static void lambda$playEmojiSound$18(AccountInstance accountInstance, TLRPC$Document tLRPC$Document) {
accountInstance.getFileLoader().loadFile(tLRPC$Document, (Object) null, 1, 1);
}
public void checkVolumeBarUI() {
if (this.isSilent) {
return;
}
try {
long currentTimeMillis = System.currentTimeMillis();
if (Math.abs(currentTimeMillis - volumeBarLastTimeShown) < 5000) {
return;
}
AudioManager audioManager = (AudioManager) ApplicationLoader.applicationContext.getSystemService("audio");
int i = this.useFrontSpeaker ? 0 : 3;
int streamVolume = audioManager.getStreamVolume(i);
if (streamVolume == 0) {
audioManager.adjustStreamVolume(i, streamVolume, 1);
volumeBarLastTimeShown = currentTimeMillis;
}
} catch (Exception unused) {
}
}
private void setBluetoothScoOn(boolean scoOn) {
AudioManager audioManager = (AudioManager) ApplicationLoader.applicationContext.getSystemService("audio");
if (!(audioManager.isBluetoothScoAvailableOffCall() && SharedConfig.recordViaSco) && scoOn) {
return;
}
BluetoothAdapter defaultAdapter = BluetoothAdapter.getDefaultAdapter();
if (defaultAdapter != null) {
try {
if (defaultAdapter.getProfileConnectionState(1) != 2) {
}
if (!scoOn && !audioManager.isBluetoothScoOn()) {
audioManager.startBluetoothSco();
return;
} else if (scoOn && audioManager.isBluetoothScoOn()) {
audioManager.stopBluetoothSco();
return;
}
} catch (SecurityException unused) {
return;
} catch (Throwable th) {
FileLog.e(th);
return;
}
}
if (scoOn) {
return;
}
if (!scoOn) {
}
if (scoOn) {
}
}
public boolean playMessage(final MessageObject messageObject) {
return playMessage(messageObject, false);
}
public boolean playMessage(final org.telegram.messenger.MessageObject r30, boolean r31) {
throw new UnsupportedOperationException("Method not decompiled: org.telegram.messenger.MediaController.playMessage(org.telegram.messenger.MessageObject, boolean):boolean");
}
public void lambda$playMessage$20() {
cleanupPlayer(true, true);
}
public static void lambda$playMessage$21(MessageObject messageObject, File file) {
NotificationCenter.getInstance(messageObject.currentAccount).postNotificationName(NotificationCenter.fileLoaded, new Object[]{FileLoader.getAttachFileName(messageObject.getDocument()), file});
}
public static void lambda$playMessage$22(MessageObject messageObject, File file) {
NotificationCenter.getInstance(messageObject.currentAccount).postNotificationName(NotificationCenter.fileLoaded, new Object[]{FileLoader.getAttachFileName(messageObject.getDocument()), file});
}
private boolean canStartMusicPlayerService() {
MessageObject messageObject = this.playingMessageObject;
return (messageObject == null || (!messageObject.isMusic() && !this.playingMessageObject.isVoice() && !this.playingMessageObject.isRoundVideo()) || this.playingMessageObject.isVoiceOnce() || this.playingMessageObject.isRoundOnce()) ? false : true;
}
public void updateSilent(boolean value) {
this.isSilent = value;
VideoPlayer videoPlayer = this.videoPlayer;
if (videoPlayer != null) {
videoPlayer.setLooping(value);
}
setPlayerVolume();
checkVolumeBarUI();
MessageObject messageObject = this.playingMessageObject;
if (messageObject != null) {
NotificationCenter notificationCenter = NotificationCenter.getInstance(messageObject.currentAccount);
int i = NotificationCenter.messagePlayingPlayStateChanged;
Object[] objArr = new Object[1];
MessageObject messageObject2 = this.playingMessageObject;
objArr[0] = Integer.valueOf(messageObject2 != null ? messageObject2.getId() : 0);
notificationCenter.postNotificationName(i, objArr);
}
}
public AudioInfo getAudioInfo() {
return this.audioInfo;
}
public void setPlaybackOrderType(int type) {
boolean z = SharedConfig.shuffleMusic;
SharedConfig.setPlaybackOrderType(type);
boolean z2 = SharedConfig.shuffleMusic;
if (z != z2) {
if (z2) {
buildShuffledPlayList();
return;
}
MessageObject messageObject = this.playingMessageObject;
if (messageObject != null) {
int indexOf = this.playlist.indexOf(messageObject);
this.currentPlaylistNum = indexOf;
if (indexOf == -1) {
clearPlaylist();
cleanupPlayer(true, true);
}
}
}
}
public boolean isStreamingCurrentAudio() {
return this.isStreamingCurrentAudio;
}
public boolean isCurrentPlayer(VideoPlayer player) {
return this.videoPlayer == player || this.audioPlayer == player;
}
public void tryResumePausedAudio() {
MessageObject playingMessageObject = getPlayingMessageObject();
if (playingMessageObject != null && isMessagePaused() && this.wasPlayingAudioBeforePause && (playingMessageObject.isVoice() || playingMessageObject.isMusic())) {
playMessage(playingMessageObject);
}
this.wasPlayingAudioBeforePause = false;
}
public boolean lambda$startAudioAgain$7(MessageObject messageObject) {
if ((this.audioPlayer != null || this.videoPlayer != null) && messageObject != null && this.playingMessageObject != null && isSamePlayingMessage(messageObject)) {
stopProgressTimer();
try {
if (this.audioPlayer != null) {
if (!this.playingMessageObject.isVoice()) {
double duration = this.playingMessageObject.getDuration();
double d = VOLUME_NORMAL - this.playingMessageObject.audioProgress;
Double.isNaN(d);
if (duration * d > 1.0d && LaunchActivity.isResumed) {
ValueAnimator valueAnimator = this.audioVolumeAnimator;
if (valueAnimator != null) {
valueAnimator.removeAllUpdateListeners();
this.audioVolumeAnimator.cancel();
}
ValueAnimator ofFloat = ValueAnimator.ofFloat(VOLUME_NORMAL, 0.0f);
this.audioVolumeAnimator = ofFloat;
ofFloat.addUpdateListener(this.audioVolumeUpdateListener);
this.audioVolumeAnimator.setDuration(300L);
this.audioVolumeAnimator.addListener(new 12(this));
this.audioVolumeAnimator.start();
}
}
this.audioPlayer.pause();
} else {
VideoPlayer videoPlayer = this.videoPlayer;
if (videoPlayer != null) {
videoPlayer.pause();
}
}
this.isPaused = true;
NotificationCenter.getInstance(this.playingMessageObject.currentAccount).postNotificationName(NotificationCenter.messagePlayingPlayStateChanged, new Object[]{Integer.valueOf(this.playingMessageObject.getId())});
return true;
} catch (Exception e) {
FileLog.e(e);
this.isPaused = false;
}
}
return false;
}
private boolean resumeAudio(MessageObject messageObject) {
if ((this.audioPlayer != null || this.videoPlayer != null) && messageObject != null && this.playingMessageObject != null && isSamePlayingMessage(messageObject)) {
try {
startProgressTimer(this.playingMessageObject);
ValueAnimator valueAnimator = this.audioVolumeAnimator;
if (valueAnimator != null) {
valueAnimator.removeAllListeners();
this.audioVolumeAnimator.cancel();
}
if (!messageObject.isVoice() && !messageObject.isRoundVideo()) {
ValueAnimator ofFloat = ValueAnimator.ofFloat(this.audioVolume, VOLUME_NORMAL);
this.audioVolumeAnimator = ofFloat;
ofFloat.addUpdateListener(this.audioVolumeUpdateListener);
this.audioVolumeAnimator.setDuration(300L);
this.audioVolumeAnimator.start();
} else {
this.audioVolume = VOLUME_NORMAL;
setPlayerVolume();
}
VideoPlayer videoPlayer = this.audioPlayer;
if (videoPlayer != null) {
videoPlayer.play();
} else {
VideoPlayer videoPlayer2 = this.videoPlayer;
if (videoPlayer2 != null) {
videoPlayer2.play();
}
}
checkAudioFocus(messageObject);
this.isPaused = false;
NotificationCenter.getInstance(this.playingMessageObject.currentAccount).postNotificationName(NotificationCenter.messagePlayingPlayStateChanged, new Object[]{Integer.valueOf(this.playingMessageObject.getId())});
return true;
} catch (Exception e) {
FileLog.e(e);
}
}
return false;
}
public boolean isVideoDrawingReady() {
AspectRatioFrameLayout aspectRatioFrameLayout = this.currentAspectRatioFrameLayout;
return aspectRatioFrameLayout != null && aspectRatioFrameLayout.isDrawingReady();
}
public ArrayList<MessageObject> getPlaylist() {
return this.playlist;
}
public boolean isPlayingMessage(MessageObject messageObject) {
MessageObject messageObject2;
if (messageObject != null && messageObject.isRepostPreview) {
return false;
}
if ((this.audioPlayer != null || this.videoPlayer != null) && messageObject != null && (messageObject2 = this.playingMessageObject) != null) {
long j = messageObject2.eventId;
if (j != 0 && j == messageObject.eventId) {
return !this.downloadingCurrentMessage;
}
if (isSamePlayingMessage(messageObject)) {
return !this.downloadingCurrentMessage;
}
}
return false;
}
public boolean isPlayingMessageAndReadyToDraw(MessageObject messageObject) {
return this.isDrawingWasReady && isPlayingMessage(messageObject);
}
public boolean isMessagePaused() {
return this.isPaused || this.downloadingCurrentMessage;
}
public boolean isDownloadingCurrentMessage() {
return this.downloadingCurrentMessage;
}
public void setReplyingMessage(MessageObject replyToMsg, MessageObject replyToTopMsg, TL_stories.StoryItem storyItem) {
this.recordReplyingMsg = replyToMsg;
this.recordReplyingTopMsg = replyToTopMsg;
this.recordReplyingStory = storyItem;
}
public void requestAudioFocus(boolean request) {
if (request) {
if (this.hasRecordAudioFocus || !SharedConfig.pauseMusicOnRecord || PlusSettings.disableMusicStop || NotificationsController.audioManager.requestAudioFocus(this.audioRecordFocusChangedListener, 3, 2) != 1) {
return;
}
this.hasRecordAudioFocus = true;
return;
}
if (this.hasRecordAudioFocus) {
NotificationsController.audioManager.abandonAudioFocus(this.audioRecordFocusChangedListener);
this.hasRecordAudioFocus = false;
}
}
public void prepareResumedRecording(int currentAccount, MediaDataController.DraftVoice draft, long dialogId, MessageObject replyToMsg, MessageObject replyToTopMsg, TL_stories.StoryItem replyStory, int guid, String query_shortcut, int query_shortcut_id) {
this.manualRecording = false;
requestAudioFocus(true);
this.recordQueue.cancelRunnable(this.recordStartRunnable);
this.recordQueue.postRunnable(new MediaController$.ExternalSyntheticLambda27(this, guid, draft, currentAccount, dialogId, replyToTopMsg, replyToMsg, replyStory, query_shortcut, query_shortcut_id));
}
public void lambda$prepareResumedRecording$25(int i, MediaDataController.DraftVoice draftVoice, int i2, long j, MessageObject messageObject, MessageObject messageObject2, TL_stories.StoryItem storyItem, String str, int i3) {
setBluetoothScoOn(true);
this.sendAfterDone = 0;
TLRPC.TL_document tL_document = new TLRPC.TL_document();
this.recordingAudio = tL_document;
this.recordingGuid = i;
tL_document.dc_id = Integer.MIN_VALUE;
tL_document.id = draftVoice.id;
tL_document.user_id = UserConfig.getInstance(i2).getClientUserId();
TLRPC.TL_document tL_document2 = this.recordingAudio;
tL_document2.mime_type = "audio/ogg";
tL_document2.file_reference = new byte[0];
SharedConfig.saveConfig();
this.recordingAudioFile = new 13(this, draftVoice.path);
FileLoader.getDirectory(4).mkdirs();
if (BuildVars.LOGS_ENABLED) {
FileLog.d("start recording internal " + this.recordingAudioFile.getPath() + " " + this.recordingAudioFile.exists());
}
AutoDeleteMediaTask.lockFile(this.recordingAudioFile);
try {
this.audioRecorderPaused = true;
this.recordTimeCount = draftVoice.recordTimeCount;
this.writedFrame = draftVoice.writedFrame;
this.samplesCount = draftVoice.samplesCount;
this.recordSamples = draftVoice.recordSamples;
this.recordDialogId = j;
this.recordTopicId = messageObject == null ? 0L : MessageObject.getTopicId(this.recordingCurrentAccount, messageObject.messageOwner, false);
this.recordingCurrentAccount = i2;
this.recordReplyingMsg = messageObject2;
this.recordReplyingTopMsg = messageObject;
this.recordReplyingStory = storyItem;
this.recordQuickReplyShortcut = str;
this.recordQuickReplyShortcutId = i3;
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda31(this, this.recordingAudioFile, this.recordingAudio));
} catch (Exception e) {
FileLog.e(e);
this.recordingAudio = null;
AutoDeleteMediaTask.unlockFile(this.recordingAudioFile);
this.recordingAudioFile.delete();
this.recordingAudioFile = null;
try {
this.audioRecorder.release();
this.audioRecorder = null;
} catch (Exception e2) {
FileLog.e(e2);
}
setBluetoothScoOn(false);
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda26(this, i2, j));
}
}
public void lambda$prepareResumedRecording$23(int i, long j) {
MediaDataController.getInstance(i).pushDraftVoiceMessage(j, this.recordTopicId, (MediaDataController.DraftVoice) null);
this.recordStartRunnable = null;
}
public void lambda$prepareResumedRecording$24(File file, TLRPC.TL_document tL_document) {
if (!file.exists() && BuildVars.DEBUG_VERSION) {
FileLog.e(new RuntimeException("file not found :( recordTimeCount " + this.recordTimeCount + " writedFrames" + this.writedFrame));
}
tL_document.date = ConnectionsManager.getInstance(this.recordingCurrentAccount).getCurrentTime();
tL_document.size = (int) file.length();
TLRPC.DocumentAttribute tL_documentAttributeAudio = new TLRPC.TL_documentAttributeAudio();
tL_documentAttributeAudio.voice = true;
short[] sArr = this.recordSamples;
byte[] waveform2 = getWaveform2(sArr, sArr.length);
tL_documentAttributeAudio.waveform = waveform2;
if (waveform2 != null) {
tL_documentAttributeAudio.flags |= 4;
}
double d = this.recordTimeCount;
Double.isNaN(d);
tL_documentAttributeAudio.duration = d / 1000.0d;
tL_document.attributes.clear();
tL_document.attributes.add(tL_documentAttributeAudio);
NotificationCenter.getInstance(this.recordingCurrentAccount).postNotificationName(NotificationCenter.recordPaused, new Object[0]);
NotificationCenter.getInstance(this.recordingCurrentAccount).postNotificationName(NotificationCenter.audioDidSent, new Object[]{Integer.valueOf(this.recordingGuid), tL_document, file.getAbsolutePath(), Boolean.TRUE});
}
public void toggleRecordingPause(boolean voiceOnce) {
this.recordQueue.postRunnable(new MediaController$.ExternalSyntheticLambda41(this, voiceOnce));
}
public void lambda$toggleRecordingPause$31(boolean z) {
if (this.recordingAudio == null || this.recordingAudioFile == null) {
return;
}
boolean z2 = !this.audioRecorderPaused;
this.audioRecorderPaused = z2;
if (z2) {
AudioRecord audioRecord = this.audioRecorder;
if (audioRecord == null) {
return;
}
this.sendAfterDone = 4;
audioRecord.stop();
this.audioRecorder.release();
this.audioRecorder = null;
this.recordQueue.postRunnable(new MediaController$.ExternalSyntheticLambda42(this, z));
return;
}
this.recordQueue.cancelRunnable(this.recordRunnable);
this.recordQueue.postRunnable(new MediaController$.ExternalSyntheticLambda17(this));
}
public void lambda$toggleRecordingPause$27(boolean z) {
stopRecord(true);
TLRPC.TL_document tL_document = this.recordingAudio;
File file = this.recordingAudioFile;
if (tL_document == null || file == null) {
return;
}
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda34(this, file, z, tL_document));
}
public void lambda$toggleRecordingPause$26(File file, boolean z, TLRPC.TL_document tL_document) {
boolean exists = file.exists();
if (!exists && BuildVars.DEBUG_VERSION) {
FileLog.e(new RuntimeException("file not found :( recordTimeCount " + this.recordTimeCount + " writedFrames" + this.writedFrame));
}
if (exists) {
MediaDataController.getInstance(this.recordingCurrentAccount).pushDraftVoiceMessage(this.recordDialogId, this.recordTopicId, MediaDataController.DraftVoice.of(this, file.getAbsolutePath(), z));
}
tL_document.date = ConnectionsManager.getInstance(this.recordingCurrentAccount).getCurrentTime();
tL_document.size = (int) file.length();
TLRPC.DocumentAttribute tL_documentAttributeAudio = new TLRPC.TL_documentAttributeAudio();
tL_documentAttributeAudio.voice = true;
short[] sArr = this.recordSamples;
byte[] waveform2 = getWaveform2(sArr, sArr.length);
tL_documentAttributeAudio.waveform = waveform2;
if (waveform2 != null) {
tL_documentAttributeAudio.flags |= 4;
}
double d = this.recordTimeCount;
Double.isNaN(d);
tL_documentAttributeAudio.duration = d / 1000.0d;
tL_document.attributes.clear();
tL_document.attributes.add(tL_documentAttributeAudio);
NotificationCenter.getInstance(this.recordingCurrentAccount).postNotificationName(NotificationCenter.recordPaused, new Object[0]);
NotificationCenter.getInstance(this.recordingCurrentAccount).postNotificationName(NotificationCenter.audioDidSent, new Object[]{Integer.valueOf(this.recordingGuid), tL_document, file.getAbsolutePath()});
}
public void lambda$toggleRecordingPause$30() {
if (resumeRecord(this.recordingAudioFile.getPath(), this.sampleRate) == 0) {
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda11(this));
if (BuildVars.LOGS_ENABLED) {
FileLog.d("cant resume encoder");
return;
}
return;
}
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda13(this));
}
public void lambda$toggleRecordingPause$28() {
this.recordStartRunnable = null;
NotificationCenter.getInstance(this.recordingCurrentAccount).postNotificationName(NotificationCenter.recordStartError, new Object[]{Integer.valueOf(this.recordingGuid)});
}
public void lambda$toggleRecordingPause$29() {
MediaDataController.getInstance(this.recordingCurrentAccount).pushDraftVoiceMessage(this.recordDialogId, this.recordTopicId, (MediaDataController.DraftVoice) null);
this.audioRecorder = new AudioRecord(0, this.sampleRate, 16, 2, this.recordBufferSize);
this.recordStartTime = System.currentTimeMillis();
this.fileBuffer.rewind();
this.audioRecorder.startRecording();
this.recordQueue.postRunnable(this.recordRunnable);
NotificationCenter.getInstance(this.recordingCurrentAccount).postNotificationName(NotificationCenter.recordResumed, new Object[0]);
}
public void startRecording(int currentAccount, long dialogId, MessageObject replyToMsg, MessageObject replyToTopMsg, TL_stories.StoryItem replyStory, int guid, boolean manual, String quick_shortcut, int quick_shortcut_id) {
boolean z;
boolean z2;
MessageObject messageObject = this.playingMessageObject;
if (messageObject == null || !isPlayingMessage(messageObject) || isMessagePaused()) {
z = manual;
z2 = false;
} else {
z = manual;
z2 = true;
}
this.manualRecording = z;
requestAudioFocus(true);
try {
if (!PlusSettings.disableActionsVibrations) {
this.feedbackView.performHapticFeedback(3, 2);
}
} catch (Exception unused) {
}
DispatchQueue dispatchQueue = this.recordQueue;
MediaController$.ExternalSyntheticLambda25 externalSyntheticLambda25 = new MediaController$.ExternalSyntheticLambda25(this, currentAccount, guid, dialogId, replyToTopMsg, replyToMsg, replyStory, quick_shortcut, quick_shortcut_id);
this.recordStartRunnable = externalSyntheticLambda25;
dispatchQueue.postRunnable(externalSyntheticLambda25, z2 ? 500L : 50L);
}
public void lambda$startRecording$36(int i, int i2, long j, MessageObject messageObject, MessageObject messageObject2, TL_stories.StoryItem storyItem, String str, int i3) {
if (this.audioRecorder != null) {
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda22(this, i, i2));
return;
}
setBluetoothScoOn(true);
this.sendAfterDone = 0;
TLRPC.TL_document tL_document = new TLRPC.TL_document();
this.recordingAudio = tL_document;
this.recordingGuid = i2;
tL_document.file_reference = new byte[0];
tL_document.dc_id = Integer.MIN_VALUE;
tL_document.id = SharedConfig.getLastLocalId();
this.recordingAudio.user_id = UserConfig.getInstance(i).getClientUserId();
TLRPC.TL_document tL_document2 = this.recordingAudio;
tL_document2.mime_type = "audio/ogg";
tL_document2.file_reference = new byte[0];
SharedConfig.saveConfig();
this.recordingAudioFile = new 14(this, FileLoader.getDirectory(1), System.currentTimeMillis() + "_" + FileLoader.getAttachFileName(this.recordingAudio));
FileLoader.getDirectory(4).mkdirs();
if (BuildVars.LOGS_ENABLED) {
FileLog.d("start recording internal " + this.recordingAudioFile.getPath() + " " + this.recordingAudioFile.exists());
}
AutoDeleteMediaTask.lockFile(this.recordingAudioFile);
try {
if (startRecord(this.recordingAudioFile.getPath(), this.sampleRate) == 0) {
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda24(this, i, i2));
if (BuildVars.LOGS_ENABLED) {
FileLog.d("cant init encoder");
return;
}
return;
}
this.audioRecorderPaused = false;
this.audioRecorder = new AudioRecord(0, this.sampleRate, 16, 2, this.recordBufferSize);
this.recordStartTime = System.currentTimeMillis();
long j2 = 0;
this.recordTimeCount = 0L;
this.writedFrame = 0;
this.samplesCount = 0L;
this.recordDialogId = j;
if (messageObject != null) {
j2 = MessageObject.getTopicId(this.recordingCurrentAccount, messageObject.messageOwner, false);
}
this.recordTopicId = j2;
this.recordingCurrentAccount = i;
this.recordReplyingMsg = messageObject2;
this.recordReplyingTopMsg = messageObject;
this.recordReplyingStory = storyItem;
this.recordQuickReplyShortcut = str;
this.recordQuickReplyShortcutId = i3;
this.fileBuffer.rewind();
initVoiceEnhancements();
this.audioRecorder.startRecording();
this.recordQueue.postRunnable(this.recordRunnable);
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda21(this, i, i2));
} catch (Exception e) {
FileLog.e(e);
this.recordingAudio = null;
stopRecord(false);
AutoDeleteMediaTask.unlockFile(this.recordingAudioFile);
this.recordingAudioFile.delete();
this.recordingAudioFile = null;
try {
releaseVoiceEnhancements();
this.audioRecorder.release();
this.audioRecorder = null;
} catch (Exception e2) {
FileLog.e(e2);
}
setBluetoothScoOn(false);
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda23(this, i, i2));
}
}
public void lambda$startRecording$32(int i, int i2) {
this.recordStartRunnable = null;
NotificationCenter.getInstance(i).postNotificationName(NotificationCenter.recordStartError, new Object[]{Integer.valueOf(i2)});
}
public void lambda$startRecording$33(int i, int i2) {
this.recordStartRunnable = null;
NotificationCenter.getInstance(i).postNotificationName(NotificationCenter.recordStartError, new Object[]{Integer.valueOf(i2)});
}
public void lambda$startRecording$34(int i, int i2) {
this.recordStartRunnable = null;
NotificationCenter.getInstance(i).postNotificationName(NotificationCenter.recordStartError, new Object[]{Integer.valueOf(i2)});
}
public void lambda$startRecording$35(int i, int i2) {
this.recordStartRunnable = null;
NotificationCenter.getInstance(i).postNotificationName(NotificationCenter.recordStarted, new Object[]{Integer.valueOf(i2), Boolean.TRUE});
}
public void generateWaveform(MessageObject messageObject) {
String str = messageObject.getId() + "_" + messageObject.getDialogId();
String absolutePath = FileLoader.getInstance(messageObject.currentAccount).getPathToMessage(messageObject.messageOwner).getAbsolutePath();
if (this.generatingWaveform.containsKey(str)) {
return;
}
this.generatingWaveform.put(str, messageObject);
Utilities.globalQueue.postRunnable(new MediaController$.ExternalSyntheticLambda35(this, absolutePath, str, messageObject));
}
public void lambda$generateWaveform$38(String str, String str2, MessageObject messageObject) {
try {
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda36(this, str2, getWaveform(str), messageObject));
} catch (Exception e) {
FileLog.e(e);
}
}
public void lambda$generateWaveform$37(String str, byte[] bArr, MessageObject messageObject) {
MessageObject remove = this.generatingWaveform.remove(str);
if (remove == null || bArr == null || remove.getDocument() == null) {
return;
}
int i = 0;
while (true) {
if (i >= remove.getDocument().attributes.size()) {
break;
}
TLRPC.DocumentAttribute documentAttribute = remove.getDocument().attributes.get(i);
if (documentAttribute instanceof TLRPC.TL_documentAttributeAudio) {
documentAttribute.waveform = bArr;
documentAttribute.flags |= 4;
break;
}
i++;
}
TLRPC.TL_messages_messages tL_messages_messages = new TLRPC.TL_messages_messages();
((TLRPC.messages_Messages) tL_messages_messages).messages.add(remove.messageOwner);
MessagesStorage.getInstance(remove.currentAccount).putMessages(tL_messages_messages, remove.getDialogId(), -1, 0, false, messageObject.scheduled ? 1 : 0, 0L);
ArrayList arrayList = new ArrayList();
arrayList.add(remove);
NotificationCenter.getInstance(remove.currentAccount).postNotificationName(NotificationCenter.replaceMessagesObjects, new Object[]{Long.valueOf(remove.getDialogId()), arrayList});
}
public void cleanRecording(boolean delete) {
File file;
this.recordingAudio = null;
AutoDeleteMediaTask.unlockFile(this.recordingAudioFile);
if (delete && (file = this.recordingAudioFile) != null) {
try {
file.delete();
} catch (Exception e) {
FileLog.e(e);
}
}
this.recordingAudioFile = null;
this.manualRecording = false;
this.raiseToEarRecord = false;
this.ignoreOnPause = false;
}
public void stopRecordingInternal(final int send, boolean notify, int scheduleDate, boolean once) {
if (send != 0) {
TLRPC.TL_document tL_document = this.recordingAudio;
File file = this.recordingAudioFile;
if (BuildVars.LOGS_ENABLED) {
FileLog.d("stop recording internal filename " + this.recordingAudioFile.getPath());
}
this.fileEncodingQueue.postRunnable(new MediaController$.ExternalSyntheticLambda32(this, file, tL_document, send, notify, scheduleDate, once));
} else {
AutoDeleteMediaTask.unlockFile(this.recordingAudioFile);
File file2 = this.recordingAudioFile;
if (file2 != null) {
file2.delete();
}
requestAudioFocus(false);
}
try {
if (this.audioRecorder != null) {
releaseVoiceEnhancements();
this.audioRecorder.release();
this.audioRecorder = null;
}
} catch (Exception e) {
FileLog.e(e);
}
this.recordingAudio = null;
this.recordingAudioFile = null;
this.manualRecording = false;
this.raiseToEarRecord = false;
this.ignoreOnPause = false;
}
public void lambda$stopRecordingInternal$40(File file, TLRPC.TL_document tL_document, int i, boolean z, int i2, boolean z2) {
stopRecord(false);
if (BuildVars.LOGS_ENABLED) {
FileLog.d("stop recording internal in queue " + file.exists() + " " + file.length());
}
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda33(this, file, tL_document, i, z, i2, z2));
}
public void lambda$stopRecordingInternal$39(File file, TLRPC.TL_document tL_document, int i, boolean z, int i2, boolean z2) {
boolean z3;
char c;
if (BuildVars.LOGS_ENABLED) {
FileLog.d("stop recording internal " + file.exists() + " " + file.length() + " recordTimeCount " + this.recordTimeCount + " writedFrames" + this.writedFrame);
}
if (!file.exists() && BuildVars.DEBUG_VERSION) {
FileLog.e(new RuntimeException("file not found :( recordTimeCount " + this.recordTimeCount + " writedFrames" + this.writedFrame));
}
MediaDataController.getInstance(this.recordingCurrentAccount).pushDraftVoiceMessage(this.recordDialogId, this.recordTopicId, (MediaDataController.DraftVoice) null);
tL_document.date = ConnectionsManager.getInstance(this.recordingCurrentAccount).getCurrentTime();
tL_document.size = (int) file.length();
TLRPC.DocumentAttribute tL_documentAttributeAudio = new TLRPC.TL_documentAttributeAudio();
tL_documentAttributeAudio.voice = true;
short[] sArr = this.recordSamples;
byte[] waveform2 = getWaveform2(sArr, sArr.length);
tL_documentAttributeAudio.waveform = waveform2;
if (waveform2 != null) {
tL_documentAttributeAudio.flags |= 4;
}
long j = this.recordTimeCount;
double d = j;
Double.isNaN(d);
tL_documentAttributeAudio.duration = d / 1000.0d;
tL_document.attributes.clear();
tL_document.attributes.add(tL_documentAttributeAudio);
if (j > 700) {
if (i == 1) {
c = 1;
SendMessagesHelper.SendMessageParams of = SendMessagesHelper.SendMessageParams.of(tL_document, (VideoEditedInfo) null, file.getAbsolutePath(), this.recordDialogId, this.recordReplyingMsg, this.recordReplyingTopMsg, (String) null, (ArrayList) null, (TLRPC.ReplyMarkup) null, (HashMap) null, z, i2, z2 ? ConnectionsManager.DEFAULT_DATACENTER_ID : 0, (Object) null, (MessageObject.SendAnimationData) null, false);
of.replyToStoryItem = this.recordReplyingStory;
of.quick_reply_shortcut = this.recordQuickReplyShortcut;
of.quick_reply_shortcut_id = this.recordQuickReplyShortcutId;
SendMessagesHelper.getInstance(this.recordingCurrentAccount).sendMessage(of);
} else {
c = 1;
}
NotificationCenter notificationCenter = NotificationCenter.getInstance(this.recordingCurrentAccount);
int i3 = NotificationCenter.audioDidSent;
Object[] objArr = new Object[3];
z3 = false;
objArr[0] = Integer.valueOf(this.recordingGuid);
objArr[c] = i == 2 ? tL_document : null;
objArr[2] = i == 2 ? file.getAbsolutePath() : null;
notificationCenter.postNotificationName(i3, objArr);
} else {
z3 = false;
NotificationCenter.getInstance(this.recordingCurrentAccount).postNotificationName(NotificationCenter.audioRecordTooShort, new Object[]{Integer.valueOf(this.recordingGuid), Boolean.FALSE, Integer.valueOf((int) j)});
AutoDeleteMediaTask.unlockFile(file);
file.delete();
}
requestAudioFocus(z3);
}
public void stopRecording(final int send, boolean notify, int scheduleDate, boolean once) {
Runnable runnable = this.recordStartRunnable;
if (runnable != null) {
this.recordQueue.cancelRunnable(runnable);
this.recordStartRunnable = null;
}
this.recordQueue.postRunnable(new MediaController$.ExternalSyntheticLambda29(this, send, notify, scheduleDate, once));
}
public void lambda$stopRecording$42(int i, boolean z, int i2, boolean z2) {
if (this.sendAfterDone == 3) {
this.sendAfterDone = 0;
stopRecordingInternal(i, z, i2, z2);
return;
}
AudioRecord audioRecord = this.audioRecorder;
if (audioRecord == null) {
this.recordingAudio = null;
this.manualRecording = false;
this.raiseToEarRecord = false;
this.ignoreOnPause = false;
return;
}
try {
this.sendAfterDone = i;
this.sendAfterDoneNotify = z;
this.sendAfterDoneScheduleDate = i2;
this.sendAfterDoneOnce = z2;
audioRecord.stop();
setBluetoothScoOn(false);
} catch (Exception e) {
FileLog.e(e);
if (this.recordingAudioFile != null) {
if (BuildVars.LOGS_ENABLED) {
FileLog.e("delete voice file");
}
this.recordingAudioFile.delete();
}
}
if (i == 0) {
stopRecordingInternal(0, false, 0, false);
}
try {
if (!PlusSettings.disableActionsVibrations) {
this.feedbackView.performHapticFeedback(3, 2);
}
} catch (Exception unused) {
}
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda20(this, i));
}
public void lambda$stopRecording$41(int i) {
NotificationCenter notificationCenter = NotificationCenter.getInstance(this.recordingCurrentAccount);
int i2 = NotificationCenter.recordStopped;
Object[] objArr = new Object[2];
objArr[0] = Integer.valueOf(this.recordingGuid);
objArr[1] = Integer.valueOf(i == 2 ? 1 : 0);
notificationCenter.postNotificationName(i2, objArr);
}
public static void saveFilesFromMessages(Context context, AccountInstance accountInstance, ArrayList<MessageObject> messageObjects, final MessagesStorage.IntCallback onSaved) {
if (messageObjects == null || messageObjects.isEmpty()) {
return;
}
new MediaLoader(context, accountInstance, messageObjects, onSaved).start();
}
public static void saveFile(String fullPath, Context context, final int type, final String name, final String mime) {
saveFile(fullPath, context, type, name, mime, null);
}
public static void saveFile(String fullPath, Context context, final int type, final String name, final String mime, final Utilities.Callback<Uri> onSaved) {
saveFile(fullPath, context, type, name, mime, onSaved, true);
}
public static void saveFile(java.lang.String r13, android.content.Context r14, final int r15, final java.lang.String r16, final java.lang.String r17, final org.telegram.messenger.Utilities.Callback<android.net.Uri> r18, boolean r19) {
throw new UnsupportedOperationException("Method not decompiled: org.telegram.messenger.MediaController.saveFile(java.lang.String, android.content.Context, int, java.lang.String, java.lang.String, org.telegram.messenger.Utilities$Callback, boolean):void");
}
public static void lambda$saveFile$43(boolean[] zArr, DialogInterface dialogInterface) {
zArr[0] = true;
}
public static void lambda$saveFile$44(boolean[] zArr, AlertDialog alertDialog) {
if (zArr[0]) {
return;
}
alertDialog.show();
}
public static void lambda$saveFile$49(int i, File file, String str, AlertDialog alertDialog, boolean[] zArr, String str2, Utilities.Callback callback, boolean[] zArr2) {
File externalStoragePublicDirectory;
File file2;
String str3;
char c;
boolean z;
boolean z2;
Uri fromFile;
try {
boolean z3 = true;
char c2 = 0;
if (Build.VERSION.SDK_INT >= 29) {
fromFile = saveFileInternal(i, file, null);
if (fromFile == null) {
z3 = false;
}
} else {
String str4 = "Plus";
if (i == 0) {
File externalStoragePublicDirectory2 = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
if (!PlusSettings.usePlusFolder()) {
str4 = "Telegram";
}
File file3 = new File(externalStoragePublicDirectory2, str4);
file3.mkdirs();
file2 = new File(file3, AndroidUtilities.generateFileName(0, FileLoader.getFileExtension(file)));
} else if (i == 1) {
File externalStoragePublicDirectory3 = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES);
if (!PlusSettings.usePlusFolder()) {
str4 = "Telegram";
}
File file4 = new File(externalStoragePublicDirectory3, str4);
file4.mkdirs();
file2 = new File(file4, AndroidUtilities.generateFileName(1, FileLoader.getFileExtension(file)));
} else {
if (i == 2) {
externalStoragePublicDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
} else {
externalStoragePublicDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC);
}
if (!PlusSettings.usePlusFolder()) {
str4 = "Telegram";
}
File file5 = new File(externalStoragePublicDirectory, str4);
if (!PlusSettings.addAppFolderToSaveToOption) {
file5 = new File(i == 2 ? Environment.DIRECTORY_DOWNLOADS : Environment.DIRECTORY_MUSIC);
}
file5.mkdirs();
file2 = new File(file5, str);
if (file2.exists()) {
int lastIndexOf = str.lastIndexOf(46);
int i2 = 0;
while (true) {
if (i2 >= 10) {
break;
}
if (lastIndexOf != -1) {
str3 = str.substring(0, lastIndexOf) + "(" + (i2 + 1) + ")" + str.substring(lastIndexOf);
} else {
str3 = str + "(" + (i2 + 1) + ")";
}
File file6 = new File(file5, str3);
if (!file6.exists()) {
file2 = file6;
break;
} else {
i2++;
file2 = file6;
}
}
}
}
if (!file2.exists()) {
file2.createNewFile();
}
long currentTimeMillis = System.currentTimeMillis() - 500;
try {
FileInputStream fileInputStream = new FileInputStream(file);
try {
FileChannel channel = fileInputStream.getChannel();
try {
FileChannel channel2 = new FileOutputStream(file2).getChannel();
try {
long size = channel.size();
try {
if (AndroidUtilities.isInternalUri(((Integer) FileDescriptor.class.getDeclaredMethod("getInt$", new Class[0]).invoke(fileInputStream.getFD(), new Object[0])).intValue())) {
if (alertDialog != null) {
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda47(alertDialog));
}
if (channel2 != null) {
channel2.close();
}
channel.close();
fileInputStream.close();
return;
}
} catch (Throwable th) {
FileLog.e(th);
}
long j = 0;
while (j < size) {
if (zArr[c2]) {
break;
}
long j2 = size;
channel2.transferFrom(channel, j, Math.min(4096L, size - j));
if (alertDialog != null && currentTimeMillis <= System.currentTimeMillis() - 500) {
currentTimeMillis = System.currentTimeMillis();
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda48(alertDialog, (int) ((j / j2) * 100.0f)));
}
j += 4096;
size = j2;
c2 = 0;
}
if (channel2 != null) {
channel2.close();
}
channel.close();
fileInputStream.close();
c = 0;
z = true;
} finally {
}
} finally {
}
} finally {
}
} catch (Exception e) {
FileLog.e(e);
c = 0;
z = false;
}
if (zArr[c]) {
file2.delete();
z2 = false;
} else {
z2 = z;
}
if (z2) {
if (i == 2) {
((DownloadManager) ApplicationLoader.applicationContext.getSystemService("download")).addCompletedDownload(file2.getName(), file2.getName(), false, str2, file2.getAbsolutePath(), file2.length(), true);
} else {
AndroidUtilities.addMediaToGallery(file2.getAbsoluteFile());
}
}
fromFile = Uri.fromFile(file2);
z3 = z2;
}
if (z3 && callback != null) {
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda46(callback, fromFile));
}
} catch (Exception e2) {
FileLog.e(e2);
}
if (alertDialog != null) {
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda49(alertDialog, zArr2));
}
}
public static void lambda$saveFile$45(AlertDialog alertDialog) {
try {
alertDialog.dismiss();
} catch (Exception e) {
FileLog.e(e);
}
}
public static void lambda$saveFile$46(AlertDialog alertDialog, int i) {
try {
alertDialog.setProgress(i);
} catch (Exception e) {
FileLog.e(e);
}
}
public static void lambda$saveFile$48(AlertDialog alertDialog, boolean[] zArr) {
try {
if (alertDialog.isShowing()) {
alertDialog.dismiss();
} else {
zArr[0] = true;
}
} catch (Exception e) {
FileLog.e(e);
}
}
public static Uri saveFileInternal(int type, File sourceFile, String filename) {
Uri contentUri;
int lastIndexOf;
try {
ContentValues contentValues = new ContentValues();
String fileExtension = FileLoader.getFileExtension(sourceFile);
if (TextUtils.isEmpty(fileExtension) && (lastIndexOf = sourceFile.getName().lastIndexOf(46)) != -1) {
fileExtension = sourceFile.getName().substring(lastIndexOf + 1);
}
String mimeTypeFromExtension = fileExtension != null ? MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileExtension) : null;
if ((type == 0 || type == 1) && mimeTypeFromExtension != null) {
if (mimeTypeFromExtension.startsWith("image")) {
type = 0;
}
if (mimeTypeFromExtension.startsWith("video")) {
type = 1;
}
}
String str = "Plus";
if (type == 0) {
if (filename == null) {
filename = AndroidUtilities.generateFileName(0, fileExtension);
}
contentUri = MediaStore.Images.Media.getContentUri("external_primary");
String str2 = Environment.DIRECTORY_PICTURES;
if (!PlusSettings.usePlusFolder()) {
str = "Telegram";
}
File file = new File(str2, str);
if (!PlusSettings.addAppFolderToSaveToOption) {
file = new File(Environment.DIRECTORY_PICTURES);
}
contentValues.put("relative_path", file + File.separator);
contentValues.put("_display_name", filename);
contentValues.put("mime_type", mimeTypeFromExtension);
} else if (type == 1) {
if (filename == null) {
filename = AndroidUtilities.generateFileName(1, fileExtension);
}
String str3 = Environment.DIRECTORY_MOVIES;
if (!PlusSettings.usePlusFolder()) {
str = "Telegram";
}
File file2 = new File(str3, str);
if (!PlusSettings.addAppFolderToSaveToOption) {
file2 = new File(Environment.DIRECTORY_MOVIES);
}
contentValues.put("relative_path", file2 + File.separator);
contentUri = MediaStore.Video.Media.getContentUri("external_primary");
contentValues.put("_display_name", filename);
} else if (type == 2) {
if (filename == null) {
filename = sourceFile.getName();
}
String str4 = Environment.DIRECTORY_DOWNLOADS;
if (!PlusSettings.usePlusFolder()) {
str = "Telegram";
}
File file3 = new File(str4, str);
if (!PlusSettings.addAppFolderToSaveToOption) {
file3 = new File(Environment.DIRECTORY_DOWNLOADS);
}
contentValues.put("relative_path", file3 + File.separator);
contentUri = MediaStore.Downloads.getContentUri("external_primary");
contentValues.put("_display_name", filename);
} else {
if (filename == null) {
filename = sourceFile.getName();
}
String str5 = Environment.DIRECTORY_MUSIC;
if (!PlusSettings.usePlusFolder()) {
str = "Telegram";
}
File file4 = new File(str5, str);
if (!PlusSettings.addAppFolderToSaveToOption) {
file4 = new File(Environment.DIRECTORY_MUSIC);
}
contentValues.put("relative_path", file4 + File.separator);
contentUri = MediaStore.Audio.Media.getContentUri("external_primary");
contentValues.put("_display_name", filename);
}
contentValues.put("mime_type", mimeTypeFromExtension);
Uri insert = ApplicationLoader.applicationContext.getContentResolver().insert(contentUri, contentValues);
if (insert != null) {
FileInputStream fileInputStream = new FileInputStream(sourceFile);
AndroidUtilities.copyFile(fileInputStream, ApplicationLoader.applicationContext.getContentResolver().openOutputStream(insert));
fileInputStream.close();
}
return insert;
} catch (Exception e) {
FileLog.e(e);
return null;
}
}
public static java.lang.String getStickerExt(android.net.Uri r8) {
throw new UnsupportedOperationException("Method not decompiled: org.telegram.messenger.MediaController.getStickerExt(android.net.Uri):java.lang.String");
}
public static boolean isWebp(Uri uri) {
InputStream inputStream = null;
try {
try {
try {
inputStream = ApplicationLoader.applicationContext.getContentResolver().openInputStream(uri);
byte[] bArr = new byte[12];
if (inputStream.read(bArr, 0, 12) == 12) {
String lowerCase = new String(bArr).toLowerCase();
if (lowerCase.startsWith("riff")) {
if (lowerCase.endsWith("webp")) {
try {
inputStream.close();
} catch (Exception e) {
FileLog.e(e);
}
return true;
}
}
}
inputStream.close();
} catch (Exception e2) {
FileLog.e(e2);
if (inputStream != null) {
inputStream.close();
}
}
} catch (Exception e3) {
FileLog.e(e3);
}
return false;
} catch (Throwable th) {
if (inputStream != null) {
try {
inputStream.close();
} catch (Exception e4) {
FileLog.e(e4);
}
}
throw th;
}
}
public static boolean isGif(Uri uri) {
InputStream inputStream = null;
try {
try {
try {
inputStream = ApplicationLoader.applicationContext.getContentResolver().openInputStream(uri);
byte[] bArr = new byte[3];
if (inputStream.read(bArr, 0, 3) == 3) {
if (new String(bArr).equalsIgnoreCase("gif")) {
try {
inputStream.close();
} catch (Exception e) {
FileLog.e(e);
}
return true;
}
}
inputStream.close();
} catch (Throwable th) {
if (inputStream != null) {
try {
inputStream.close();
} catch (Exception e2) {
FileLog.e(e2);
}
}
throw th;
}
} catch (Exception e3) {
FileLog.e(e3);
if (inputStream != null) {
inputStream.close();
}
}
} catch (Exception e4) {
FileLog.e(e4);
}
return false;
}
public static String getFileName(Uri uri) {
if (uri == null) {
return "";
}
try {
if (uri.getScheme().equals("content")) {
try {
Cursor query = ApplicationLoader.applicationContext.getContentResolver().query(uri, new String[]{"_display_name"}, null, null, null);
try {
r2 = query.moveToFirst() ? query.getString(query.getColumnIndex("_display_name")) : null;
query.close();
} finally {
}
} catch (Exception e) {
FileLog.e(e);
}
}
if (r2 != null) {
return r2;
}
String path = uri.getPath();
int lastIndexOf = path.lastIndexOf(47);
return lastIndexOf != -1 ? path.substring(lastIndexOf + 1) : path;
} catch (Exception e2) {
FileLog.e(e2);
return "";
}
}
public static String copyFileToCache(Uri uri, String ext) {
return copyFileToCache(uri, ext, -1L);
}
@android.annotation.SuppressLint({"DiscouragedPrivateApi"})
public static java.lang.String copyFileToCache(android.net.Uri r13, java.lang.String r14, long r15) {
throw new UnsupportedOperationException("Method not decompiled: org.telegram.messenger.MediaController.copyFileToCache(android.net.Uri, java.lang.String, long):java.lang.String");
}
public static void loadGalleryPhotosAlbums(final int guid) {
Thread thread = new Thread((Runnable) new MediaController$.ExternalSyntheticLambda3(guid));
thread.setPriority(1);
thread.start();
}
public static void lambda$loadGalleryPhotosAlbums$51(int r55) {
throw new UnsupportedOperationException("Method not decompiled: org.telegram.messenger.MediaController.lambda$loadGalleryPhotosAlbums$51(int):void");
}
public static int lambda$loadGalleryPhotosAlbums$50(PhotoEntry photoEntry, PhotoEntry photoEntry2) {
long j = photoEntry.dateTaken;
long j2 = photoEntry2.dateTaken;
if (j < j2) {
return 1;
}
return j > j2 ? -1 : 0;
}
private static void broadcastNewPhotos(final int guid, final ArrayList<AlbumEntry> mediaAlbumsSorted, final ArrayList<AlbumEntry> photoAlbumsSorted, final Integer cameraAlbumIdFinal, final AlbumEntry allMediaAlbumFinal, final AlbumEntry allPhotosAlbumFinal, final AlbumEntry allVideosAlbumFinal, int delay) {
Runnable runnable = broadcastPhotosRunnable;
if (runnable != null) {
AndroidUtilities.cancelRunOnUIThread(runnable);
}
MediaController$.ExternalSyntheticLambda6 externalSyntheticLambda6 = new MediaController$.ExternalSyntheticLambda6(guid, mediaAlbumsSorted, photoAlbumsSorted, cameraAlbumIdFinal, allMediaAlbumFinal, allPhotosAlbumFinal, allVideosAlbumFinal);
broadcastPhotosRunnable = externalSyntheticLambda6;
AndroidUtilities.runOnUIThread(externalSyntheticLambda6, delay);
}
public static void lambda$broadcastNewPhotos$52(int i, ArrayList arrayList, ArrayList arrayList2, Integer num, AlbumEntry albumEntry, AlbumEntry albumEntry2, AlbumEntry albumEntry3) {
if (PhotoViewer.getInstance().isVisible() && !forceBroadcastNewPhotos) {
broadcastNewPhotos(i, arrayList, arrayList2, num, albumEntry, albumEntry2, albumEntry3, 1000);
return;
}
allMediaAlbums = arrayList;
allPhotoAlbums = arrayList2;
broadcastPhotosRunnable = null;
allPhotosAlbumEntry = albumEntry2;
allMediaAlbumEntry = albumEntry;
allVideosAlbumEntry = albumEntry3;
NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.albumsDidLoad, new Object[]{Integer.valueOf(i), arrayList, arrayList2, num});
}
public void scheduleVideoConvert(MessageObject messageObject) {
scheduleVideoConvert(messageObject, false, true);
}
public boolean scheduleVideoConvert(MessageObject messageObject, boolean isEmpty, boolean withForeground) {
if (messageObject == null || messageObject.videoEditedInfo == null) {
return false;
}
if (isEmpty && !this.videoConvertQueue.isEmpty()) {
return false;
}
if (isEmpty) {
new File(messageObject.messageOwner.attachPath).delete();
}
VideoConvertMessage videoConvertMessage = new VideoConvertMessage(messageObject, messageObject.videoEditedInfo, withForeground);
this.videoConvertQueue.add(videoConvertMessage);
if (videoConvertMessage.foreground) {
this.foregroundConvertingMessages.add(videoConvertMessage);
checkForegroundConvertMessage(false);
}
if (this.videoConvertQueue.size() == 1) {
startVideoConvertFromQueue();
}
return true;
}
public void cancelVideoConvert(MessageObject messageObject) {
if (messageObject == null || this.videoConvertQueue.isEmpty()) {
return;
}
for (int i = 0; i < this.videoConvertQueue.size(); i++) {
VideoConvertMessage videoConvertMessage = this.videoConvertQueue.get(i);
MessageObject messageObject2 = videoConvertMessage.messageObject;
if (messageObject2.equals(messageObject) && messageObject2.currentAccount == messageObject.currentAccount) {
if (i == 0) {
synchronized (this.videoConvertSync) {
videoConvertMessage.videoEditedInfo.canceled = true;
}
return;
} else {
this.foregroundConvertingMessages.remove(this.videoConvertQueue.remove(i));
checkForegroundConvertMessage(true);
return;
}
}
}
}
private void checkForegroundConvertMessage(boolean cancelled) {
if (!this.foregroundConvertingMessages.isEmpty()) {
this.currentForegroundConvertingVideo = this.foregroundConvertingMessages.get(0);
} else {
this.currentForegroundConvertingVideo = null;
}
if (this.currentForegroundConvertingVideo != null || cancelled) {
VideoEncodingService.start(cancelled);
}
}
private boolean startVideoConvertFromQueue() {
if (this.videoConvertQueue.isEmpty()) {
return false;
}
VideoConvertMessage videoConvertMessage = this.videoConvertQueue.get(0);
VideoEditedInfo videoEditedInfo = videoConvertMessage.videoEditedInfo;
synchronized (this.videoConvertSync) {
if (videoEditedInfo != null) {
videoEditedInfo.canceled = false;
}
}
VideoConvertRunnable.runConversion(videoConvertMessage);
return true;
}
@SuppressLint({"NewApi"})
public static MediaCodecInfo selectCodec(String mimeType) {
int codecCount = MediaCodecList.getCodecCount();
MediaCodecInfo mediaCodecInfo = null;
for (int i = 0; i < codecCount; i++) {
MediaCodecInfo codecInfoAt = MediaCodecList.getCodecInfoAt(i);
if (codecInfoAt.isEncoder()) {
for (String str : codecInfoAt.getSupportedTypes()) {
if (str.equalsIgnoreCase(mimeType)) {
String name = codecInfoAt.getName();
if (name != null && (!name.equals("OMX.SEC.avc.enc") || name.equals("OMX.SEC.AVC.Encoder"))) {
return codecInfoAt;
}
mediaCodecInfo = codecInfoAt;
}
}
}
}
return mediaCodecInfo;
}
@SuppressLint({"NewApi"})
public static int selectColorFormat(MediaCodecInfo codecInfo, String mimeType) {
int i;
MediaCodecInfo.CodecCapabilities capabilitiesForType = codecInfo.getCapabilitiesForType(mimeType);
int i2 = 0;
int i3 = 0;
while (true) {
int[] iArr = capabilitiesForType.colorFormats;
if (i2 >= iArr.length) {
return i3;
}
i = iArr[i2];
if (isRecognizedFormat(i)) {
if (!codecInfo.getName().equals("OMX.SEC.AVC.Encoder") || i != 19) {
break;
}
i3 = i;
}
i2++;
}
return i;
}
public static int findTrack(MediaExtractor extractor, boolean audio) {
int trackCount = extractor.getTrackCount();
for (int i = 0; i < trackCount; i++) {
String string = extractor.getTrackFormat(i).getString("mime");
if (audio) {
if (string.startsWith("audio/")) {
return i;
}
} else if (string.startsWith("video/")) {
return i;
}
}
return -5;
}
public static boolean isH264Video(String videoPath) {
MediaExtractor mediaExtractor = new MediaExtractor();
boolean z = false;
try {
mediaExtractor.setDataSource(videoPath);
int findTrack = findTrack(mediaExtractor, false);
if (findTrack >= 0) {
if (mediaExtractor.getTrackFormat(findTrack).getString("mime").equals(VIDEO_MIME_TYPE)) {
z = true;
}
}
return z;
} catch (Exception e) {
FileLog.e(e);
return false;
} finally {
mediaExtractor.release();
}
}
public void didWriteData(final VideoConvertMessage message, final File file, final boolean last, final long lastFrameTimestamp, long availableSize, final boolean error, final float progress) {
VideoEditedInfo videoEditedInfo = message.videoEditedInfo;
boolean z = videoEditedInfo.videoConvertFirstWrite;
if (z) {
videoEditedInfo.videoConvertFirstWrite = false;
}
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda43(this, error, last, message, file, progress, lastFrameTimestamp, z, availableSize));
}
public void lambda$didWriteData$53(boolean z, boolean z2, VideoConvertMessage videoConvertMessage, File file, float f, long j, boolean z3, long j2) {
if (z || z2) {
boolean z4 = videoConvertMessage.videoEditedInfo.canceled;
synchronized (this.videoConvertSync) {
videoConvertMessage.videoEditedInfo.canceled = false;
}
this.videoConvertQueue.remove(videoConvertMessage);
this.foregroundConvertingMessages.remove(videoConvertMessage);
checkForegroundConvertMessage(z4 || z);
startVideoConvertFromQueue();
}
if (z) {
NotificationCenter.getInstance(videoConvertMessage.currentAccount).postNotificationName(NotificationCenter.filePreparingFailed, new Object[]{videoConvertMessage.messageObject, file.toString(), Float.valueOf(f), Long.valueOf(j)});
return;
}
if (z3) {
NotificationCenter.getInstance(videoConvertMessage.currentAccount).postNotificationName(NotificationCenter.filePreparingStarted, new Object[]{videoConvertMessage.messageObject, file.toString(), Float.valueOf(f), Long.valueOf(j)});
}
NotificationCenter notificationCenter = NotificationCenter.getInstance(videoConvertMessage.currentAccount);
int i = NotificationCenter.fileNewChunkAvailable;
Object[] objArr = new Object[6];
objArr[0] = videoConvertMessage.messageObject;
objArr[1] = file.toString();
objArr[2] = Long.valueOf(j2);
objArr[3] = Long.valueOf(z2 ? file.length() : 0L);
objArr[4] = Float.valueOf(f);
objArr[5] = Long.valueOf(j);
notificationCenter.postNotificationName(i, objArr);
}
public void pauseByRewind() {
VideoPlayer videoPlayer = this.audioPlayer;
if (videoPlayer != null) {
videoPlayer.pause();
}
}
public void resumeByRewind() {
VideoPlayer videoPlayer = this.audioPlayer;
if (videoPlayer == null || this.playingMessageObject == null || this.isPaused) {
return;
}
if (videoPlayer.isBuffering()) {
MessageObject messageObject = this.playingMessageObject;
cleanupPlayer(false, false);
playMessage(messageObject);
return;
}
this.audioPlayer.play();
}
public boolean convertVideo(final org.telegram.messenger.MediaController.VideoConvertMessage r39) {
throw new UnsupportedOperationException("Method not decompiled: org.telegram.messenger.MediaController.convertVideo(org.telegram.messenger.MediaController$VideoConvertMessage):boolean");
}
public static int getVideoBitrate(String path) {
int i;
MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
try {
mediaMetadataRetriever.setDataSource(path);
i = Integer.parseInt(mediaMetadataRetriever.extractMetadata(20));
} catch (Exception e) {
FileLog.e(e);
i = 0;
}
try {
mediaMetadataRetriever.release();
} catch (Throwable th) {
FileLog.e(th);
}
return i;
}
public static int makeVideoBitrate(int r5, int r6, int r7, int r8, int r9) {
throw new UnsupportedOperationException("Method not decompiled: org.telegram.messenger.MediaController.makeVideoBitrate(int, int, int, int, int):int");
}
public static int extractRealEncoderBitrate(int r4, int r5, int r6, boolean r7) {
throw new UnsupportedOperationException("Method not decompiled: org.telegram.messenger.MediaController.extractRealEncoderBitrate(int, int, int, boolean):int");
}
public boolean currentPlaylistIsGlobalSearch() {
return this.playlistGlobalSearchParams != null;
}
}