Skip to content

Commit

Permalink
fix(android): allow to play/pause with headphones buttons
Browse files Browse the repository at this point in the history
  • Loading branch information
farfromrefug committed Dec 18, 2024
1 parent 452c301 commit ccbd774
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 27 deletions.
2 changes: 1 addition & 1 deletion app/android/activity.android.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ function handleKey(activity: androidx.appcompat.app.AppCompatActivity, keyCode:
const action = event.getAction();

const storyHandler = instance.storyHandler;
DEV_LOG && console.warn('handleKey', activity, instance, instance.shouldHandleVolumeButtons, storyHandler.id, keyCode, action);
// DEV_LOG && console.warn('handleKey', activity, instance, instance.shouldHandleVolumeButtons, storyHandler.id, keyCode, action);
const playingInfo = storyHandler?.currentPlayingInfo;

const { canNext, canPrev, isStory, pack, ...other } = playingInfo;
Expand Down
4 changes: 0 additions & 4 deletions app/components/FullscreenPlayer.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -427,10 +427,6 @@
}
function onStoryDraw(event: { canvas: Canvas; object: CanvasView }) {
if (DEV_LOG) {
const { pack, ...others } = story;
console.log('onStoryDraw', JSON.stringify(others));
}
if (story?.episode && story?.pack.extra?.episodeCount) {
textPaint.color = colorOnTertiaryContainer;
textPaint.fontWeight = 'bold';
Expand Down
2 changes: 1 addition & 1 deletion app/handlers/StoryHandler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ export class StoryHandler extends Handler {
let description = pack.subtitle || pack.description;
let isStory = false;
let inverseImageColors = !onlyInverseLuniiTypeImages || cover !== pack.getThumbnail();
DEV_LOG && console.log('playingInfo',cover, pack.getThumbnail(), inverseImageColors);
DEV_LOG && console.log('playingInfo', cover, pack.getThumbnail(), inverseImageColors);
if (currentStage) {
if (duration > 30000 || pack.stageIsStory(currentStage)) {
isStory = true;
Expand Down
2 changes: 1 addition & 1 deletion app/services/android/AccessiblityService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export class AccessiblityService extends android.accessibilityservice.Accessibil
const storyHandler = getBGServiceInstance().storyHandler;
const action = event.getAction();
const keyCode = event.getKeyCode();
DEV_LOG && console.log('handleKeyEvent', action, keyCode);
// DEV_LOG && console.log('handleKeyEvent', action, keyCode);
if (!storyHandler.canOverrideButtons()) {
return false;
}
Expand Down
23 changes: 16 additions & 7 deletions app/services/android/BgService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -368,14 +368,23 @@ export class BgService extends android.app.Service {
}
handleMediaIntent(intent: android.content.Intent) {
const event = intent.getParcelableExtra(android.content.Intent.EXTRA_KEY_EVENT) as android.view.KeyEvent;
const keyCode = event.getKeyCode();
switch (event.getKeyCode()) {
case android.view.KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE: {
this.storyHandler.togglePlayState();
break;
if (event.getAction() === 1) {
const keyCode = event.getKeyCode();
switch (keyCode) {
case 85 /* android.view.KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE */:
case 79 /* android.view.KeyEvent.KEYCODE_HEADSETHOOK */:
this.storyHandler?.togglePlayState();
break;
case 87 /* android.view.KeyEvent.KEYCODE_MEDIA_NEXT */:
this.storyHandler?.handleAction('next');
break;
case 88 /* android.view.KeyEvent.KEYCODE_MEDIA_PREVIOUS */:
this.storyHandler?.handleAction('previous');
break;
case 86 /* android.view.KeyEvent.KEYCODE_MEDIA_STOP */:
this.storyHandler.stopPlaying();
break;
}
case android.view.KeyEvent.KEYCODE_MEDIA_STOP:
this.storyHandler.stopPlaying();
}
}
updateAlbumArt(image) {
Expand Down
30 changes: 17 additions & 13 deletions app/services/android/MediaSessionCompatCallback.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,19 +42,23 @@ export class MediaSessionCompatCallback extends android.support.v4.media.session
if (!instance.shouldHandleVolumeButtons) {
return false;
}
const keyEvent = mediaButtonIntent.getParcelableExtra(android.content.Intent.EXTRA_KEY_EVENT) as android.view.KeyEvent;
DEV_LOG && console.log('onMediaButtonEvent', action, keyEvent);
const keyCode = keyEvent.getKeyCode();
switch (keyCode) {
case 87:
instance.storyHandler?.handleAction('next');
break;
case 88:
instance.storyHandler?.handleAction('previous');
break;
default:
break;
}
instance.handleMediaIntent(mediaButtonIntent);
// const keyEvent = mediaButtonIntent.getParcelableExtra(android.content.Intent.EXTRA_KEY_EVENT) as android.view.KeyEvent;
// DEV_LOG && console.log('onMediaButtonEvent', action, keyEvent);
// const keyCode = keyEvent.getKeyCode();
// switch (keyCode) {
// case 79 /* android.view.KeyEvent.KEYCODE_HEADSETHOOK */:
// instance.storyHandler?.handleAction('pause');
// break;
// case 87 /* android.view.KeyEvent.KEYCODE_MEDIA_NEXT */:
// instance.storyHandler?.handleAction('next');
// break;
// case 88 /* android.view.KeyEvent.KEYCODE_MEDIA_PREVIOUS */:
// instance.storyHandler?.handleAction('previous');
// break;
// default:
// break;
// }
return true;
}
return super.onMediaButtonEvent(mediaButtonIntent);
Expand Down

0 comments on commit ccbd774

Please sign in to comment.