From 1fde63fc5406d2b92ee5412e9c7f2955d3776cf9 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Sun, 21 Jan 2018 16:56:15 +0100 Subject: reworked audioPlayer screenOn/Off a bit --- .../de/pixart/messenger/services/AudioPlayer.java | 31 ++++++---------------- .../messenger/ui/adapter/MessageAdapter.java | 11 +++++++- 2 files changed, 18 insertions(+), 24 deletions(-) (limited to 'src/main/java/de') diff --git a/src/main/java/de/pixart/messenger/services/AudioPlayer.java b/src/main/java/de/pixart/messenger/services/AudioPlayer.java index f419c6584..e2600c100 100644 --- a/src/main/java/de/pixart/messenger/services/AudioPlayer.java +++ b/src/main/java/de/pixart/messenger/services/AudioPlayer.java @@ -5,9 +5,7 @@ import android.media.MediaPlayer; import android.os.Build; import android.os.Handler; import android.support.v4.content.ContextCompat; -import android.util.Log; import android.view.View; -import android.view.WindowManager; import android.widget.ImageButton; import android.widget.RelativeLayout; import android.widget.SeekBar; @@ -19,7 +17,6 @@ import java.util.Locale; import de.pixart.messenger.Config; import de.pixart.messenger.R; import de.pixart.messenger.entities.Message; -import de.pixart.messenger.ui.ConversationActivity; import de.pixart.messenger.ui.adapter.MessageAdapter; import de.pixart.messenger.utils.WeakReferenceSet; @@ -30,14 +27,12 @@ public class AudioPlayer implements View.OnClickListener, MediaPlayer.OnCompleti public static MediaPlayer player = null; private static Message currentlyPlayingMessage = null; private final MessageAdapter messageAdapter; - private ConversationActivity activity; private final WeakReferenceSet audioPlayerLayouts = new WeakReferenceSet<>(); private final Handler handler = new Handler(); - public AudioPlayer(MessageAdapter adapter, ConversationActivity activity) { + public AudioPlayer(MessageAdapter adapter) { this.messageAdapter = adapter; - this.activity = activity; synchronized (AudioPlayer.LOCK) { if (AudioPlayer.player != null) { AudioPlayer.player.setOnCompletionListener(this); @@ -85,7 +80,7 @@ public class AudioPlayer implements View.OnClickListener, MediaPlayer.OnCompleti viewHolder.runtime.setText(formatTime(message.getFileParams().runtime)); viewHolder.progress.setProgress(0); viewHolder.progress.setEnabled(false); - ScreenOff(); + messageAdapter.flagScreenOff(); return false; } } @@ -115,12 +110,12 @@ public class AudioPlayer implements View.OnClickListener, MediaPlayer.OnCompleti if (player.isPlaying()) { viewHolder.progress.setEnabled(false); player.pause(); + messageAdapter.flagScreenOff(); viewHolder.playPause.setImageResource(viewHolder.darkBackground ? R.drawable.ic_play_arrow_white_36dp : R.drawable.ic_play_arrow_black_36dp); - ScreenOff(); } else { - ScreenOn(); viewHolder.progress.setEnabled(true); player.start(); + messageAdapter.flagScreenOn(); this.stopRefresher(true); viewHolder.playPause.setImageResource(viewHolder.darkBackground ? R.drawable.ic_pause_white_36dp : R.drawable.ic_pause_black_36dp); } @@ -130,17 +125,17 @@ public class AudioPlayer implements View.OnClickListener, MediaPlayer.OnCompleti private boolean play(ViewHolder viewHolder, Message message) { AudioPlayer.player = new MediaPlayer(); try { - ScreenOn(); AudioPlayer.currentlyPlayingMessage = message; AudioPlayer.player.setDataSource(messageAdapter.getFileBackend().getFile(message).getAbsolutePath()); AudioPlayer.player.setOnCompletionListener(this); AudioPlayer.player.prepare(); AudioPlayer.player.start(); + messageAdapter.flagScreenOn(); viewHolder.progress.setEnabled(true); viewHolder.playPause.setImageResource(viewHolder.darkBackground ? R.drawable.ic_pause_white_36dp : R.drawable.ic_pause_black_36dp); return true; } catch (Exception e) { - ScreenOff(); + messageAdapter.flagScreenOff(); AudioPlayer.currentlyPlayingMessage = null; return false; } @@ -161,8 +156,8 @@ public class AudioPlayer implements View.OnClickListener, MediaPlayer.OnCompleti AudioPlayer.player.stop(); } AudioPlayer.player.release(); + messageAdapter.flagScreenOff(); AudioPlayer.player = null; - ScreenOff(); resetPlayerUi(); } @@ -184,7 +179,6 @@ public class AudioPlayer implements View.OnClickListener, MediaPlayer.OnCompleti } viewHolder.progress.setProgress(0); viewHolder.progress.setEnabled(false); - ScreenOff(); } @Override @@ -196,6 +190,7 @@ public class AudioPlayer implements View.OnClickListener, MediaPlayer.OnCompleti AudioPlayer.player = null; } mediaPlayer.release(); + messageAdapter.flagScreenOff(); resetPlayerUi(); } } @@ -290,14 +285,4 @@ public class AudioPlayer implements View.OnClickListener, MediaPlayer.OnCompleti this.darkBackground = darkBackground; } } - - private void ScreenOn() { - Log.d(Config.LOGTAG, "Audio Player is keeping screen on"); - activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - } - - private void ScreenOff() { - Log.d(Config.LOGTAG, "Audio Player finished keeping screen on"); - activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - } } \ No newline at end of file diff --git a/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java b/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java index 1d139702c..a332ac967 100644 --- a/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java +++ b/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java @@ -33,6 +33,7 @@ import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnLongClickListener; import android.view.ViewGroup; +import android.view.WindowManager; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ImageView; @@ -144,12 +145,20 @@ public class MessageAdapter extends ArrayAdapter implements CopyTextVie public MessageAdapter(ConversationActivity activity, List messages) { super(activity, 0, messages); - this.audioPlayer = new AudioPlayer(this, activity); + this.audioPlayer = new AudioPlayer(this); this.activity = activity; metrics = getContext().getResources().getDisplayMetrics(); updatePreferences(); } + public void flagScreenOn() { + activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + + public void flagScreenOff() { + activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + public void setOnContactPictureClicked(OnContactPictureClicked listener) { this.mOnContactPictureClickedListener = listener; } -- cgit v1.2.3