diff --git a/android/app/src/main/java/cn/toside/music/mobile/lyric/Lyric.java b/android/app/src/main/java/cn/toside/music/mobile/lyric/Lyric.java index 385fd2a..99eb38c 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/lyric/Lyric.java +++ b/android/app/src/main/java/cn/toside/music/mobile/lyric/Lyric.java @@ -29,7 +29,7 @@ public class Lyric extends LyricPlayer { String translationText = ""; String romaLyricText = ""; - Lyric(ReactApplicationContext reactContext, boolean isShowTranslation, boolean isShowRoma, int playbackRate) { + Lyric(ReactApplicationContext reactContext, boolean isShowTranslation, boolean isShowRoma, float playbackRate) { this.reactAppContext = reactContext; this.isShowTranslation = isShowTranslation; this.isShowRoma = isShowRoma; diff --git a/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricModule.java b/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricModule.java index 8ea9387..05a29b0 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricModule.java +++ b/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricModule.java @@ -20,7 +20,7 @@ public class LyricModule extends ReactContextBaseJavaModule { boolean isShowTranslation = false; boolean isShowRoma = false; - int playbackRate = 1; + float playbackRate = 1; private int listenerCount = 0; @@ -87,7 +87,7 @@ public class LyricModule extends ReactContextBaseJavaModule { } @ReactMethod - public void setPlaybackRate(int playbackRate, Promise promise) { + public void setPlaybackRate(float playbackRate, Promise promise) { this.playbackRate = playbackRate; if (lyric != null) lyric.setPlaybackRate(playbackRate); promise.resolve(null); diff --git a/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricPlayer.java b/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricPlayer.java index 8f46bcc..2235405 100644 --- a/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricPlayer.java +++ b/android/app/src/main/java/cn/toside/music/mobile/lyric/LyricPlayer.java @@ -27,7 +27,7 @@ public class LyricPlayer { List lines = new ArrayList<>(); HashMap tags = new HashMap(); boolean isPlay = false; - int playbackRate = 1; + float playbackRate = 1; int curLineNum = 0; int maxLine = 0; int offset = 150; @@ -89,7 +89,7 @@ public class LyricPlayer { } private int getCurrentTime() { - return (getNow() - this.performanceTime) * this.playbackRate + startPlayTime; + return (int)((getNow() - this.performanceTime) * this.playbackRate) + startPlayTime; } private void initTag() { @@ -297,7 +297,7 @@ public class LyricPlayer { if (driftTime >= 0 || curLineNum == 0) { HashMap nextLine = lines.get(curLineNum + 1); - int delay = ((int) nextLine.get("time") - (int) curLine.get("time") - driftTime) / this.playbackRate; + int delay = (int)(((int)nextLine.get("time") - (int)curLine.get("time") - driftTime) / this.playbackRate); // Log.d("Lyric", "delay: " + delay + " driftTime: " + driftTime); if (delay > 0) { if (isPlay) { @@ -331,7 +331,7 @@ public class LyricPlayer { init(); } - public void setPlaybackRate(int playbackRate) { + public void setPlaybackRate(float playbackRate) { this.playbackRate = playbackRate; if (this.lines.size() == 0) return; if (!this.isPlay) return;