From 41ff93eca2bf3e8a15d99fedbf7da3a7f9af638a Mon Sep 17 00:00:00 2001 From: Shinichi Morimoto Date: Wed, 27 Nov 2019 23:06:59 +0900 Subject: [PATCH] extended android jni with onMediaSessionSetPositionState --- .../src/main/java/org/mozilla/servo/MainActivity.java | 11 +++++++++++ .../src/main/java/org/mozilla/servo/MediaSession.java | 6 +++++- .../src/main/java/org/mozilla/servoview/JNIServo.java | 2 ++ .../src/main/java/org/mozilla/servoview/Servo.java | 6 ++++++ 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/support/android/apk/servoapp/src/main/java/org/mozilla/servo/MainActivity.java b/support/android/apk/servoapp/src/main/java/org/mozilla/servo/MainActivity.java index 21a6e7f996f9..1e1c9dbabeb3 100644 --- a/support/android/apk/servoapp/src/main/java/org/mozilla/servo/MainActivity.java +++ b/support/android/apk/servoapp/src/main/java/org/mozilla/servo/MainActivity.java @@ -255,4 +255,15 @@ public void onMediaSessionPlaybackStateChange(int state) { return; } } + + @Override + public void onMediaSessionSetPositionState(float duration, float position, float playbackRate) { + Log.d("onMediaSessionSetPositionState", duration + " " + position + " " + playbackRate); + if (mMediaSession == null) { + mMediaSession = new MediaSession(mServoView, this, getApplicationContext()); + } + + mMediaSession.setPositionState(duration, position, playbackRate); + return; + } } diff --git a/support/android/apk/servoapp/src/main/java/org/mozilla/servo/MediaSession.java b/support/android/apk/servoapp/src/main/java/org/mozilla/servo/MediaSession.java index 5b1852d5d3f2..bb9f874b463f 100644 --- a/support/android/apk/servoapp/src/main/java/org/mozilla/servo/MediaSession.java +++ b/support/android/apk/servoapp/src/main/java/org/mozilla/servo/MediaSession.java @@ -192,4 +192,8 @@ public void updateMetadata(String title, String artist, String album) { showMediaSessionControls(); } } -} + + // Not implemented + // see https://github.com/servo/servo/pull/24885#discussion_r352496117 + public void setPositionState(float duration, float position, float playbackRate) {} +} \ No newline at end of file diff --git a/support/android/apk/servoview/src/main/java/org/mozilla/servoview/JNIServo.java b/support/android/apk/servoview/src/main/java/org/mozilla/servoview/JNIServo.java index 6181a298f0a7..5fa91fa34f6d 100644 --- a/support/android/apk/servoview/src/main/java/org/mozilla/servoview/JNIServo.java +++ b/support/android/apk/servoview/src/main/java/org/mozilla/servoview/JNIServo.java @@ -115,6 +115,8 @@ public interface Callbacks { void onMediaSessionMetadata(String title, String artist, String album); void onMediaSessionPlaybackStateChange(int state); + + void onMediaSessionSetPositionState(float duration, float position, float playbackRate); } } diff --git a/support/android/apk/servoview/src/main/java/org/mozilla/servoview/Servo.java b/support/android/apk/servoview/src/main/java/org/mozilla/servoview/Servo.java index f45f55e79f55..7f8bd3fc211c 100644 --- a/support/android/apk/servoview/src/main/java/org/mozilla/servoview/Servo.java +++ b/support/android/apk/servoview/src/main/java/org/mozilla/servoview/Servo.java @@ -192,6 +192,8 @@ public interface Client { void onMediaSessionMetadata(String title, String artist, String album); void onMediaSessionPlaybackStateChange(int state); + + void onMediaSessionSetPositionState(float duration, float position, float playbackRate); } public interface RunCallback { @@ -285,5 +287,9 @@ public void onMediaSessionMetadata(String title, String artist, String album) { public void onMediaSessionPlaybackStateChange(int state) { mRunCallback.inUIThread(() -> mClient.onMediaSessionPlaybackStateChange(state)); } + + public void onMediaSessionSetPositionState(float duration, float position, float playbackRate) { + mRunCallback.inUIThread(() -> mClient.onMediaSessionSetPositionState(duration, position, playbackRate)); + } } }