Selaa lähdekoodia

增加调音器首页播放音叉音逻辑

Pq 2 vuotta sitten
vanhempi
commit
983f49294a

+ 38 - 1
musictuner/src/main/java/com/cooleshow/musictuner/MusicTunerActivity.java

@@ -34,6 +34,7 @@ public class MusicTunerActivity extends BaseActivity<ActivityMusicTunerLayoutBin
     private MusicTunerHelper mMusicTunerHelper;
     private MusicTunerSettingDialog mTunerSettingDialog;
     private MusicTuningForkDialog mTuningForkDialog;
+    private boolean isOnPlayMusicFork = false;//是否正在播放当前音叉音
 
     public static void start(Context context) {
         Intent intent = new Intent(context, MusicTunerActivity.class);
@@ -58,6 +59,7 @@ public class MusicTunerActivity extends BaseActivity<ActivityMusicTunerLayoutBin
         viewBinding.ivHzAdd.setOnClickListener(this);
         viewBinding.ivHzReduce.setOnClickListener(this);
         viewBinding.ivLeftBg.setOnClickListener(this);
+        viewBinding.ivRightBg.setOnClickListener(this);
         viewBinding.toolbarInclude.tvRightText.setOnClickListener(this);
         viewBinding.toolbarInclude.tvRightText.setText("设置");
         viewBinding.toolbarInclude.tvRightText.setCompoundDrawablePadding(SizeUtils.dp2px(5));
@@ -160,6 +162,20 @@ public class MusicTunerActivity extends BaseActivity<ActivityMusicTunerLayoutBin
             showTuningForkDialog();
             return;
         }
+
+        if (id == R.id.iv_right_bg) {
+            //播放音叉功能
+            if (isOnPlayMusicFork) {
+                //播放中就暂停
+                pauseMusicFork();
+                viewBinding.ivPlayFork.setImageResource(R.drawable.icon_music_tuner_normal);
+            } else {
+                //未播放触发播放
+                playMusicFork();
+                viewBinding.ivPlayFork.setImageResource(R.drawable.icon_music_tuner_select);
+            }
+            return;
+        }
     }
 
     private void showTuningForkDialog() {
@@ -168,7 +184,9 @@ public class MusicTunerActivity extends BaseActivity<ActivityMusicTunerLayoutBin
             mTuningForkDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
                 @Override
                 public void onDismiss(DialogInterface dialog) {
-                    AudioTrackManager.getInstance().stop();
+                    if (!isOnPlayMusicFork) {
+                        AudioTrackManager.getInstance().stop();
+                    }
                 }
             });
         }
@@ -177,6 +195,25 @@ public class MusicTunerActivity extends BaseActivity<ActivityMusicTunerLayoutBin
         }
     }
 
+    private void playMusicFork() {
+        int currentMusicMenu;
+        if (mTuningForkDialog != null) {
+            currentMusicMenu = mTuningForkDialog.getCurrentMusicMenu();
+            if (currentMusicMenu == -1) {
+                currentMusicMenu = (int) VoiceDataUtils.DEFAULT_MUSIC_FORK_MUSIC;
+            }
+        } else {
+            currentMusicMenu = (int) VoiceDataUtils.DEFAULT_MUSIC_FORK_MUSIC;
+        }
+        AudioTrackManager.getInstance().play(currentMusicMenu);
+        isOnPlayMusicFork = true;
+    }
+
+    private void pauseMusicFork() {
+        AudioTrackManager.getInstance().stop();
+        isOnPlayMusicFork = false;
+    }
+
     private void updateCurrentHzStandardText() {
         int currentMusicHzStandard = VoiceDataUtils.getInstance().getCurrentMusicHzStandard();
         viewBinding.ivMusicHzTip.setVisibility(currentMusicHzStandard == VoiceDataUtils.DEFAULT_MUSIC_HZ_STANDARD_440_HZ ? View.GONE : View.VISIBLE);

+ 1 - 0
musictuner/src/main/java/com/cooleshow/musictuner/utils/VoiceDataUtils.java

@@ -28,6 +28,7 @@ public class VoiceDataUtils {
     public static final int MAX_MUSIC_POS = 8;//最大C8 D8这种
     public static final int MIN_MUSIC_POS = 0;//最小C0 D0这种
     public static final int DEFAULT_MUSIC_POS = 5;//默认
+    public static final double DEFAULT_MUSIC_FORK_MUSIC = 523.3;//默认音叉播放的音
     public int currentMusicHzStandard = DEFAULT_MUSIC_HZ_STANDARD_440_HZ;
 
     private VoiceDataUtils() {

+ 10 - 0
musictuner/src/main/java/com/cooleshow/musictuner/widget/MusicTuningForkDialog.java

@@ -131,4 +131,14 @@ public class MusicTuningForkDialog extends Dialog implements View.OnClickListene
             mTvCurrentMusicPosition.setText(String.valueOf(currentMusicPos));
         }
     }
+
+    public int getCurrentMusicMenu() {
+        if (mTuningForkAdapter != null) {
+            int currentSelectPos = mTuningForkAdapter.getCurrentSelectPos();
+            if (currentSelectPos != -1) {
+                return (int) VoiceDataUtils.getInstance().getTargetFromSamples(currentSelectPos, currentMusicPos);
+            }
+        }
+        return -1;
+    }
 }

