如何使用首选项中的复选框播放/停止MediaPlayer?

时间:2015-03-26 04:44:24

标签: android checkbox android-mediaplayer preference

在此代码中,我在xml文件夹中创建了一个带有“music”键的首选项复选框。

   <?xml version="1.0" encoding="utf-8"?>
   <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >

    <CheckBoxPreference 
    android:title="Music"
    android:key="music"
    android:defaultValue="true"
    android:summary="Check/Uncheck this to switch on/off sound"
    />

    </PreferenceScreen> 

如果选中此复选框,则我的媒体播放器将开始播放。如果未选中,则无法启动。但是在取消选中之后,音乐并没有立即停止。

我想要实现的是,如果我取消选中偏好设置中的复选框,音乐应立即停止

下面是我在MainActivity中编写的代码,我也在onPause()方法中使用了这段代码。但没有任何作用。

希望你能帮帮我们..先谢谢你们..

        MediaPlayer song;
        song= MediaPlayer.create(this, R.raw.bg);
        song.setLooping(true);
        SharedPreferences prefs=PreferenceManager.getDefaultSharedPreferences(getBaseContext());
        Boolean music=prefs.getBoolean("music", true);
        if(music == true)
        song.start();

2 个答案:

答案 0 :(得分:0)

音乐停止和开始应该是选中/取消选中复选框。

yourCheckbox.setOnClickListener(new OnClickListener() { 
      @Override
      public void onClick(View v) {
        //is yourCheckbox checked?
        if (((CheckBox) v).isChecked()) {
            if(song.isPlaying())
                song.stop();
        }
    }
});

答案 1 :(得分:0)

如果是PreferenceActivity,你可以这样做,

music = findPreference("music");

music.setOnPreferenceClickListener(new OnPreferenceClickListener() {

@Override
public boolean onPreferenceClick(Preference preference) {
        //code to stop Music
        return false;
    }
});