diff options
author | Christian Schneppe <christian@pix-art.de> | 2018-04-01 23:57:00 +0200 |
---|---|---|
committer | Christian Schneppe <christian@pix-art.de> | 2018-04-01 23:57:00 +0200 |
commit | ca16b910e14f269d4def0d6c57f966b981bf8759 (patch) | |
tree | 9fce5b3b1ee55457b46cded902f8ba946053cf8e /src/main/java/de/pixart/messenger/services/AudioPlayer.java | |
parent | d423752b17cb9b30d5c7606689b863a2b4153f89 (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.java | 22 |
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); |