BIN
musictuner/src/main/res/drawable-xhdpi/icon_arrow_top_bottom.png


BIN
musictuner/src/main/res/drawable-xhdpi/icon_music_tuner_select.png


BIN
musictuner/src/main/res/drawable-xxhdpi/icon_arrow_top_bottom.png


BIN
musictuner/src/main/res/drawable-xxhdpi/icon_music_tuner_select.png


+ 1 - 0
musictuner/src/main/res/layout/activity_music_tuner_layout.xml

@@ -235,6 +235,7 @@
 
 
     <ImageView
+        android:id="@+id/iv_play_fork"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:src="@drawable/icon_music_tuner_normal"

+ 15 - 5
musictuner/src/main/res/layout/dialog_setting_layout.xml

@@ -6,8 +6,8 @@
     android:layout_height="wrap_content"
     android:background="@drawable/bg_white_14dp"
     android:paddingStart="18dp"
-    android:paddingBottom="19dp"
-    android:paddingEnd="18dp">
+    android:paddingEnd="18dp"
+    android:paddingBottom="19dp">
 
     <TextView
         android:id="@+id/tv_title"
@@ -33,12 +33,12 @@
         app:layout_constraintTop_toBottomOf="@+id/tv_title" />
 
     <TextView
-        android:text="没有移调"
         android:id="@+id/tv_current_transposing"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:includeFontPadding="false"
         android:paddingStart="15dp"
+        android:text="没有移调"
         android:textColor="@color/color_333333"
         android:textSize="@dimen/sp_16"
         app:layout_constraintBottom_toBottomOf="@+id/view_transposing_bg"
@@ -46,6 +46,16 @@
         app:layout_constraintTop_toTopOf="@+id/view_transposing_bg"
         tools:text="长笛:C大调" />
 
+
+    <ImageView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginEnd="12dp"
+        android:src="@drawable/icon_arrow_top_bottom"
+        app:layout_constraintBottom_toBottomOf="@+id/view_transposing_bg"
+        app:layout_constraintRight_toRightOf="@+id/view_transposing_bg"
+        app:layout_constraintTop_toTopOf="@+id/view_transposing_bg" />
+
     <View
         android:id="@+id/view_line"
         android:layout_width="match_parent"
@@ -126,8 +136,6 @@
 
     <TextView
         android:id="@+id/tv_confirm"
-        app:layout_constraintRight_toRightOf="parent"
-        app:layout_constraintLeft_toLeftOf="parent"
         android:layout_width="0dp"
         android:layout_height="40dp"
         android:layout_marginTop="14dp"
@@ -136,5 +144,7 @@
         android:text="确认"
         android:textColor="@color/white"
         android:textSize="@dimen/sp_16"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
         app:layout_constraintTop_toBottomOf="@+id/tv_reset" />
 </androidx.constraintlayout.widget.ConstraintLayout>