|
@@ -20,7 +20,9 @@ import com.cooleshow.base.utils.MyFileUtils;
|
|
|
import com.cooleshow.base.utils.ToastUtil;
|
|
|
import com.cooleshow.base.websocket.JWebSocketClient;
|
|
|
import com.cooleshow.usercenter.helper.UserHelper;
|
|
|
+import com.daya.orchestra.accompany.common.Constants;
|
|
|
import com.daya.orchestra.accompany.player.CustomPlayer;
|
|
|
+import com.daya.orchestra.accompany.presenter.CustomIJKPlayer;
|
|
|
|
|
|
import org.json.JSONException;
|
|
|
import org.json.JSONObject;
|
|
@@ -35,11 +37,12 @@ import io.reactivex.rxjava3.core.ObservableOnSubscribe;
|
|
|
import io.reactivex.rxjava3.core.Observer;
|
|
|
import io.reactivex.rxjava3.disposables.Disposable;
|
|
|
import io.reactivex.rxjava3.schedulers.Schedulers;
|
|
|
+import tv.danmaku.ijk.media.player.IMediaPlayer;
|
|
|
|
|
|
|
|
|
* Author by pq, Date on 2023/8/4.
|
|
|
*/
|
|
|
-public class AccompanyPlayHelper implements MediaPlayer.OnCompletionListener {
|
|
|
+public class AccompanyPlayHelper implements IMediaPlayer.OnCompletionListener {
|
|
|
public static final String TAG = "AccPlayHelper";
|
|
|
|
|
|
public static long realPlayStartTime = -1;
|
|
@@ -52,7 +55,7 @@ public class AccompanyPlayHelper implements MediaPlayer.OnCompletionListener {
|
|
|
public static final String BLANK_DEVICE_DELAY_CACHE_KEY = "delay_cache";
|
|
|
public static final String DELAY_FOR_CURRENT_CACHE_KEY = "delayForCurrent";
|
|
|
private Recorder wavRecorder;
|
|
|
- private CustomPlayer player;
|
|
|
+ private CustomIJKPlayer player;
|
|
|
private long startPlayTime = 0;
|
|
|
private boolean isTag = true;
|
|
|
|
|
@@ -71,8 +74,8 @@ public class AccompanyPlayHelper implements MediaPlayer.OnCompletionListener {
|
|
|
if (player == null) {
|
|
|
return;
|
|
|
}
|
|
|
- int cu = player.getCu();
|
|
|
- int duration = player.getT();
|
|
|
+ long cu = player.getCu();
|
|
|
+ long duration = player.getT();
|
|
|
if (cu > 500) {
|
|
|
if (isTag) {
|
|
|
LOG.i(TAG, "cu:" + cu);
|
|
@@ -92,10 +95,10 @@ public class AccompanyPlayHelper implements MediaPlayer.OnCompletionListener {
|
|
|
private Runnable mRunnable2 = new Runnable() {
|
|
|
@Override
|
|
|
public void run() {
|
|
|
- CustomPlayer player = getPlayer();
|
|
|
- int cu = player.getCu();
|
|
|
- int duration = player.getT();
|
|
|
- int exceptTargetPos = player.getExceptTargetPos(cu);
|
|
|
+ CustomIJKPlayer player = getPlayer();
|
|
|
+ long cu = player.getCu();
|
|
|
+ long duration = player.getT();
|
|
|
+ long exceptTargetPos = player.getExceptTargetPos(cu);
|
|
|
if (exceptTargetPos > 1000) {
|
|
|
if (isTag) {
|
|
|
LOG.i(TAG, "第二段cu:" + exceptTargetPos);
|
|
@@ -340,7 +343,7 @@ public class AccompanyPlayHelper implements MediaPlayer.OnCompletionListener {
|
|
|
loopHandler.postDelayed(mTuneRunnable, 10);
|
|
|
getPlayer().stop();
|
|
|
getPlayer().setPrepareSeekPosition(-1);
|
|
|
- getPlayer().play(false, tuneSrc);
|
|
|
+ getPlayer().play(false, Constants.DEFAULT_PLAY_SPEED, tuneSrc);
|
|
|
|
|
|
|
|
|
|
|
@@ -426,7 +429,7 @@ public class AccompanyPlayHelper implements MediaPlayer.OnCompletionListener {
|
|
|
|
|
|
}
|
|
|
|
|
|
- private void sendPlayProgressMessage(int cu, int duration) {
|
|
|
+ private void sendPlayProgressMessage(long cu, long duration) {
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
JSONObject contentObject = new JSONObject();
|
|
|
try {
|
|
@@ -477,9 +480,9 @@ public class AccompanyPlayHelper implements MediaPlayer.OnCompletionListener {
|
|
|
wavRecorder = null;
|
|
|
}
|
|
|
|
|
|
- private CustomPlayer getPlayer() {
|
|
|
+ private CustomIJKPlayer getPlayer() {
|
|
|
if (player == null) {
|
|
|
- player = new CustomPlayer();
|
|
|
+ player = new CustomIJKPlayer();
|
|
|
player.setOnCompletionListener(this);
|
|
|
}
|
|
|
return player;
|
|
@@ -522,6 +525,10 @@ public class AccompanyPlayHelper implements MediaPlayer.OnCompletionListener {
|
|
|
}
|
|
|
|
|
|
public void toPlay2(long startTime, int firstNoteTime, boolean isMute) {
|
|
|
+ toPlay2(startTime, firstNoteTime, Constants.DEFAULT_PLAY_SPEED, isMute);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void toPlay2(long startTime, int firstNoteTime, float speed, boolean isMute) {
|
|
|
if (TextUtils.isEmpty(musicSrc)) {
|
|
|
return;
|
|
|
}
|
|
@@ -529,16 +536,17 @@ public class AccompanyPlayHelper implements MediaPlayer.OnCompletionListener {
|
|
|
UserHelper.setCustomCache(DELAY_FOR_CURRENT_CACHE_KEY, 0);
|
|
|
isTag = true;
|
|
|
startPlayTime = startTime;
|
|
|
- Log.i("pq", "评测曲子startTime:" + startPlayTime);
|
|
|
+ LOG.i("pq", "评测曲子startTime:" + startPlayTime);
|
|
|
loopHandler.removeCallbacksAndMessages(null);
|
|
|
loopHandler.postDelayed(mRunnable2, 10);
|
|
|
getPlayer().stop();
|
|
|
getPlayer().setPrepareSeekPosition(firstNoteTime);
|
|
|
- getPlayer().play(isMute, musicSrc);
|
|
|
+ getPlayer().play(isMute, speed, musicSrc);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
@Override
|
|
|
- public void onCompletion(MediaPlayer mp) {
|
|
|
+ public void onCompletion(IMediaPlayer iMediaPlayer) {
|
|
|
LOG.i(TAG, "play onCompletion");
|
|
|
if (loopHandler != null) {
|
|
|
loopHandler.removeCallbacks(mRunnable2);
|