在活动之间保存媒体播放器状态

时间:2015-11-29 12:38:55

标签: java android

我的设置活动中有一个媒体播放器,当切换按钮打开时播放一首歌曲。它工作正常,当活动改变时,音乐继续播放,这就是我想要的。问题是,当我再次返回设置活动时,切换按钮被设置为关闭,一旦点击它就会启动一个与当前播放器一起播放的新媒体播放器。无论如何它是否记得原始媒体播放器已开启?

public class Settings extends AppCompatActivity {
public MediaPlayer mp = null;
private SeekBar volumeSeekbar = null;
private AudioManager audioManager = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_settings);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    setVolumeControlStream(AudioManager.STREAM_MUSIC);
    initControls();


    Button b = (Button) findViewById(R.id.toggleButton);
    b.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Spinner spinner = (Spinner) findViewById(R.id.spinner);
            String text = spinner.getSelectedItem().toString();
            if (mp == null) {
                int song = getResources().getIdentifier(text, "raw", "com.example.dan14.memorygame");
                mp = MediaPlayer.create(Settings.this, song);
                mp.start();
            } else {
                mp.stop();
                mp = null;
            }
        }
    });
}

2 个答案:

答案 0 :(得分:1)

在我看来,你的代码应该至少在大多数时候都能正常工作。

尝试 public static MediaPlayer mp = null;

更新: 通常,当需要诸如音乐播放之类的活动间属性时,您应该尝试服务,这是一项重要的Android功能。至少你应该知道它并决定该怎么做。这是来自Google的综合教程。 http://developer.android.com/guide/topics/media/mediaplayer.html

答案 1 :(得分:0)

按钮移出onCreate并将其作为活动成员。