소스 검색

修改节拍器计时器间隔和节拍期望间隔不准确问题

Pq 1 년 전
부모
커밋
fb5ec2fb40
1개의 변경된 파일28개의 추가작업 그리고 27개의 파일을 삭제
  1. 28 27
      metronome/src/main/java/com/cooleshow/metronome/MetronomeActivity.java

+ 28 - 27
metronome/src/main/java/com/cooleshow/metronome/MetronomeActivity.java

@@ -68,33 +68,6 @@ public class MetronomeActivity extends BaseActivity<ActivityMetronomeLayoutBindi
     private long totalTime = -1;
     private long lastTime = -1;
 
-    private void handleMusic(long delayMillis) {
-        boolean tickOrTock = isTickOrTock();
-        long cTime = System.currentTimeMillis();
-        if (lastTime != -1) {
-            long diff = cTime - lastTime;
-            LOG.i("diff:" + diff);
-        }
-        lastTime = cTime;
-        if (tickOrTock) {
-            soundPool.play(tickVoiceId, 1F, 1F, 0, 0, 1F);
-        } else {
-            soundPool.play(tockVoiceId, 1F, 1F, 0, 0, 1F);
-        }
-        if (mMetronomeAdapter != null) {
-            mMetronomeAdapter.notifyData(playPosition);
-            mHandler.postDelayed(new Runnable() {
-                @Override
-                public void run() {
-                    //实现闪烁动画效果
-                    mMetronomeAdapter.notifyData(MetronomeAdapter.DEFAULT_SELECT_POSITION);
-                }
-            }, delayMillis / 2);
-        }
-        playPosition++;
-        totalTime = cTime;
-    }
-
     private List<MetronomeType> beatSymbolLists;
     private int currentSelectPosition;
     private MetronomeAdapter mMetronomeAdapter;
@@ -128,6 +101,33 @@ public class MetronomeActivity extends BaseActivity<ActivityMetronomeLayoutBindi
         return ActivityMetronomeLayoutBinding.inflate(getLayoutInflater());
     }
 
+    private void handleMusic(long delayMillis) {
+        boolean tickOrTock = isTickOrTock();
+        long cTime = System.currentTimeMillis();
+        if (lastTime != -1) {
+            long diff = cTime - lastTime;
+            LOG.i("diff:" + diff);
+        }
+        lastTime = cTime;
+        if (tickOrTock) {
+            soundPool.play(tickVoiceId, 1F, 1F, 0, 0, 1F);
+        } else {
+            soundPool.play(tockVoiceId, 1F, 1F, 0, 0, 1F);
+        }
+        if (mMetronomeAdapter != null) {
+            mMetronomeAdapter.notifyData(playPosition);
+            mHandler.postDelayed(new Runnable() {
+                @Override
+                public void run() {
+                    //实现闪烁动画效果
+                    mMetronomeAdapter.notifyData(MetronomeAdapter.DEFAULT_SELECT_POSITION);
+                }
+            }, delayMillis / 2);
+        }
+        playPosition++;
+        totalTime = cTime;
+    }
+
     private void setBeat(MetronomeType metronomeType) {
         currentBeatType = metronomeType;
         viewBinding.tvCurrentBeat.setText(metronomeType.getName());
@@ -223,6 +223,7 @@ public class MetronomeActivity extends BaseActivity<ActivityMetronomeLayoutBindi
         mHandler.post(mRunnable);
         isPlaying = true;
         totalTime = -1;
+        lastTime =-1;
         viewBinding.tvPlay.setText(getString(R.string.pause_play_str));
     }