正在查看: Telegram v11.13.0 应用的 MediaController.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: Telegram v11.13.0 应用的 MediaController.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package org.telegram.messenger;
import android.animation.ValueAnimator;
import android.app.Activity;
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.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.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.ui.AspectRatioFrameLayout;
import j$.util.concurrent.ConcurrentHashMap;
import java.io.File;
import java.io.FileInputStream;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
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.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.Theme;
import org.telegram.ui.CastSync;
import org.telegram.ui.ChatActivity;
import org.telegram.ui.Components.PermissionRequest;
import org.telegram.ui.Components.PipRoundVideoView;
import org.telegram.ui.Components.VideoPlayer;
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;
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 boolean allowStartRecord;
private AudioInfo audioInfo;
private AudioRecord audioRecorder;
private boolean audioRecorderPaused;
private float audioVolume;
private ValueAnimator audioVolumeAnimator;
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 ignorePlayerUpdate;
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 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 long recordMonoForumPeerId;
private MessageSuggestionParams recordMonoForumSuggestionParams;
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 File recordingPrevAudioFile;
private boolean resumeAudioOnFocusGain;
public long samplesCount;
private SavedMusicPlaylistState savedMusicPlaylistState;
private float seekToProgressPending;
private int sendAfterDone;
private boolean sendAfterDoneNotify;
private boolean sendAfterDoneOnce;
private long sendAfterDonePayStars;
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;
public int writtenFrame;
AudioManager.OnAudioFocusChangeListener audioRecordFocusChangedListener = new MediaController$.ExternalSyntheticLambda48(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 = 48000;
private Runnable recordRunnable = new 2(this);
private final ValueAnimator.AnimatorUpdateListener audioVolumeUpdateListener = new 3(this);
static {
int i = Build.VERSION.SDK_INT;
projectionPhotos = new String[]{"_id", "bucket_id", "bucket_display_name", "_data", i > 28 ? "date_modified" : "datetaken", "orientation", "width", "height", "_size"};
projectionVideo = new String[]{"_id", "bucket_id", "bucket_display_name", "_data", i > 28 ? "date_modified" : "datetaken", "duration", "width", "height", "_size"};
cachedEncoderBitrates = new ConcurrentHashMap<>();
allMediaAlbums = new ArrayList<>();
allPhotoAlbums = new ArrayList<>();
}
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$.ExternalSyntheticLambda49(this));
Utilities.globalQueue.postRunnable(new MediaController$.ExternalSyntheticLambda50(this));
this.fileBuffer = ByteBuffer.allocateDirect(1920);
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda51(this));
this.mediaProjections = new String[]{"_data", "_display_name", "bucket_display_name", Build.VERSION.SDK_INT > 28 ? "date_modified" : "datetaken", "title", "width", "height"};
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);
}
}
private static void broadcastNewPhotos(int i, ArrayList<AlbumEntry> arrayList, ArrayList<AlbumEntry> arrayList2, Integer num, AlbumEntry albumEntry, AlbumEntry albumEntry2, AlbumEntry albumEntry3, int i2) {
Runnable runnable = broadcastPhotosRunnable;
if (runnable != null) {
AndroidUtilities.cancelRunOnUIThread(runnable);
}
MediaController$.ExternalSyntheticLambda10 externalSyntheticLambda10 = new MediaController$.ExternalSyntheticLambda10(i, arrayList, arrayList2, num, albumEntry, albumEntry2, albumEntry3);
broadcastPhotosRunnable = externalSyntheticLambda10;
AndroidUtilities.runOnUIThread(externalSyntheticLambda10, i2);
}
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;
}
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;
}
private void checkAudioFocus(MessageObject messageObject) {
int requestAudioFocus;
int i = (messageObject.isVoice() || messageObject.isRoundVideo()) ? this.useFrontSpeaker ? 3 : 2 : 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;
}
}
}
private void checkForegroundConvertMessage(boolean z) {
this.currentForegroundConvertingVideo = !this.foregroundConvertingMessages.isEmpty() ? this.foregroundConvertingMessages.get(0) : null;
if (this.currentForegroundConvertingVideo != null || z) {
VideoEncodingService.start(z);
}
}
public static void checkGallery() {
AlbumEntry albumEntry;
if (Build.VERSION.SDK_INT < 24 || (albumEntry = allPhotosAlbumEntry) == null) {
return;
}
Utilities.globalQueue.postRunnable(new MediaController$.ExternalSyntheticLambda28(albumEntry.photos.size()), 2000L);
}
private void checkIsNextMusicFileDownloaded(int i) {
int i2;
if (DownloadController.getInstance(i).canDownloadNextTrack()) {
ArrayList<MessageObject> arrayList = SharedConfig.shuffleMusic ? this.shuffledPlaylist : this.playlist;
if (arrayList != null) {
if (arrayList.size() < 2) {
return;
}
if (SharedConfig.playOrderReversed) {
i2 = this.currentPlaylistNum + 1;
if (i2 >= arrayList.size()) {
i2 = 0;
}
} else {
i2 = this.currentPlaylistNum - 1;
if (i2 < 0) {
i2 = arrayList.size() - 1;
}
}
if (i2 < 0 || i2 >= arrayList.size()) {
return;
}
MessageObject messageObject = arrayList.get(i2);
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(i).getPathToMessage(messageObject.messageOwner);
pathToMessage.exists();
if (pathToMessage == file || pathToMessage.exists() || !messageObject.isMusic()) {
return;
}
FileLoader.getInstance(i).loadFile(messageObject.getDocument(), messageObject, 0, messageObject.shouldEncryptPhotoOrVideo() ? 2 : 0);
}
}
}
private void checkIsNextVoiceFileDownloaded(int i) {
ArrayList<MessageObject> arrayList = this.voiceMessagesPlaylist;
if (arrayList != null) {
if (arrayList.size() < 2) {
return;
}
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(i).getPathToMessage(messageObject.messageOwner);
pathToMessage.exists();
if (pathToMessage == file || pathToMessage.exists()) {
return;
}
FileLoader.getInstance(i).loadFile(messageObject.getDocument(), messageObject, 0, messageObject.shouldEncryptPhotoOrVideo() ? 2 : 0);
}
}
private void checkScreenshots(ArrayList<Long> arrayList) {
if (arrayList == null || arrayList.isEmpty() || this.lastChatEnterTime == 0) {
return;
}
if (this.lastUser != null || (this.lastSecretChat instanceof TLRPC.TL_encryptedChat)) {
boolean z = false;
for (int i = 0; i < arrayList.size(); i++) {
Long l = arrayList.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);
}
}
}
}
private void clearMusicPlaylistState() {
this.savedMusicPlaylistState = 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;
this.savedMusicPlaylistState = null;
}
public boolean convertVideo(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 String copyFileToCache(Uri uri, String str) {
return copyFileToCache(uri, str, -1L);
}
public static java.lang.String copyFileToCache(android.net.Uri r14, java.lang.String r15, long r16) {
throw new UnsupportedOperationException("Method not decompiled: org.telegram.messenger.MediaController.copyFileToCache(android.net.Uri, java.lang.String, long):java.lang.String");
}
public static File createFileInCache(String str, String str2) {
File file;
try {
File sharingDirectory = AndroidUtilities.getSharingDirectory();
sharingDirectory.mkdirs();
if (AndroidUtilities.isInternalUri(Uri.fromFile(sharingDirectory))) {
return null;
}
int i = 0;
do {
File sharingDirectory2 = AndroidUtilities.getSharingDirectory();
if (i == 0) {
file = new File(sharingDirectory2, str);
} else {
int lastIndexOf = str.lastIndexOf(".");
if (lastIndexOf > 0) {
file = new File(sharingDirectory2, str.substring(0, lastIndexOf) + " (" + i + ")" + str.substring(lastIndexOf));
} else {
file = new File(sharingDirectory2, str + " (" + i + ")");
}
}
i++;
} while (file.exists());
return file;
} catch (Exception e) {
FileLog.e(e);
return null;
}
}
public static native boolean cropOpusFile(String str, String str2, long j, long j2);
public void didWriteData(VideoConvertMessage videoConvertMessage, File file, boolean z, long j, long j2, boolean z2, float f) {
VideoEditedInfo videoEditedInfo = videoConvertMessage.videoEditedInfo;
boolean z3 = videoEditedInfo.videoConvertFirstWrite;
if (z3) {
videoEditedInfo.videoConvertFirstWrite = false;
}
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda47(this, z2, z, videoConvertMessage, file, f, j, z3, j2));
}
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 static int findTrack(MediaExtractor mediaExtractor, boolean z) {
int trackCount = mediaExtractor.getTrackCount();
for (int i = 0; i < trackCount; i++) {
String string = mediaExtractor.getTrackFormat(i).getString("mime");
if (z) {
if (string.startsWith("audio/")) {
return i;
}
} else if (string.startsWith("video/")) {
return i;
}
}
return -5;
}
private boolean forbidRaiseToListen() {
try {
if (Build.VERSION.SDK_INT < 23) {
return NotificationsController.audioManager.isWiredHeadsetOn() || NotificationsController.audioManager.isBluetoothA2dpOn() || NotificationsController.audioManager.isBluetoothScoOn();
}
for (AudioDeviceInfo audioDeviceInfo : MediaController$.ExternalSyntheticApiModelOutline1.m(NotificationsController.audioManager, 2)) {
int m = MediaController$.ExternalSyntheticApiModelOutline2.m(audioDeviceInfo);
if ((m == 8 || m == 7 || m == 26 || m == 27 || m == 4 || m == 3) && MediaController$.ExternalSyntheticApiModelOutline3.m(audioDeviceInfo)) {
return true;
}
}
return false;
} catch (Exception e) {
FileLog.e(e);
return false;
}
}
public static String getFileName(Uri uri) {
if (uri == null) {
return "";
}
try {
String str = null;
if (uri.getScheme().equals("content")) {
try {
Cursor query = ApplicationLoader.applicationContext.getContentResolver().query(uri, new String[]{"_display_name"}, null, null, null);
try {
if (query.moveToFirst()) {
str = query.getString(query.getColumnIndex("_display_name"));
}
query.close();
} finally {
}
} catch (Exception e) {
FileLog.e(e);
}
}
if (str != null) {
return str;
}
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 MediaController getInstance() {
MediaController mediaController = Instance;
if (mediaController == null) {
synchronized (MediaController.class) {
try {
mediaController = Instance;
if (mediaController == null) {
mediaController = new MediaController();
Instance = mediaController;
}
} finally {
}
}
}
return mediaController;
}
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 int getVideoBitrate(String str) {
int i;
MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
try {
mediaMetadataRetriever.setDataSource(str);
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;
}
private static int getVideoBitrateWithFactor(float f) {
return (int) (f * 2000.0f * 1000.0f * 1.13f);
}
public static native byte[] getWaveform(String str);
public static boolean isGif(android.net.Uri r4) {
throw new UnsupportedOperationException("Method not decompiled: org.telegram.messenger.MediaController.isGif(android.net.Uri):boolean");
}
public static boolean isH264Video(String str) {
MediaExtractor mediaExtractor = new MediaExtractor();
boolean z = false;
try {
mediaExtractor.setDataSource(str);
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();
}
}
private boolean isNearToSensor(float f) {
return f < 5.0f && f != this.proximitySensor.getMaximumRange();
}
public static native int isOpusFile(String str);
private static boolean isRecognizedFormat(int i) {
if (i == 39 || i == 2130706688) {
return true;
}
switch (i) {
case 19:
case 20:
case 21:
return true;
default:
return false;
}
}
private boolean isSamePlayingMessage(MessageObject messageObject) {
MessageObject messageObject2 = this.playingMessageObject;
if (messageObject2 != null && messageObject2.getDialogId() == messageObject.getDialogId() && this.playingMessageObject.getId() == messageObject.getId()) {
return ((this.playingMessageObject.eventId > 0L ? 1 : (this.playingMessageObject.eventId == 0L ? 0 : -1)) == 0) == ((messageObject.eventId > 0L ? 1 : (messageObject.eventId == 0L ? 0 : -1)) == 0);
}
return false;
}
public static boolean isWebp(android.net.Uri r4) {
throw new UnsupportedOperationException("Method not decompiled: org.telegram.messenger.MediaController.isWebp(android.net.Uri):boolean");
}
public static native boolean joinOpusFiles(String str, String str2, String str3);
private File joinRecord() {
return joinRecord(this.recordingPrevAudioFile, this.recordingAudioFile, this.recordingAudio);
}
private File joinRecord(File file, File file2, TLRPC.TL_document tL_document) {
if (file != null && file2 != null) {
File file3 = new 14(this, FileLoader.getDirectory(1), System.currentTimeMillis() + "_" + FileLoader.getAttachFileName(tL_document));
if (joinOpusFiles(file.getAbsolutePath(), file2.getAbsolutePath(), file3.getAbsolutePath())) {
file2.delete();
if (file2 == this.recordingAudioFile) {
this.recordingAudioFile = file3;
}
file2 = file3;
}
file.delete();
if (file == this.recordingPrevAudioFile) {
this.recordingPrevAudioFile = null;
}
}
return file2;
}
public static void lambda$broadcastNewPhotos$53(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 static void lambda$checkGallery$1(int r17) {
throw new UnsupportedOperationException("Method not decompiled: org.telegram.messenger.MediaController.lambda$checkGallery$1(int):void");
}
public void lambda$cleanupPlayer$10(VideoPlayer videoPlayer, ValueAnimator valueAnimator) {
videoPlayer.setVolume((this.audioFocus != 1 ? VOLUME_NORMAL : VOLUME_DUCK) * ((Float) valueAnimator.getAnimatedValue()).floatValue());
}
public void lambda$didWriteData$54(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.getInstance(videoConvertMessage.currentAccount).postNotificationName(NotificationCenter.fileNewChunkAvailable, new Object[]{videoConvertMessage.messageObject, file.toString(), Long.valueOf(j2), Long.valueOf(z2 ? file.length() : 0L), Float.valueOf(f), Long.valueOf(j)});
}
public void lambda$generateWaveform$38(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 lambda$generateWaveform$39(String str, String str2, MessageObject messageObject) {
try {
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda7(this, str2, getWaveform(str), messageObject));
} catch (Exception e) {
FileLog.e(e);
}
}
public static int lambda$loadGalleryPhotosAlbums$51(PhotoEntry photoEntry, PhotoEntry photoEntry2) {
long j = photoEntry.dateTaken;
long j2 = photoEntry2.dateTaken;
if (j < j2) {
return 1;
}
return j > j2 ? -1 : 0;
}
public static void lambda$loadGalleryPhotosAlbums$52(int r55) {
throw new UnsupportedOperationException("Method not decompiled: org.telegram.messenger.MediaController.lambda$loadGalleryPhotosAlbums$52(int):void");
}
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 void lambda$loadMoreMusic$12(int i, int i2, TLObject tLObject, TLRPC.TL_error tL_error) {
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda58(this, i, tL_error, tLObject, i2));
}
public void lambda$new$0(int i) {
if (i != 1) {
this.hasRecordAudioFocus = false;
}
}
public void lambda$new$2() {
try {
this.sampleRate = 48000;
int minBufferSize = AudioRecord.getMinBufferSize(48000, 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 < 4; 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);
}
}
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 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 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$.ExternalSyntheticLambda5(accountInstance, tL_document));
} else {
if (z) {
return;
}
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda4(this, pathToAttach));
}
}
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});
}
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, MediaDataController.DraftVoice draftVoice) {
if (!file.exists() && BuildVars.DEBUG_VERSION) {
FileLog.e(new RuntimeException("file not found :( recordTimeCount " + this.recordTimeCount + " writedFrames" + this.writtenFrame));
}
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, Float.valueOf(draftVoice.left), Float.valueOf(draftVoice.right)});
}
public void lambda$prepareResumedRecording$25(int i, MediaDataController.DraftVoice draftVoice, int i2, long j, long j2, MessageSuggestionParams messageSuggestionParams, 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();
AutoDeleteMediaTask.lockFile(this.recordingAudioFile);
try {
this.audioRecorderPaused = true;
this.recordTimeCount = draftVoice.recordTimeCount;
this.writtenFrame = draftVoice.writedFrame;
this.samplesCount = draftVoice.samplesCount;
this.recordSamples = draftVoice.recordSamples;
this.recordDialogId = j;
this.recordMonoForumPeerId = j2;
this.recordMonoForumSuggestionParams = messageSuggestionParams;
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$.ExternalSyntheticLambda33(this, this.recordingAudioFile, this.recordingAudio, draftVoice));
} 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$.ExternalSyntheticLambda34(this, i2, j));
}
}
public void lambda$processMediaObserver$6(ArrayList arrayList) {
NotificationCenter.getInstance(this.lastChatAccount).postNotificationName(NotificationCenter.screenshotTook, new Object[0]);
checkScreenshots(arrayList);
}
public static void lambda$saveFile$44(boolean[] zArr, DialogInterface dialogInterface) {
zArr[0] = true;
}
public static void lambda$saveFile$45(boolean[] zArr, AlertDialog alertDialog) {
if (zArr[0]) {
return;
}
alertDialog.show();
}
public static void lambda$saveFile$46(AlertDialog alertDialog) {
try {
alertDialog.dismiss();
} catch (Exception e) {
FileLog.e(e);
}
}
public static void lambda$saveFile$47(AlertDialog alertDialog, int i) {
try {
alertDialog.setProgress(i);
} catch (Exception e) {
FileLog.e(e);
}
}
public static void lambda$saveFile$49(AlertDialog alertDialog, boolean[] zArr) {
try {
if (alertDialog.isShowing()) {
alertDialog.dismiss();
} else {
zArr[0] = true;
}
} catch (Exception e) {
FileLog.e(e);
}
}
public static void lambda$saveFile$50(int r24, java.io.File r25, java.lang.String r26, org.telegram.ui.ActionBar.AlertDialog r27, boolean[] r28, java.lang.String r29, org.telegram.messenger.Utilities.Callback r30, boolean[] r31) {
throw new UnsupportedOperationException("Method not decompiled: org.telegram.messenger.MediaController.lambda$saveFile$50(int, java.io.File, java.lang.String, org.telegram.ui.ActionBar.AlertDialog, boolean[], java.lang.String, org.telegram.messenger.Utilities$Callback, boolean[]):void");
}
public void lambda$setCurrentVideoVisible$14() {
cleanupPlayer(true, true);
}
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 void lambda$setTextureView$15() {
cleanupPlayer(true, true);
}
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) {
return Integer.compare(id, id2);
}
compare = Integer.compare(id2, id);
} else {
if (j == 0 || j != j2) {
return Integer.compare(id2, id);
}
compare = Integer.compare(id, id2);
}
return -compare;
}
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 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.recordStartError, new Object[]{Integer.valueOf(i2)});
}
public void lambda$startRecording$36(int i, int i2) {
this.recordStartRunnable = null;
NotificationCenter.getInstance(i).postNotificationName(NotificationCenter.recordStarted, new Object[]{Integer.valueOf(i2), Boolean.TRUE});
}
public void lambda$startRecording$37(int i, int i2, long j, long j2, MessageSuggestionParams messageSuggestionParams, MessageObject messageObject, MessageObject messageObject2, TL_stories.StoryItem storyItem, String str, int i3) {
MediaController$.ExternalSyntheticLambda39 externalSyntheticLambda42;
if (this.audioRecorder != null) {
externalSyntheticLambda42 = new MediaController$.ExternalSyntheticLambda39(this, i, i2);
} else {
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 17(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$.ExternalSyntheticLambda40(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 j3 = 0;
this.recordTimeCount = 0L;
this.writtenFrame = 0;
this.samplesCount = 0L;
this.recordDialogId = j;
this.recordMonoForumPeerId = j2;
this.recordMonoForumSuggestionParams = messageSuggestionParams;
if (messageObject != null) {
j3 = MessageObject.getTopicId(this.recordingCurrentAccount, messageObject.messageOwner, false);
}
this.recordTopicId = j3;
this.recordingCurrentAccount = i;
this.recordReplyingMsg = messageObject2;
this.recordReplyingTopMsg = messageObject;
this.recordReplyingStory = storyItem;
this.recordQuickReplyShortcut = str;
this.recordQuickReplyShortcutId = i3;
this.fileBuffer.rewind();
this.audioRecorder.startRecording();
this.recordQueue.postRunnable(this.recordRunnable);
externalSyntheticLambda42 = new MediaController$.ExternalSyntheticLambda41(this, i, i2);
} catch (Exception e) {
FileLog.e(e);
this.recordingAudio = null;
stopRecord();
AutoDeleteMediaTask.unlockFile(this.recordingAudioFile);
this.recordingAudioFile.delete();
this.recordingAudioFile = null;
File file = this.recordingPrevAudioFile;
if (file != null) {
file.delete();
this.recordingPrevAudioFile = null;
}
try {
this.audioRecorder.release();
this.audioRecorder = null;
} catch (Exception e2) {
FileLog.e(e2);
}
setBluetoothScoOn(false);
externalSyntheticLambda42 = new MediaController$.ExternalSyntheticLambda42(this, i, i2);
}
}
AndroidUtilities.runOnUIThread(externalSyntheticLambda42);
}
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 lambda$stopRecording$42(int i) {
NotificationCenter.getInstance(this.recordingCurrentAccount).postNotificationName(NotificationCenter.recordStopped, new Object[]{Integer.valueOf(this.recordingGuid), Integer.valueOf(i == 2 ? 1 : 0)});
}
public void lambda$stopRecording$43(int i, boolean z, int i2, boolean z2, long j) {
if (this.sendAfterDone == 3) {
this.sendAfterDone = 0;
stopRecordingInternal(i, z, i2, z2, j);
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;
this.sendAfterDonePayStars = j;
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, 0L);
}
try {
this.feedbackView.performHapticFeedback(3, 2);
} catch (Exception unused) {
}
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda52(this, i));
}
public void lambda$stopRecordingInternal$40(File file, TLRPC.TL_document tL_document, int i, boolean z, int i2, boolean z2, long j) {
boolean z3;
char c;
String str;
if (BuildVars.LOGS_ENABLED) {
StringBuilder sb = new StringBuilder();
sb.append("stop recording internal ");
if (file == null) {
str = "null";
} else {
str = file.exists() + " " + file.length() + " recordTimeCount " + this.recordTimeCount + " writedFrames" + this.writtenFrame;
}
sb.append(str);
FileLog.d(sb.toString());
}
if ((file == null || !file.exists()) && BuildVars.DEBUG_VERSION) {
FileLog.e(new RuntimeException("file not found :( recordTimeCount " + this.recordTimeCount + " writedFrames" + this.writtenFrame));
}
MediaDataController.getInstance(this.recordingCurrentAccount).pushDraftVoiceMessage(this.recordDialogId, this.recordTopicId, (MediaDataController.DraftVoice) null);
tL_document.date = ConnectionsManager.getInstance(this.recordingCurrentAccount).getCurrentTime();
tL_document.size = file == null ? 0L : (int) file.length();
TLRPC.DocumentAttribute tL_documentAttributeAudio = new TLRPC.TL_documentAttributeAudio();
tL_documentAttributeAudio.voice = true;
byte[] waveform = getWaveform(file.getAbsolutePath());
tL_documentAttributeAudio.waveform = waveform;
if (waveform != null) {
tL_documentAttributeAudio.flags |= 4;
}
long j2 = this.recordTimeCount;
double d = j2;
Double.isNaN(d);
tL_documentAttributeAudio.duration = d / 1000.0d;
tL_document.attributes.clear();
tL_document.attributes.add(tL_documentAttributeAudio);
if (j2 > 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.monoForumPeer = this.recordMonoForumPeerId;
of.suggestionParams = this.recordMonoForumSuggestionParams;
of.replyToStoryItem = this.recordReplyingStory;
of.quick_reply_shortcut = this.recordQuickReplyShortcut;
of.quick_reply_shortcut_id = this.recordQuickReplyShortcutId;
of.payStars = j;
SendMessagesHelper.getInstance(this.recordingCurrentAccount).sendMessage(of);
} else {
c = 1;
}
NotificationCenter notificationCenter = NotificationCenter.getInstance(this.recordingCurrentAccount);
int i3 = NotificationCenter.audioDidSent;
Integer valueOf = Integer.valueOf(this.recordingGuid);
TLRPC.TL_document tL_document2 = i == 2 ? tL_document : null;
String absolutePath = i == 2 ? file.getAbsolutePath() : null;
Object[] objArr = new Object[3];
z3 = false;
objArr[0] = valueOf;
objArr[c] = tL_document2;
objArr[2] = absolutePath;
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) j2)});
AutoDeleteMediaTask.unlockFile(file);
file.delete();
}
requestRecordAudioFocus(z3);
}
public void lambda$stopRecordingInternal$41(File file, File file2, TLRPC.TL_document tL_document, int i, boolean z, int i2, boolean z2, long j) {
stopRecord();
File joinRecord = joinRecord(file, file2, tL_document);
boolean z3 = BuildVars.LOGS_ENABLED;
if (joinRecord == null) {
if (z3) {
FileLog.d("stop recording recordingAudioFileToSend == null in queue");
return;
}
return;
}
if (z3) {
FileLog.d("stop recording internal in queue " + joinRecord.exists() + " " + joinRecord.length());
}
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda54(this, joinRecord, tL_document, i, z, i2, z2, j));
}
public void lambda$toggleRecordingPause$27(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.writtenFrame));
}
if (exists) {
MediaDataController.getInstance(this.recordingCurrentAccount).pushDraftVoiceMessage(this.recordDialogId, this.recordTopicId, MediaDataController.DraftVoice.of(this, file.getAbsolutePath(), z, 0.0f, VOLUME_NORMAL));
}
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;
byte[] waveform = getWaveform(file.getAbsolutePath());
tL_documentAttributeAudio.waveform = waveform;
if (waveform != 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()});
requestRecordAudioFocus(false);
}
public void lambda$toggleRecordingPause$28(boolean z) {
stopRecord();
TLRPC.TL_document tL_document = this.recordingAudio;
File joinRecord = joinRecord(this.recordingPrevAudioFile, this.recordingAudioFile, tL_document);
if (tL_document == null || joinRecord == null) {
return;
}
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda27(this, joinRecord, z, tL_document));
}
public void lambda$toggleRecordingPause$29() {
this.recordStartRunnable = null;
NotificationCenter.getInstance(this.recordingCurrentAccount).postNotificationName(NotificationCenter.recordStartError, new Object[]{Integer.valueOf(this.recordingGuid)});
}
public void lambda$toggleRecordingPause$30() {
requestRecordAudioFocus(true);
this.audioRecorder = new AudioRecord(0, this.sampleRate, 16, 2, this.recordBufferSize);
this.recordStartTime = System.currentTimeMillis();
this.writtenFrame = 0;
this.samplesCount = 0L;
this.fileBuffer.rewind();
this.audioRecorder.startRecording();
this.recordQueue.postRunnable(this.recordRunnable);
NotificationCenter.getInstance(this.recordingCurrentAccount).postNotificationName(NotificationCenter.recordResumed, new Object[0]);
}
public void lambda$toggleRecordingPause$31() {
this.recordingPrevAudioFile = this.recordingAudioFile;
16 r0 = new 16(this, FileLoader.getDirectory(1), System.currentTimeMillis() + "_" + FileLoader.getAttachFileName(this.recordingAudio));
this.recordingAudioFile = r0;
if (startRecord(r0.getPath(), this.sampleRate) != 0) {
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda32(this));
return;
}
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda31(this));
if (BuildVars.LOGS_ENABLED) {
FileLog.d("cant resume audio encoder");
}
}
public void lambda$toggleRecordingPause$32(boolean z) {
if (this.recordingAudio == null || this.recordingAudioFile == null) {
return;
}
boolean z2 = !this.audioRecorderPaused;
this.audioRecorderPaused = z2;
if (!z2) {
this.recordQueue.cancelRunnable(this.recordRunnable);
this.recordQueue.postRunnable(new MediaController$.ExternalSyntheticLambda56(this));
return;
}
AudioRecord audioRecord = this.audioRecorder;
if (audioRecord == null) {
return;
}
this.sendAfterDone = 4;
audioRecord.stop();
this.audioRecorder.release();
this.audioRecorder = null;
this.recordQueue.postRunnable(new MediaController$.ExternalSyntheticLambda55(this, z));
}
public void lambda$trimCurrentRecording$26(File file, long j, long j2, Runnable runnable) {
if (cropOpusFile(this.recordingAudioFile.getAbsolutePath(), file.getAbsolutePath(), j, j2)) {
File file2 = this.recordingAudioFile;
if (file2 != null) {
file2.delete();
}
this.recordingAudioFile = file;
this.recordTimeCount = j2 - j;
if (runnable != null) {
AndroidUtilities.runOnUIThread(runnable);
}
}
}
public static void loadGalleryPhotosAlbums(int i) {
Thread thread = new Thread((Runnable) new MediaController$.ExternalSyntheticLambda24(i));
thread.setPriority(1);
thread.start();
}
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 void playNextMessageWithoutOrder(boolean z) {
MessageObject messageObject;
int i;
ArrayList<MessageObject> arrayList = SharedConfig.shuffleMusic ? this.shuffledPlaylist : this.playlist;
if (!z || (!((i = SharedConfig.repeatMode) == 2 || (i == 1 && arrayList.size() == 1)) || this.forceLoopCurrentPlaylist)) {
if (traversePlaylist(arrayList, SharedConfig.playOrderReversed ? 1 : -1) && z && 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;
messageObject = arrayList.get(this.currentPlaylistNum);
} else {
cleanupPlayer(false, false);
messageObject = arrayList.get(this.currentPlaylistNum);
messageObject.audioProgress = 0.0f;
messageObject.audioProgressSec = 0;
}
playMessage(messageObject);
}
public void processMediaObserver(android.net.Uri r14) {
throw new UnsupportedOperationException("Method not decompiled: org.telegram.messenger.MediaController.processMediaObserver(android.net.Uri):void");
}
private void raiseToSpeakUpdated(boolean z) {
if (this.recordingAudio != null) {
toggleRecordingPause(false);
return;
}
if (!z) {
stopRecording(2, false, 0, false, 0L);
return;
}
int currentAccount = this.raiseChat.getCurrentAccount();
long dialogId = this.raiseChat.getDialogId();
MessageObject threadMessage = this.raiseChat.getThreadMessage();
int classGuid = this.raiseChat.getClassGuid();
ChatActivity chatActivity = this.raiseChat;
String str = chatActivity != null ? chatActivity.quickReplyShortcut : null;
int quickReplyId = chatActivity != null ? chatActivity.getQuickReplyId() : 0;
ChatActivity chatActivity2 = this.raiseChat;
long sendMonoForumPeerId = chatActivity2 != null ? chatActivity2.getSendMonoForumPeerId() : 0L;
ChatActivity chatActivity3 = this.raiseChat;
startRecording(currentAccount, dialogId, null, threadMessage, null, classGuid, false, str, quickReplyId, sendMonoForumPeerId, chatActivity3 != null ? chatActivity3.getSendMessageSuggestionParams() : null);
}
public boolean restoreMusicPlaylistState() {
MessageObject messageObject;
SavedMusicPlaylistState savedMusicPlaylistState = this.savedMusicPlaylistState;
if (savedMusicPlaylistState == null) {
return false;
}
this.savedMusicPlaylistState = null;
ArrayList<MessageObject> arrayList = SharedConfig.shuffleMusic ? this.shuffledPlaylist : this.playlist;
if (arrayList == null || (messageObject = arrayList.get(this.currentPlaylistNum)) == null || messageObject.getDialogId() != savedMusicPlaylistState.playingMessage.getDialogId() || messageObject.getId() != savedMusicPlaylistState.playingMessage.getId()) {
return false;
}
this.playMusicAgain = false;
float f = savedMusicPlaylistState.progress;
messageObject.forceSeekTo = f;
messageObject.audioProgress = f;
messageObject.audioProgressMs = savedMusicPlaylistState.progressMs;
messageObject.audioProgressSec = savedMusicPlaylistState.progressSec;
playMessage(messageObject);
pauseMessage(messageObject, false);
return true;
}
private boolean resumeAudio(org.telegram.messenger.MessageObject r6) {
throw new UnsupportedOperationException("Method not decompiled: org.telegram.messenger.MediaController.resumeAudio(org.telegram.messenger.MessageObject):boolean");
}
public static void saveFile(String str, Context context, int i, String str2, String str3) {
saveFile(str, context, i, str2, str3, null);
}
public static void saveFile(String str, Context context, int i, String str2, String str3, Utilities.Callback<Uri> callback) {
saveFile(str, context, i, str2, str3, callback, true);
}
public static void saveFile(java.lang.String r15, android.content.Context r16, int r17, java.lang.String r18, java.lang.String r19, org.telegram.messenger.Utilities.Callback<android.net.Uri> r20, boolean r21) {
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 Uri saveFileInternal(int i, File file, String str) {
Uri contentUri;
try {
ContentValues contentValues = new ContentValues();
String fileExtension = FileLoader.getFileExtension(file);
String mimeTypeFromExtension = fileExtension != null ? MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileExtension) : null;
if ((i == 0 || i == 1) && mimeTypeFromExtension != null) {
if (mimeTypeFromExtension.startsWith("image")) {
i = 0;
}
if (mimeTypeFromExtension.startsWith("video")) {
i = 1;
}
}
if (i == 0) {
if (str == null) {
str = AndroidUtilities.generateFileName(0, fileExtension);
}
contentUri = MediaStore.Images.Media.getContentUri("external_primary");
contentValues.put("relative_path", new File(Environment.DIRECTORY_PICTURES, "Telegram") + File.separator);
contentValues.put("_display_name", str);
contentValues.put("mime_type", mimeTypeFromExtension);
} else {
if (i == 1) {
if (str == null) {
str = AndroidUtilities.generateFileName(1, fileExtension);
}
contentValues.put("relative_path", new File(Environment.DIRECTORY_MOVIES, "Telegram") + File.separator);
contentUri = MediaStore.Video.Media.getContentUri("external_primary");
} else if (i == 2) {
if (str == null) {
str = file.getName();
}
contentValues.put("relative_path", new File(Environment.DIRECTORY_DOWNLOADS, "Telegram") + File.separator);
contentUri = MediaController$.ExternalSyntheticApiModelOutline0.m("external_primary");
} else {
if (str == null) {
str = file.getName();
}
contentValues.put("relative_path", new File(Environment.DIRECTORY_MUSIC, "Telegram") + File.separator);
contentUri = MediaStore.Audio.Media.getContentUri("external_primary");
}
contentValues.put("_display_name", str);
}
contentValues.put("mime_type", mimeTypeFromExtension);
Uri insert = ApplicationLoader.applicationContext.getContentResolver().insert(contentUri, contentValues);
if (insert != null) {
FileInputStream fileInputStream = new FileInputStream(file);
AndroidUtilities.copyFile(fileInputStream, ApplicationLoader.applicationContext.getContentResolver().openOutputStream(insert));
fileInputStream.close();
}
return insert;
} catch (Exception e) {
FileLog.e(e);
return null;
}
}
public static void saveFilesFromMessages(Context context, AccountInstance accountInstance, ArrayList<MessageObject> arrayList, MessagesStorage.IntCallback intCallback) {
if (arrayList == null || arrayList.isEmpty()) {
return;
}
new MediaLoader(context, accountInstance, arrayList, intCallback).start();
}
private boolean saveMusicPlaylistStateIfNeeded() {
MessageObject messageObject = this.playingMessageObject;
if (messageObject == null || !messageObject.isMusic() || this.playlist.isEmpty()) {
return this.savedMusicPlaylistState != null;
}
this.savedMusicPlaylistState = new SavedMusicPlaylistState(this.playingMessageObject);
return true;
}
public static MediaCodecInfo selectCodec(String str) {
int codecCount = MediaCodecList.getCodecCount();
MediaCodecInfo mediaCodecInfo = null;
for (int i = 0; i < codecCount; i++) {
MediaCodecInfo codecInfoAt = MediaCodecList.getCodecInfoAt(i);
if (codecInfoAt.isEncoder()) {
for (String str2 : codecInfoAt.getSupportedTypes()) {
if (str2.equalsIgnoreCase(str)) {
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;
}
public static int selectColorFormat(MediaCodecInfo mediaCodecInfo, String str) {
int i;
MediaCodecInfo.CodecCapabilities capabilitiesForType = mediaCodecInfo.getCapabilitiesForType(str);
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 (!mediaCodecInfo.getName().equals("OMX.SEC.AVC.Encoder") || i != 19) {
break;
}
i3 = i;
}
i2++;
}
return i;
}
private void setBluetoothScoOn(boolean z) {
AudioManager audioManager = (AudioManager) ApplicationLoader.applicationContext.getSystemService("audio");
if (SharedConfig.recordViaSco && !PermissionRequest.hasPermission("android.permission.BLUETOOTH_CONNECT")) {
SharedConfig.recordViaSco = false;
SharedConfig.saveConfig();
}
if (!(audioManager.isBluetoothScoAvailableOffCall() && SharedConfig.recordViaSco) && z) {
return;
}
BluetoothAdapter defaultAdapter = BluetoothAdapter.getDefaultAdapter();
if (defaultAdapter != null) {
try {
if (defaultAdapter.getProfileConnectionState(1) != 2) {
}
if (!z && !audioManager.isBluetoothScoOn()) {
audioManager.startBluetoothSco();
return;
} else if (z && audioManager.isBluetoothScoOn()) {
audioManager.stopBluetoothSco();
return;
}
} catch (SecurityException unused) {
return;
} catch (Throwable th) {
FileLog.e(th);
return;
}
}
if (z) {
return;
}
if (!z) {
}
if (z) {
}
}
public void setPlayerVolume() {
try {
float f = 0.0f;
float f2 = this.isSilent ? 0.0f : this.audioFocus != 1 ? VOLUME_NORMAL : VOLUME_DUCK;
VideoPlayer videoPlayer = this.audioPlayer;
if (videoPlayer == null) {
videoPlayer = this.videoPlayer;
if (videoPlayer == null) {
return;
}
if (!CastSync.isActive()) {
f = f2;
}
} else if (!CastSync.isActive()) {
f = this.audioVolume * f2;
}
videoPlayer.setVolume(f);
} catch (Exception e) {
FileLog.e(e);
}
}
private void setUseFrontSpeaker(boolean z) {
boolean z2;
this.useFrontSpeaker = z;
AudioManager audioManager = NotificationsController.audioManager;
if (z) {
z2 = false;
audioManager.setBluetoothScoOn(false);
} else {
z2 = true;
}
audioManager.setSpeakerphoneOn(z2);
}
private void sortPlaylist() {
Collections.sort(this.playlist, new MediaController$.ExternalSyntheticLambda44());
}
private void startAudioAgain(boolean z) {
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 (z) {
lambda$startAudioAgain$7(this.playingMessageObject);
return;
}
if (this.videoPlayer.getCurrentPosition() < 1000) {
this.videoPlayer.seekTo(0L);
}
this.videoPlayer.play();
return;
}
VideoPlayer videoPlayer2 = this.audioPlayer;
boolean z2 = videoPlayer2 != null;
MessageObject messageObject2 = this.playingMessageObject;
float f = messageObject2.audioProgress;
int i = messageObject2.audioPlayerDuration;
if (z || videoPlayer2 == null || !videoPlayer2.isPlaying() || i * f > VOLUME_NORMAL) {
messageObject2.audioProgress = f;
} else {
messageObject2.audioProgress = 0.0f;
}
cleanupPlayer(false, true);
playMessage(messageObject2);
if (z) {
if (z2) {
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda45(this, messageObject2), 100L);
} else {
lambda$startAudioAgain$7(messageObject2);
}
}
}
private void startProgressTimer(MessageObject messageObject) {
synchronized (this.progressTimerSync) {
Timer timer = this.progressTimer;
if (timer != null) {
try {
timer.cancel();
this.progressTimer = null;
} catch (Exception e) {
FileLog.e(e);
}
}
messageObject.getFileName();
Timer timer2 = new Timer();
this.progressTimer = timer2;
timer2.schedule((TimerTask) new 5(this, messageObject), 0L, 17L);
}
}
private native int startRecord(String str, int i);
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) {
try {
videoEditedInfo.canceled = false;
} catch (Throwable th) {
throw th;
}
}
}
VideoConvertRunnable.runConversion(videoConvertMessage);
return true;
}
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);
}
}
}
}
private native void stopRecord();
public void stopRecordingInternal(int i, boolean z, int i2, boolean z2, long j) {
File file;
if (i == 0 || (file = this.recordingAudioFile) == null) {
AutoDeleteMediaTask.unlockFile(this.recordingAudioFile);
File file2 = this.recordingAudioFile;
if (file2 != null) {
file2.delete();
}
requestRecordAudioFocus(false);
} else {
TLRPC.TL_document tL_document = this.recordingAudio;
File file3 = this.recordingPrevAudioFile;
if (BuildVars.LOGS_ENABLED) {
FileLog.d("stop recording internal filename " + this.recordingAudioFile.getPath());
}
this.fileEncodingQueue.postRunnable(new MediaController$.ExternalSyntheticLambda26(this, file3, file, tL_document, i, z, i2, z2, j));
}
try {
AudioRecord audioRecord = this.audioRecorder;
if (audioRecord != null) {
audioRecord.release();
this.audioRecorder = null;
}
} catch (Exception e) {
FileLog.e(e);
}
this.recordingAudio = null;
this.recordingPrevAudioFile = null;
this.recordingAudioFile = null;
this.manualRecording = false;
this.raiseToEarRecord = false;
this.ignoreOnPause = false;
}
private boolean traversePlaylist(ArrayList<MessageObject> arrayList, int i) {
MessageObject messageObject;
int i2;
MessageObject messageObject2;
int i3 = this.currentPlaylistNum;
boolean z = ConnectionsManager.getInstance(UserConfig.selectedAccount).getConnectionState() == 2;
this.currentPlaylistNum += i;
if (z) {
while (this.currentPlaylistNum < arrayList.size() && (i2 = this.currentPlaylistNum) >= 0 && ((messageObject2 = arrayList.get(i2)) == null || !messageObject2.mediaExists)) {
this.currentPlaylistNum += i;
}
}
if (this.currentPlaylistNum < arrayList.size() && this.currentPlaylistNum >= 0) {
return false;
}
this.currentPlaylistNum = this.currentPlaylistNum >= arrayList.size() ? 0 : arrayList.size() - 1;
if (!z) {
return true;
}
while (true) {
int i4 = this.currentPlaylistNum;
if (i4 < 0 || i4 >= arrayList.size()) {
break;
}
int i5 = this.currentPlaylistNum;
if (i > 0) {
if (i5 > i3) {
break;
}
messageObject = arrayList.get(this.currentPlaylistNum);
if (messageObject == null && messageObject.mediaExists) {
break;
}
this.currentPlaylistNum += i;
} else {
if (i5 < i3) {
break;
}
messageObject = arrayList.get(this.currentPlaylistNum);
if (messageObject == null) {
}
this.currentPlaylistNum += i;
}
}
if (this.currentPlaylistNum < arrayList.size() && this.currentPlaylistNum >= 0) {
return true;
}
this.currentPlaylistNum = this.currentPlaylistNum < arrayList.size() ? arrayList.size() - 1 : 0;
return true;
}
public void updateVideoState(MessageObject messageObject, int[] iArr, boolean z, boolean z2, int i) {
MessageObject messageObject2;
if (this.videoPlayer == null) {
return;
}
try {
if (i == 4 || i == 1) {
this.baseActivity.getWindow().clearFlags(ConnectionsManager.RequestFlagNeedQuickAck);
} else {
this.baseActivity.getWindow().addFlags(ConnectionsManager.RequestFlagNeedQuickAck);
}
} catch (Exception e) {
FileLog.e(e);
}
if (i == 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 (i == 2) {
if (!z2 || (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() && i == 4) {
MessageObject messageObject4 = this.playingMessageObject;
if (messageObject4 == null || !messageObject4.isVideo() || z || (iArr != null && iArr[0] >= 4)) {
if (restoreMusicPlaylistState()) {
return;
}
cleanupPlayer(true, hasNoNextVoiceOrRoundVideoMessage(), true, false);
} else {
this.videoPlayer.seekTo(0L);
if (iArr != null) {
iArr[0] = iArr[0] + 1;
}
}
}
}
public native int writeFrame(ByteBuffer byteBuffer, int i);
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;
}
}
}
}
protected void checkIsNextMediaFileDownloaded() {
MessageObject messageObject = this.playingMessageObject;
if (messageObject == null || !messageObject.isMusic()) {
return;
}
checkIsNextMusicFileDownloaded(this.playingMessageObject.currentAccount);
}
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) {
}
}
public void cleanRecording(boolean z) {
File file;
File file2;
this.recordingAudio = null;
AutoDeleteMediaTask.unlockFile(this.recordingAudioFile);
if (z && (file2 = this.recordingAudioFile) != null) {
try {
file2.delete();
} catch (Exception e) {
FileLog.e(e);
}
}
this.recordingAudioFile = null;
if (z && (file = this.recordingPrevAudioFile) != null) {
file.delete();
}
this.recordingPrevAudioFile = null;
this.manualRecording = false;
this.raiseToEarRecord = false;
this.ignoreOnPause = false;
}
public void cleanup() {
cleanupPlayer(true, true);
this.audioInfo = null;
this.playMusicAgain = false;
for (int i = 0; i < 4; i++) {
DownloadController.getInstance(i).cleanup();
}
this.videoConvertQueue.clear();
this.generatingWaveform.clear();
this.savedMusicPlaylistState = null;
this.voiceMessagesPlaylist = null;
this.voiceMessagesPlaylistMap = null;
clearPlaylist();
cancelVideoConvert(null);
}
public void cleanupPlayer(boolean z, boolean z2) {
cleanupPlayer(z, z2, 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 boolean currentPlaylistIsGlobalSearch() {
return this.playlistGlobalSearchParams != null;
}
@Override
public void didReceivedNotification(int i, int i2, Object... objArr) {
ArrayList<MessageObject> arrayList;
int indexOf;
int i3 = 0;
if (i == NotificationCenter.fileLoaded || i == NotificationCenter.httpFileDidLoad) {
String str = (String) objArr[0];
MessageObject messageObject = this.playingMessageObject;
if (messageObject != null && messageObject.currentAccount == i2 && 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 (i == NotificationCenter.messagesDeleted) {
if (((Boolean) objArr[2]).booleanValue()) {
return;
}
long longValue = ((Long) objArr[1]).longValue();
ArrayList arrayList2 = (ArrayList) objArr[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 (i3 < arrayList2.size()) {
Integer num = (Integer) arrayList2.get(i3);
MessageObject messageObject3 = this.voiceMessagesPlaylistMap.get(num.intValue());
this.voiceMessagesPlaylistMap.remove(num.intValue());
if (messageObject3 != null) {
this.voiceMessagesPlaylist.remove(messageObject3);
}
i3++;
}
return;
}
if (i == NotificationCenter.removeAllMessagesFromDialog) {
long longValue2 = ((Long) objArr[0]).longValue();
MessageObject messageObject4 = this.playingMessageObject;
if (messageObject4 == null || messageObject4.getDialogId() != longValue2) {
return;
}
cleanupPlayer(false, true);
return;
}
if (i == NotificationCenter.musicDidLoad) {
long longValue3 = ((Long) objArr[0]).longValue();
MessageObject messageObject5 = this.playingMessageObject;
if (messageObject5 == null || !messageObject5.isMusic() || this.playingMessageObject.getDialogId() != longValue3 || this.playingMessageObject.scheduled) {
return;
}
ArrayList arrayList4 = (ArrayList) objArr[1];
ArrayList arrayList5 = (ArrayList) objArr[2];
this.playlist.addAll(0, arrayList4);
this.playlist.addAll(arrayList5);
int size = this.playlist.size();
for (int i4 = 0; i4 < size; i4++) {
MessageObject messageObject6 = this.playlist.get(i4);
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 (i != NotificationCenter.mediaDidLoad) {
if (i != NotificationCenter.didReceiveNewMessages) {
if (i != NotificationCenter.playerDidStartPlaying || isCurrentPlayer((VideoPlayer) objArr[0])) {
return;
}
MessageObject playingMessageObject = getPlayingMessageObject();
if (playingMessageObject != null && isPlayingMessage(playingMessageObject) && !isMessagePaused() && (playingMessageObject.isMusic() || playingMessageObject.isVoice())) {
this.wasPlayingAudioBeforePause = true;
}
lambda$startAudioAgain$7(playingMessageObject);
return;
}
if (((Boolean) objArr[2]).booleanValue() || (arrayList = this.voiceMessagesPlaylist) == null || arrayList.isEmpty() || ((Long) objArr[0]).longValue() != this.voiceMessagesPlaylist.get(0).getDialogId()) {
return;
}
ArrayList arrayList6 = (ArrayList) objArr[1];
while (i3 < arrayList6.size()) {
MessageObject messageObject8 = (MessageObject) arrayList6.get(i3);
if ((messageObject8.isVoice() || messageObject8.isRoundVideo()) && !messageObject8.isVoiceOnce() && !messageObject8.isRoundOnce() && (!this.voiceMessagesPlaylistUnread || (messageObject8.isContentUnread() && !messageObject8.isOut()))) {
this.voiceMessagesPlaylist.add(messageObject8);
this.voiceMessagesPlaylistMap.put(messageObject8.getId(), messageObject8);
}
i3++;
}
return;
}
if (((Integer) objArr[3]).intValue() != this.playlistClassGuid || this.playingMessageObject == null) {
return;
}
long longValue4 = ((Long) objArr[0]).longValue();
((Integer) objArr[4]).intValue();
ArrayList arrayList7 = (ArrayList) objArr[2];
DialogObject.isEncryptedDialog(longValue4);
char c = longValue4 == this.playlistMergeDialogId ? (char) 1 : (char) 0;
if (!arrayList7.isEmpty()) {
this.playlistEndReached[c] = ((Boolean) objArr[5]).booleanValue();
}
int i5 = 0;
for (int i6 = 0; i6 < arrayList7.size(); i6++) {
MessageObject messageObject9 = (MessageObject) arrayList7.get(i6);
if (!messageObject9.isVoiceOnce() && !this.playlistMap.containsKey(Integer.valueOf(messageObject9.getId()))) {
i5++;
this.playlist.add(0, messageObject9);
this.playlistMap.put(Integer.valueOf(messageObject9.getId()), messageObject9);
int[] iArr2 = this.playlistMaxId;
iArr2[c] = Math.min(iArr2[c], messageObject9.getId());
}
}
sortPlaylist();
int indexOf2 = this.playlist.indexOf(this.playingMessageObject);
if (indexOf2 >= 0) {
this.currentPlaylistNum = indexOf2;
}
this.loadingPlaylist = false;
if (SharedConfig.shuffleMusic) {
buildShuffledPlayList();
}
if (i5 != 0) {
NotificationCenter.getInstance(this.playingMessageObject.currentAccount).postNotificationName(NotificationCenter.moreMusicDidLoad, new Object[]{Integer.valueOf(i5)});
}
}
public boolean findMessageInPlaylistAndPlay(MessageObject messageObject) {
int indexOf = this.playlist.indexOf(messageObject);
if (indexOf == -1) {
return playMessage(messageObject);
}
playMessageAtIndex(indexOf);
return 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$.ExternalSyntheticLambda15(this, absolutePath, str, messageObject));
}
public AudioInfo getAudioInfo() {
return this.audioInfo;
}
public org.telegram.messenger.chromecast.ChromecastMediaVariations getCurrentChromecastMedia() {
throw new UnsupportedOperationException("Method not decompiled: org.telegram.messenger.MediaController.getCurrentChromecastMedia():org.telegram.messenger.chromecast.ChromecastMediaVariations");
}
public VideoConvertMessage getCurrentForegroundConverMessage() {
return this.currentForegroundConvertingVideo;
}
public long getCurrentPosition() {
MessageObject messageObject = this.playingMessageObject;
if (messageObject == null) {
return -1L;
}
return getProgressMs(messageObject);
}
public long getDuration() {
VideoPlayer videoPlayer = this.audioPlayer;
if (videoPlayer == null) {
return 0L;
}
return videoPlayer.getDuration();
}
public float getFastPlaybackSpeed(boolean z) {
return z ? this.fastMusicPlaybackSpeed : this.fastPlaybackSpeed;
}
public float getPlaybackSpeed(boolean z) {
return z ? this.currentMusicPlaybackSpeed : this.currentPlaybackSpeed;
}
public MessageObject getPlayingMessageObject() {
return this.playingMessageObject;
}
public int getPlayingMessageObjectNum() {
return this.currentPlaylistNum;
}
public ArrayList<MessageObject> getPlaylist() {
return this.playlist;
}
public long getProgressMs(MessageObject messageObject) {
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) {
return videoPlayer.getCurrentPosition();
}
VideoPlayer videoPlayer2 = this.videoPlayer;
if (videoPlayer2 != null) {
return videoPlayer2.getCurrentPosition();
}
} catch (Exception unused) {
}
}
return -1L;
}
public VideoPlayer getVideoPlayer() {
return this.videoPlayer;
}
public native byte[] getWaveform2(short[] sArr, int i);
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 injectVideoPlayer(VideoPlayer videoPlayer, MessageObject messageObject) {
if (videoPlayer == null || messageObject == null) {
return;
}
FileLoader.getInstance(messageObject.currentAccount).setLoadingVideoForPlayer(messageObject.getDocument(), true);
this.playerWasReady = false;
clearPlaylist();
this.videoPlayer = videoPlayer;
this.playingMessageObject = messageObject;
int i = this.playerNum + 1;
this.playerNum = i;
videoPlayer.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 boolean isBuffering() {
VideoPlayer videoPlayer = this.audioPlayer;
if (videoPlayer != null) {
return videoPlayer.isBuffering();
}
return false;
}
public boolean isCurrentPlayer(VideoPlayer videoPlayer) {
return this.videoPlayer == videoPlayer || this.audioPlayer == videoPlayer;
}
public boolean isDownloadingCurrentMessage() {
return this.downloadingCurrentMessage;
}
public boolean isGoingToShowMessageObject(MessageObject messageObject) {
return this.goingToShowMessageObject == messageObject;
}
public boolean isMessagePaused() {
return this.isPaused || this.downloadingCurrentMessage;
}
public boolean isPiPShown() {
return this.pipRoundVideoView != null;
}
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) || isSamePlayingMessage(messageObject)) {
return !this.downloadingCurrentMessage;
}
}
return false;
}
public boolean isPlayingMessageAndReadyToDraw(MessageObject messageObject) {
return this.isDrawingWasReady && isPlayingMessage(messageObject);
}
protected boolean isRecordingAudio() {
return (this.recordStartRunnable == null && this.recordingAudio == null) ? false : true;
}
public boolean isRecordingOrListeningByProximity() {
MessageObject messageObject;
return this.proximityTouched && (isRecordingAudio() || ((messageObject = this.playingMessageObject) != null && (messageObject.isVoice() || this.playingMessageObject.isRoundVideo())));
}
public boolean isRecordingPaused() {
return this.audioRecorderPaused;
}
public boolean isStreamingCurrentAudio() {
return this.isStreamingCurrentAudio;
}
public boolean isVideoDrawingReady() {
AspectRatioFrameLayout aspectRatioFrameLayout = this.currentAspectRatioFrameLayout;
return aspectRatioFrameLayout != null && aspectRatioFrameLayout.isDrawingReady();
}
public void loadMoreMusic() {
throw new UnsupportedOperationException("Method not decompiled: org.telegram.messenger.MediaController.loadMoreMusic():void");
}
@Override
public void onAccuracyChanged(Sensor sensor, int i) {
}
@Override
public void onAudioFocusChange(int i) {
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda18(this, i));
}
@Override
public void onSensorChanged(android.hardware.SensorEvent r17) {
throw new UnsupportedOperationException("Method not decompiled: org.telegram.messenger.MediaController.onSensorChanged(android.hardware.SensorEvent):void");
}
public void pauseByRewind() {
VideoPlayer videoPlayer = this.audioPlayer;
if (videoPlayer != null) {
videoPlayer.pause();
}
}
public boolean lambda$startAudioAgain$7(MessageObject messageObject) {
return pauseMessage(messageObject, true);
}
public boolean pauseMessage(org.telegram.messenger.MessageObject r6, boolean r7) {
throw new UnsupportedOperationException("Method not decompiled: org.telegram.messenger.MediaController.pauseMessage(org.telegram.messenger.MessageObject, boolean):boolean");
}
public void playEmojiSound(AccountInstance accountInstance, String str, MessagesController.EmojiSound emojiSound, boolean z) {
if (emojiSound == null) {
return;
}
Utilities.stageQueue.postRunnable(new MediaController$.ExternalSyntheticLambda9(this, emojiSound, accountInstance, z));
}
public boolean playMessage(MessageObject messageObject) {
return playMessage(messageObject, false);
}
public boolean playMessage(org.telegram.messenger.MessageObject r41, boolean r42) {
throw new UnsupportedOperationException("Method not decompiled: org.telegram.messenger.MediaController.playMessage(org.telegram.messenger.MessageObject, boolean):boolean");
}
public void playMessageAtIndex(int i) {
int i2 = this.currentPlaylistNum;
if (i2 < 0 || i2 >= this.playlist.size()) {
return;
}
this.currentPlaylistNum = i;
this.playMusicAgain = true;
MessageObject messageObject = this.playlist.get(i);
if (this.playingMessageObject != null && !isSamePlayingMessage(messageObject)) {
this.playingMessageObject.resetPlayingProgress();
}
playMessage(messageObject);
}
public void playNextMessage() {
playNextMessageWithoutOrder(false);
}
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));
}
public void prepareResumedRecording(int i, MediaDataController.DraftVoice draftVoice, long j, MessageObject messageObject, MessageObject messageObject2, TL_stories.StoryItem storyItem, int i2, String str, int i3, long j2, MessageSuggestionParams messageSuggestionParams) {
this.manualRecording = false;
requestRecordAudioFocus(true);
this.recordQueue.cancelRunnable(this.recordStartRunnable);
this.recordQueue.postRunnable(new MediaController$.ExternalSyntheticLambda16(this, i2, draftVoice, i, j, j2, messageSuggestionParams, messageObject2, messageObject, storyItem, str, i3));
}
public void requestRecordAudioFocus(boolean z) {
if (!z) {
if (this.hasRecordAudioFocus) {
NotificationsController.audioManager.abandonAudioFocus(this.audioRecordFocusChangedListener);
this.hasRecordAudioFocus = false;
return;
}
return;
}
if (!this.hasRecordAudioFocus && SharedConfig.pauseMusicOnRecord && NotificationsController.audioManager.requestAudioFocus(this.audioRecordFocusChangedListener, 3, 2) == 1) {
this.hasRecordAudioFocus = true;
}
}
public void resetGoingToShowMessageObject() {
this.goingToShowMessageObject = null;
}
public void resumeByRewind() {
VideoPlayer videoPlayer = this.audioPlayer;
if (videoPlayer == null || this.playingMessageObject == null || this.isPaused) {
return;
}
if (!videoPlayer.isBuffering()) {
this.audioPlayer.play();
return;
}
MessageObject messageObject = this.playingMessageObject;
cleanupPlayer(false, false);
playMessage(messageObject);
}
public void scheduleVideoConvert(MessageObject messageObject) {
scheduleVideoConvert(messageObject, false, true, false);
}
public boolean scheduleVideoConvert(MessageObject messageObject, boolean z, boolean z2, boolean z3) {
if (messageObject == null || messageObject.videoEditedInfo == null) {
return false;
}
if (z && !this.videoConvertQueue.isEmpty()) {
return false;
}
if (z) {
new File(messageObject.messageOwner.attachPath).delete();
}
VideoConvertMessage videoConvertMessage = new VideoConvertMessage(messageObject, messageObject.videoEditedInfo, z2, z3);
this.videoConvertQueue.add(videoConvertMessage);
if (videoConvertMessage.foreground) {
this.foregroundConvertingMessages.add(videoConvertMessage);
checkForegroundConvertMessage(false);
}
if (this.videoConvertQueue.size() == 1) {
startVideoConvertFromQueue();
}
return true;
}
public boolean seekToProgress(MessageObject messageObject, float f) {
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 = f;
} else {
messageObject2.audioProgress = f;
long j = (int) (duration * f);
this.audioPlayer.seekTo(j);
this.lastProgress = j;
if (!this.ignorePlayerUpdate) {
CastSync.seekTo(j);
}
}
} else {
VideoPlayer videoPlayer2 = this.videoPlayer;
if (videoPlayer2 != null) {
videoPlayer2.seekTo((long) (videoPlayer2.getDuration() * f));
if (!this.ignorePlayerUpdate) {
CastSync.seekTo((long) (this.videoPlayer.getDuration() * f));
}
}
}
NotificationCenter.getInstance(messageObject.currentAccount).postNotificationName(NotificationCenter.messagePlayingDidSeek, new Object[]{Integer.valueOf(messageObject2.getId()), Float.valueOf(f)});
return true;
} catch (Exception e) {
FileLog.e(e);
}
}
return false;
}
public boolean seekToProgressMs(org.telegram.messenger.MessageObject r9, long r10) {
throw new UnsupportedOperationException("Method not decompiled: org.telegram.messenger.MediaController.seekToProgressMs(org.telegram.messenger.MessageObject, long):boolean");
}
public void setAllowStartRecord(boolean z) {
this.allowStartRecord = z;
}
public void setBaseActivity(Activity activity, boolean z) {
if (!z) {
if (this.baseActivity != activity) {
return;
} else {
activity = null;
}
}
this.baseActivity = activity;
}
public void setCurrentVideoVisible(boolean z) {
AspectRatioFrameLayout aspectRatioFrameLayout = this.currentAspectRatioFrameLayout;
if (aspectRatioFrameLayout == null) {
return;
}
if (z) {
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$.ExternalSyntheticLambda8(this));
} catch (Exception unused) {
this.pipRoundVideoView = null;
}
}
PipRoundVideoView pipRoundVideoView3 = this.pipRoundVideoView;
if (pipRoundVideoView3 != null) {
this.videoPlayer.setTextureView(pipRoundVideoView3.getTextureView());
}
}
public void setFeedbackView(View view, boolean z) {
if (!z) {
if (this.feedbackView != view) {
return;
} else {
view = null;
}
}
this.feedbackView = view;
}
public void setInputFieldHasText(boolean z) {
this.inputFieldHasText = z;
}
public void setLastVisibleMessageIds(int i, long j, long j2, TLRPC$User tLRPC$User, TLRPC.EncryptedChat encryptedChat, ArrayList<Long> arrayList, int i2) {
this.lastChatEnterTime = j;
this.lastChatLeaveTime = j2;
this.lastChatAccount = i;
this.lastSecretChat = encryptedChat;
this.lastUser = tLRPC$User;
this.lastMessageId = i2;
this.lastChatVisibleMessages = arrayList;
}
public void setPlaybackOrderType(int i) {
boolean z = SharedConfig.shuffleMusic;
SharedConfig.setPlaybackOrderType(i);
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 void setPlaybackSpeed(boolean z, float f) {
if (z) {
if (this.currentMusicPlaybackSpeed >= 6.0f && f == VOLUME_NORMAL && this.playingMessageObject != null) {
this.audioPlayer.pause();
MessageObject messageObject = this.playingMessageObject;
AndroidUtilities.runOnUIThread(new MediaController$.ExternalSyntheticLambda20(this, messageObject, messageObject.audioProgress), 50L);
}
this.currentMusicPlaybackSpeed = f;
if (Math.abs(f - VOLUME_NORMAL) > 0.001f) {
this.fastMusicPlaybackSpeed = f;
}
} else {
this.currentPlaybackSpeed = f;
if (Math.abs(f - VOLUME_NORMAL) > 0.001f) {
this.fastPlaybackSpeed = f;
}
}
VideoPlayer videoPlayer = this.audioPlayer;
if (videoPlayer != null || (videoPlayer = this.videoPlayer) != null) {
videoPlayer.setPlaybackSpeed(Math.round(f * 10.0f) / 10.0f);
}
MessagesController.getGlobalMainSettings().edit().putFloat(z ? "musicPlaybackSpeed" : "playbackSpeed", f).putFloat(z ? "fastMusicPlaybackSpeed" : "fastPlaybackSpeed", z ? this.fastMusicPlaybackSpeed : this.fastPlaybackSpeed).commit();
NotificationCenter.getGlobalInstance().postNotificationName(NotificationCenter.messagePlayingSpeedChanged, new Object[0]);
if (this.ignorePlayerUpdate) {
return;
}
CastSync.setSpeed(f);
}
public boolean setPlaylist(ArrayList<MessageObject> arrayList, MessageObject messageObject, long j) {
return setPlaylist(arrayList, messageObject, j, true, null);
}
public boolean setPlaylist(ArrayList<MessageObject> arrayList, MessageObject messageObject, long j, PlaylistGlobalSearchParams playlistGlobalSearchParams) {
return setPlaylist(arrayList, messageObject, j, true, playlistGlobalSearchParams);
}
public boolean setPlaylist(ArrayList<MessageObject> arrayList, MessageObject messageObject, long j, boolean z, PlaylistGlobalSearchParams playlistGlobalSearchParams) {
if (this.playingMessageObject == messageObject) {
int indexOf = this.playlist.indexOf(messageObject);
if (indexOf >= 0) {
this.currentPlaylistNum = indexOf;
}
return playMessage(messageObject);
}
this.forceLoopCurrentPlaylist = !z;
this.playlistMergeDialogId = j;
this.playMusicAgain = !this.playlist.isEmpty();
clearPlaylist();
this.playlistGlobalSearchParams = playlistGlobalSearchParams;
boolean z2 = false;
if (!arrayList.isEmpty() && DialogObject.isEncryptedDialog(arrayList.get(0).getDialogId())) {
z2 = true;
}
int i = ConnectionsManager.DEFAULT_DATACENTER_ID;
int i2 = Integer.MIN_VALUE;
for (int size = arrayList.size() - 1; size >= 0; size--) {
MessageObject messageObject2 = arrayList.get(size);
if (messageObject2.isMusic()) {
int id = messageObject2.getId();
if (id > 0 || z2) {
i = Math.min(i, id);
i2 = Math.max(i2, id);
}
this.playlist.add(messageObject2);
this.playlistMap.put(Integer.valueOf(id), messageObject2);
}
}
sortPlaylist();
int indexOf2 = this.playlist.indexOf(messageObject);
this.currentPlaylistNum = indexOf2;
if (indexOf2 == -1) {
clearPlaylist();
this.currentPlaylistNum = this.playlist.size();
this.playlist.add(messageObject);
this.playlistMap.put(Integer.valueOf(messageObject.getId()), messageObject);
}
if (messageObject.isMusic() && !messageObject.scheduled) {
if (SharedConfig.shuffleMusic) {
buildShuffledPlayList();
}
if (z) {
if (this.playlistGlobalSearchParams == null) {
MediaDataController.getInstance(messageObject.currentAccount).loadMusic(messageObject.getDialogId(), i, i2);
} else {
this.playlistClassGuid = ConnectionsManager.generateClassGuid();
}
}
}
return playMessage(messageObject);
}
public void setReplyingMessage(MessageObject messageObject, MessageObject messageObject2, TL_stories.StoryItem storyItem) {
this.recordReplyingMsg = messageObject;
this.recordReplyingTopMsg = messageObject2;
this.recordReplyingStory = storyItem;
}
public void setTextureView(TextureView textureView, AspectRatioFrameLayout aspectRatioFrameLayout, FrameLayout frameLayout, boolean z) {
setTextureView(textureView, aspectRatioFrameLayout, frameLayout, z, null);
}
public void setTextureView(TextureView textureView, AspectRatioFrameLayout aspectRatioFrameLayout, FrameLayout frameLayout, boolean z, Runnable runnable) {
if (textureView == null) {
return;
}
if (!z && 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 (runnable != null && this.pipRoundVideoView == null) {
try {
PipRoundVideoView pipRoundVideoView = new PipRoundVideoView();
this.pipRoundVideoView = pipRoundVideoView;
pipRoundVideoView.show(this.baseActivity, new MediaController$.ExternalSyntheticLambda53(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 = frameLayout;
if (!this.currentAspectRatioFrameLayoutReady || aspectRatioFrameLayout == null) {
return;
}
aspectRatioFrameLayout.setAspectRatio(this.currentAspectRatioFrameLayoutRatio, this.currentAspectRatioFrameLayoutRotation);
}
public void setVoiceMessagesPlaylist(ArrayList<MessageObject> arrayList, boolean z) {
ArrayList<MessageObject> arrayList2 = arrayList != null ? new ArrayList<>(arrayList) : null;
this.voiceMessagesPlaylist = arrayList2;
if (arrayList2 != null) {
this.voiceMessagesPlaylistUnread = z;
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);
}
}
}
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 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$.ExternalSyntheticLambda11(this));
this.sensorsStarted = true;
}
}
public void startRecording(int i, long j, MessageObject messageObject, MessageObject messageObject2, TL_stories.StoryItem storyItem, int i2, boolean z, String str, int i3, long j2, MessageSuggestionParams messageSuggestionParams) {
boolean z2;
boolean z3;
MessageObject messageObject3 = this.playingMessageObject;
if (messageObject3 == null || !isPlayingMessage(messageObject3) || isMessagePaused()) {
z2 = z;
z3 = false;
} else {
z2 = z;
z3 = true;
}
this.manualRecording = z2;
requestRecordAudioFocus(true);
try {
this.feedbackView.performHapticFeedback(3, 2);
} catch (Exception unused) {
}
DispatchQueue dispatchQueue = this.recordQueue;
boolean z4 = z3;
MediaController$.ExternalSyntheticLambda19 externalSyntheticLambda19 = new MediaController$.ExternalSyntheticLambda19(this, i, i2, j, j2, messageSuggestionParams, messageObject2, messageObject, storyItem, str, i3);
this.recordStartRunnable = externalSyntheticLambda19;
dispatchQueue.postRunnable(externalSyntheticLambda19, z4 ? 500L : 50L);
}
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;
String str = chatActivity != null ? chatActivity.quickReplyShortcut : null;
int quickReplyId = chatActivity != null ? chatActivity.getQuickReplyId() : 0;
ChatActivity chatActivity2 = this.raiseChat;
long sendMonoForumPeerId = chatActivity2 != null ? chatActivity2.getSendMonoForumPeerId() : 0L;
ChatActivity chatActivity3 = this.raiseChat;
startRecording(currentAccount, dialogId, null, threadMessage, null, classGuid, false, str, quickReplyId, sendMonoForumPeerId, chatActivity3 != null ? chatActivity3.getSendMessageSuggestionParams() : null);
this.ignoreOnPause = true;
}
}
public void stopMediaObserver() {
if (this.stopMediaObserverRunnable == null) {
this.stopMediaObserverRunnable = new StopMediaObserverRunnable(this, (1) null);
}
this.stopMediaObserverRunnable.currentObserverToken = this.startObserverToken;
ApplicationLoader.applicationHandler.postDelayed(this.stopMediaObserverRunnable, 5000L);
}
public void stopRaiseToEarSensors(ChatActivity chatActivity, boolean z, boolean z2) {
if (this.ignoreOnPause) {
this.ignoreOnPause = false;
return;
}
if (z2) {
if (this.recordingAudio == null || isRecordingPaused()) {
stopRecording(z ? 2 : 0, false, 0, false, 0L);
} else {
toggleRecordingPause(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$.ExternalSyntheticLambda43(this));
PowerManager.WakeLock wakeLock = this.proximityWakeLock;
if (wakeLock == null || !wakeLock.isHeld()) {
return;
}
this.proximityWakeLock.release();
}
public void stopRecording(int i, boolean z, int i2, boolean z2, long j) {
Runnable runnable = this.recordStartRunnable;
if (runnable != null) {
this.recordQueue.cancelRunnable(runnable);
this.recordStartRunnable = null;
}
this.recordQueue.postRunnable(new MediaController$.ExternalSyntheticLambda29(this, i, z, i2, z2, j));
}
public void syncCastedPlayer() {
if (this.playingMessageObject == null) {
return;
}
this.ignorePlayerUpdate = true;
if (CastSync.isActive() && !CastSync.isUpdatePending()) {
long position = CastSync.getPosition();
long progressMs = getProgressMs(this.playingMessageObject);
if (progressMs >= 0 && position >= 0 && Math.abs(progressMs - position) > 1000) {
seekToProgressMs(this.playingMessageObject, position);
}
if (CastSync.isPlaying()) {
playMessage(this.playingMessageObject);
} else {
lambda$startAudioAgain$7(this.playingMessageObject);
}
setPlaybackSpeed(true, CastSync.getSpeed());
}
setPlayerVolume();
this.ignorePlayerUpdate = false;
}
public void toggleRecordingPause(boolean z) {
this.recordQueue.postRunnable(new MediaController$.ExternalSyntheticLambda57(this, z));
}
public void trimCurrentRecording(long j, long j2, Runnable runnable) {
if (this.recordingAudioFile == null) {
if (runnable != null) {
AndroidUtilities.runOnUIThread(runnable);
return;
}
return;
}
this.recordQueue.postRunnable(new MediaController$.ExternalSyntheticLambda6(this, new 15(this, FileLoader.getDirectory(1), System.currentTimeMillis() + "_" + FileLoader.getAttachFileName(this.recordingAudio)), j, j2, runnable));
}
public void tryResumePausedAudio() {
MessageObject playingMessageObject = getPlayingMessageObject();
if (playingMessageObject != null && isMessagePaused() && this.wasPlayingAudioBeforePause && (playingMessageObject.isVoice() || playingMessageObject.isMusic())) {
playMessage(playingMessageObject);
}
this.wasPlayingAudioBeforePause = false;
}
public void updateSilent(boolean z) {
this.isSilent = z;
VideoPlayer videoPlayer = this.videoPlayer;
if (videoPlayer != null) {
videoPlayer.setLooping(z);
}
setPlayerVolume();
checkVolumeBarUI();
MessageObject messageObject = this.playingMessageObject;
if (messageObject != null) {
NotificationCenter notificationCenter = NotificationCenter.getInstance(messageObject.currentAccount);
int i = NotificationCenter.messagePlayingPlayStateChanged;
MessageObject messageObject2 = this.playingMessageObject;
notificationCenter.postNotificationName(i, new Object[]{Integer.valueOf(messageObject2 != null ? messageObject2.getId() : 0)});
}
}
}