Skip to content
This repository was archived by the owner on Jan 25, 2020. It is now read-only.

Commit d14d779

Browse files
committed
* Handling headphones events
1 parent 1952dd3 commit d14d779

File tree

1 file changed

+69
-4
lines changed

1 file changed

+69
-4
lines changed

app/src/main/java/com/sahdeepsingh/Bop/services/ServicePlayMusic.java

Lines changed: 69 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
package com.sahdeepsingh.Bop.services;
22

3+
/*
4+
* This to be done in Service
5+
* 1. add transport controls
6+
* 2. lol for now
7+
* */
8+
39
import android.app.PendingIntent;
410
import android.content.BroadcastReceiver;
511
import android.content.ComponentName;
@@ -21,6 +27,7 @@
2127
import android.support.v4.media.session.PlaybackStateCompat;
2228
import android.text.TextUtils;
2329
import android.util.Log;
30+
import android.view.KeyEvent;
2431
import android.widget.Toast;
2532

2633
import com.cleveroad.audiowidget.AudioWidget;
@@ -57,6 +64,9 @@ public class ServicePlayMusic extends MediaBrowserServiceCompat
5764

5865
private static final int STOP_DELAY = 30000;
5966

67+
static final long CLICK_DELAY = 500;
68+
static long lastClick = 0;
69+
6070

6171
// The tag we put on debug messages
6272
final static String TAG = "MusicService";
@@ -130,6 +140,7 @@ public class ServicePlayMusic extends MediaBrowserServiceCompat
130140
// Internal flags for the function above {{
131141
private boolean pausedTemporarilyDueToAudioFocus = false;
132142
private boolean loweredVolumeDueToAudioFocus = false;
143+
133144
private BroadcastReceiver mNoisyReceiver = new BroadcastReceiver() {
134145
@Override
135146
public void onReceive(Context context, Intent intent) {
@@ -139,21 +150,77 @@ public void onReceive(Context context, Intent intent) {
139150
}
140151
};
141152
private MediaSessionCompat.Callback mMediaSessionCallback = new MediaSessionCompat.Callback() {
153+
154+
@Override
155+
public boolean onMediaButtonEvent(Intent mediaButtonEvent) {
156+
final String intentAction = mediaButtonEvent.getAction();
157+
if (AudioManager.ACTION_AUDIO_BECOMING_NOISY.equals(intentAction)) {
158+
if (Main.settings.get("pause_headphone_unplugged", true)) {
159+
pausePlayer();
160+
}
161+
} else if (Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {
162+
final KeyEvent event = mediaButtonEvent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
163+
if (event == null) return super.onMediaButtonEvent(mediaButtonEvent);
164+
final int keycode = event.getKeyCode();
165+
final int action = event.getAction();
166+
final long eventTime = event.getEventTime();
167+
if (event.getRepeatCount() == 0 && action == KeyEvent.ACTION_DOWN) {
168+
switch (keycode) {
169+
case KeyEvent.KEYCODE_HEADSETHOOK:
170+
if (eventTime - lastClick < CLICK_DELAY) {
171+
next(true);
172+
playSong();
173+
lastClick = 0;
174+
} else {
175+
if (isPlaying())
176+
pausePlayer();
177+
else unpausePlayer();
178+
lastClick = eventTime;
179+
}
180+
break;
181+
case KeyEvent.KEYCODE_MEDIA_STOP:
182+
stopMusicPlayer();
183+
break;
184+
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
185+
if (Main.mainMenuHasNowPlayingItem) {
186+
if (isPlaying()) pausePlayer();
187+
else unpausePlayer();
188+
}
189+
break;
190+
case KeyEvent.KEYCODE_MEDIA_NEXT:
191+
next(true);
192+
playSong();
193+
break;
194+
case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
195+
previous(true);
196+
playSong();
197+
break;
198+
case KeyEvent.KEYCODE_MEDIA_PAUSE:
199+
pausePlayer();
200+
break;
201+
case KeyEvent.KEYCODE_MEDIA_PLAY:
202+
unpausePlayer();
203+
break;
204+
}
205+
}
206+
}
207+
return super.onMediaButtonEvent(mediaButtonEvent);
208+
}
142209
@Override
143210
public void onPlay() {
144211
super.onPlay();
145-
playSong();
212+
unpausePlayer();
146213
}
147214

148215
@Override
149216
public void onPlayFromMediaId(String mediaId, Bundle extras) {
150217
super.onPlayFromMediaId(mediaId, extras);
218+
playSong();
151219
}
152220

153221
@Override
154222
public void onPause() {
155223
super.onPause();
156-
Log.e("lol", "pause");
157224
pausePlayer();
158225
}
159226

@@ -162,7 +229,6 @@ public void onSkipToNext() {
162229
super.onSkipToNext();
163230
next(true);
164231
playSong();
165-
Log.e("lol", "next");
166232
}
167233

168234
@Override
@@ -176,7 +242,6 @@ public void onSkipToPrevious() {
176242
public void onStop() {
177243
super.onStop();
178244
stopMusicPlayer();
179-
Log.e("lol", "stop");
180245
}
181246
};
182247

0 commit comments

Comments
 (0)