implement MediaMetadataRetriever on top of MediaPlayer

also add MediaPlayer.getDuration() and MediaPlayer.getCurrentPosition()
This commit is contained in:
Julian Winkler
2025-04-23 18:16:37 +02:00
parent 49fa854c93
commit 7985381b60
5 changed files with 80 additions and 0 deletions

View File

@@ -39,6 +39,22 @@ JNIEXPORT void JNICALL Java_android_media_MediaPlayer_native_1setOnCompletionLis
JNIEXPORT void JNICALL Java_android_media_MediaPlayer_native_1start
(JNIEnv *, jclass, jlong);
/*
* Class: android_media_MediaPlayer
* Method: native_getDuration
* Signature: (J)I
*/
JNIEXPORT jint JNICALL Java_android_media_MediaPlayer_native_1getDuration
(JNIEnv *, jclass, jlong);
/*
* Class: android_media_MediaPlayer
* Method: native_getCurrentPosition
* Signature: (J)I
*/
JNIEXPORT jint JNICALL Java_android_media_MediaPlayer_native_1getCurrentPosition
(JNIEnv *, jclass, jlong);
#ifdef __cplusplus
}
#endif

View File

@@ -56,3 +56,19 @@ JNIEXPORT void JNICALL Java_android_media_MediaPlayer_native_1start(JNIEnv *env,
gtk_media_stream_set_volume(media_stream, 1.0);
gtk_media_stream_play(media_stream);
}
JNIEXPORT jint JNICALL Java_android_media_MediaPlayer_native_1getDuration(JNIEnv *env, jclass this, jlong media_stream_ptr)
{
GtkMediaStream *media_stream = _PTR(media_stream_ptr);
// convert from microseconds to milliseconds
return gtk_media_stream_get_duration(media_stream) / 1000;
}
JNIEXPORT jint JNICALL Java_android_media_MediaPlayer_native_1getCurrentPosition(JNIEnv *env, jclass this, jlong media_stream_ptr)
{
GtkMediaStream *media_stream = _PTR(media_stream_ptr);
// convert from microseconds to milliseconds
return gtk_media_stream_get_timestamp(media_stream) / 1000;
}