使用切换按钮控制声音

时间:2015-06-15 20:45:59

标签: android audio togglebutton

我需要我的应用程序在选中切换按钮时播放所有声音并在未选中时停止播放。所有声音我的意思是当按下活动和其他活动中的其他按钮时播放的声音。

以下是我的切换按钮:

<ToggleButton
    android:layout_width="70dp"
    android:layout_height="70dp"
    android:id="@+id/toggleButton"
    android:button="@drawable/check"
    android:background="@null"
    android:onClick="togglesound"
   />

Check.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- When selected, use grey -->
<item android:drawable="@drawable/speaker"
android:state_checked="true" />
<!-- When not selected, use white-->
<item android:drawable="@drawable/stopsound"
android:state_checked="false"/>
</selector>

我已经选择了一个静态变量“play”,当我选中切换按钮时,我打算将其值设置为1,否则设置为0。

 public void togglesound(View view) {
    boolean on = ((ToggleButton) view).isChecked();

    if (on) {
     play=1;
        // Enable sound
    } else {
       play=0;
        // Disable sound

    }

在此之后,我使用“play”来播放所需的声音

 if(play==1) 
 {
 over = MediaPlayer.create(Play.this, R.raw.over);
 over.start();
 over.setOnCompletionListener(
 newMediaPlayer.OnCompletionListener()
 {    
 public void onCompletion(MediaPlayer mp) {
 mp.release();
                }

            });
        }
 else
 {}

我面临的问题是切换按钮在第一次点击时工作正常,但即使未选中切换按钮也会播放声音。

1 个答案:

答案 0 :(得分:1)

最后解决了!!

而不是使用&#34; play&#34; &#34; on&#34;我只使用&#34; play&#34;这是一个静态布尔变量。因此,代码简化为 -

public void togglesound(View view) {
      play = ((ToggleButton) view).isChecked();
      }

我必须添加几行来保存切换按钮的状态。

 private static Bundle bundle = new Bundle();
 ToggleButton tg=(ToggleButton)findViewById(R.id.toggleButton);

   public void onPause() {
    super.onPause();
    bundle.putBoolean("ToggleButtonState", play);
     }

@Override
public void onResume() {
    super.onResume();
    tg.setChecked(bundle.getBoolean("ToggleButtonState",false));
     }