aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/services/AudioPlayer.java
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2018-04-01 23:57:00 +0200
committerChristian Schneppe <christian@pix-art.de>2018-04-01 23:57:00 +0200
commitca16b910e14f269d4def0d6c57f966b981bf8759 (patch)
tree9fce5b3b1ee55457b46cded902f8ba946053cf8e /src/main/java/de/pixart/messenger/services/AudioPlayer.java
parentd423752b17cb9b30d5c7606689b863a2b4153f89 (diff)
audio player now requests permission when hitting play
Diffstat (limited to 'src/main/java/de/pixart/messenger/services/AudioPlayer.java')
-rw-r--r--src/main/java/de/pixart/messenger/services/AudioPlayer.java22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/main/java/de/pixart/messenger/services/AudioPlayer.java b/src/main/java/de/pixart/messenger/services/AudioPlayer.java
index e6d1e7c08..4993935b5 100644
--- a/src/main/java/de/pixart/messenger/services/AudioPlayer.java
+++ b/src/main/java/de/pixart/messenger/services/AudioPlayer.java
@@ -1,9 +1,12 @@
package de.pixart.messenger.services;
+import android.Manifest;
+import android.content.pm.PackageManager;
import android.content.res.ColorStateList;
import android.media.MediaPlayer;
import android.os.Build;
import android.os.Handler;
+import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.view.View;
import android.widget.ImageButton;
@@ -17,7 +20,9 @@ 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.ui.util.PendingItem;
import de.pixart.messenger.utils.WeakReferenceSet;
public class AudioPlayer implements View.OnClickListener, MediaPlayer.OnCompletionListener, SeekBar.OnSeekBarChangeListener, Runnable {
@@ -29,6 +34,8 @@ public class AudioPlayer implements View.OnClickListener, MediaPlayer.OnCompleti
private final MessageAdapter messageAdapter;
private final WeakReferenceSet<RelativeLayout> audioPlayerLayouts = new WeakReferenceSet<>();
+ private final PendingItem<WeakReference<ImageButton>> pendingOnClickView = new PendingItem<>();
+
private final Handler handler = new Handler();
public AudioPlayer(MessageAdapter adapter) {
@@ -99,6 +106,11 @@ public class AudioPlayer implements View.OnClickListener, MediaPlayer.OnCompleti
}
private void startStop(ImageButton playPause) {
+ if (ContextCompat.checkSelfPermission(messageAdapter.getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
+ pendingOnClickView.push(new WeakReference<>(playPause));
+ ActivityCompat.requestPermissions(messageAdapter.getActivity(), new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, ConversationActivity.REQUEST_PLAY_PAUSE);
+ return;
+ }
final RelativeLayout audioPlayer = (RelativeLayout) playPause.getParent();
final ViewHolder viewHolder = ViewHolder.get(audioPlayer);
final Message message = (Message) audioPlayer.getTag();
@@ -145,6 +157,16 @@ public class AudioPlayer implements View.OnClickListener, MediaPlayer.OnCompleti
}
}
+ public void startStopPending() {
+ WeakReference<ImageButton> reference = pendingOnClickView.pop();
+ if (reference != null) {
+ ImageButton imageButton = reference.get();
+ if (imageButton != null) {
+ startStop(imageButton);
+ }
+ }
+ }
+
private boolean startStop(ViewHolder viewHolder, Message message) {
if (message == currentlyPlayingMessage && player != null) {
return playPauseCurrent(viewHolder);