From 31ba7ecedff5b5cdb926e62d5f6f119a94de6502 Mon Sep 17 00:00:00 2001 From: lifujun <814084764@qq.com> Date: Thu, 19 Mar 2020 15:32:17 +0800 Subject: [PATCH] feat(android): add maxAccurateDelta api --- .../main/java/com/cicada/player/CicadaPlayer.java | 12 ++++++++++++ .../java/com/cicada/player/CicadaPlayerImpl.java | 5 +++++ .../cicada/player/nativeclass/NativePlayerBase.java | 8 ++++++++ .../src/main/jni/player/NativeBase.cpp | 13 +++++++++++++ .../premierlibrary/src/main/jni/player/NativeBase.h | 2 ++ 5 files changed, 40 insertions(+) diff --git a/platform/Android/source/premierlibrary/src/main/java/com/cicada/player/CicadaPlayer.java b/platform/Android/source/premierlibrary/src/main/java/com/cicada/player/CicadaPlayer.java index 7d34d2dce..3d3a63113 100644 --- a/platform/Android/source/premierlibrary/src/main/java/com/cicada/player/CicadaPlayer.java +++ b/platform/Android/source/premierlibrary/src/main/java/com/cicada/player/CicadaPlayer.java @@ -697,6 +697,18 @@ public int getValue() { */ abstract public void seekTo(long position, SeekMode seekMode); + /** + * 设置精准seek的最大间隔。 + * @param delta 间隔时间,单位毫秒 + */ + + /**** + * set the maximum interval of precision seek. + * @param delta interval in milliseconds + */ + + abstract public void setMaxAccurateSeekDelta(int delta); + /** * 重置。 */ diff --git a/platform/Android/source/premierlibrary/src/main/java/com/cicada/player/CicadaPlayerImpl.java b/platform/Android/source/premierlibrary/src/main/java/com/cicada/player/CicadaPlayerImpl.java index 9e2d9c7f0..80c613270 100644 --- a/platform/Android/source/premierlibrary/src/main/java/com/cicada/player/CicadaPlayerImpl.java +++ b/platform/Android/source/premierlibrary/src/main/java/com/cicada/player/CicadaPlayerImpl.java @@ -778,6 +778,11 @@ public void seekTo(long positionMs, SeekMode mode) { mCorePlayer.seekTo(positionMs, mode.getValue()); } + @Override + public void setMaxAccurateSeekDelta(int delta){ + mCorePlayer.setMaxAccurateSeekDelta(delta); + } + // @Override // public int getPlayerStatus() { diff --git a/platform/Android/source/premierlibrary/src/main/java/com/cicada/player/nativeclass/NativePlayerBase.java b/platform/Android/source/premierlibrary/src/main/java/com/cicada/player/nativeclass/NativePlayerBase.java index 7bac74e31..c5443f1de 100644 --- a/platform/Android/source/premierlibrary/src/main/java/com/cicada/player/nativeclass/NativePlayerBase.java +++ b/platform/Android/source/premierlibrary/src/main/java/com/cicada/player/nativeclass/NativePlayerBase.java @@ -49,6 +49,7 @@ void loge(String tag, String msg) { System.loadLibrary("CicadaPlayer"); } + private static class MainHandler extends Handler { private WeakReference playerWeakReference; @@ -194,6 +195,11 @@ public void seekTo(long position, int mode) { nSeekTo(position, mode); } + + public void setMaxAccurateSeekDelta(int delta) { + nSetMaxAccurateSeekDelta(delta); + } + public long getDuration() { long duration = nGetDuration(); @@ -469,6 +475,8 @@ public static void setBlackType(int type) { protected native void nSeekTo(long position, int mode); + protected native void nSetMaxAccurateSeekDelta(int delta); + protected native void nStop(); protected native void nRelease(); diff --git a/platform/Android/source/premierlibrary/src/main/jni/player/NativeBase.cpp b/platform/Android/source/premierlibrary/src/main/jni/player/NativeBase.cpp index 1c5561caf..b3406a57e 100644 --- a/platform/Android/source/premierlibrary/src/main/jni/player/NativeBase.cpp +++ b/platform/Android/source/premierlibrary/src/main/jni/player/NativeBase.cpp @@ -259,6 +259,18 @@ void NativeBase::java_SeekTo(JNIEnv *env, jobject instance, jlong position, jint player->SeekTo(position, (SeekMode) mode); } +void NativeBase::java_SetMaxAccurateSeekDelta(JNIEnv *env, jobject instance, jint delta) +{ + AF_TRACE; + MediaPlayer *player = getPlayer(env, instance); + + if (player == nullptr) { + return; + } + + player->SetOption("maxAccurateSeekDelta", AfString::to_string((int)delta).c_str()); +} + void NativeBase::java_Stop(JNIEnv *env, jobject instance) { @@ -908,6 +920,7 @@ static JNINativeMethod nativePlayer_method_table[] = { {"nSetVolume", "(F)V", (void *) NativeBase::java_SetVolume}, {"nGetVolume", "()F", (void *) NativeBase::java_GetVolume}, {"nSeekTo", "(JI)V", (void *) NativeBase::java_SeekTo}, + {"nSetMaxAccurateSeekDelta", "(I)V", (void *) NativeBase::java_SetMaxAccurateSeekDelta}, {"nStop", "()V", (void *) NativeBase::java_Stop}, {"nRelease", "()V", (void *) NativeBase::java_Release}, {"nGetDuration", "()J", (void *) NativeBase::java_GetDuration}, diff --git a/platform/Android/source/premierlibrary/src/main/jni/player/NativeBase.h b/platform/Android/source/premierlibrary/src/main/jni/player/NativeBase.h index 0da8f381f..5bdb4799d 100644 --- a/platform/Android/source/premierlibrary/src/main/jni/player/NativeBase.h +++ b/platform/Android/source/premierlibrary/src/main/jni/player/NativeBase.h @@ -67,6 +67,8 @@ class NativeBase { static void java_SeekTo(JNIEnv *env, jobject instance, jlong position, jint mode); + static void java_SetMaxAccurateSeekDelta(JNIEnv *env, jobject instance, jint delta); + static void java_Stop(JNIEnv *env, jobject instance); static void java_Release(JNIEnv *env, jobject instance);