Android中的开/关音乐

时间:2013-08-19 14:15:29

标签: java android audio audio-player android-music-player

我的安卓游戏的主菜单有四个按钮。在我的选择中,有开和关。当用户点击开启按钮时,我开始点击播放时应播放音乐。如果用户点击关闭,音乐将无法播放。但默认情况是,音乐会播放。

我尝试自行编码,如果用户点击on按钮,则此sign变量将设置为1,此值将传递给播放活动。如果符号值等于1,音乐将开始;如果为0,音乐将无法播放。但是,在我这样做之后,在我点击之后,它会导致我游戏的“FORCE CLOSE”。

我的选项活动有以下代码:

musicOn.setOnClickListener(new OnClickListener(){

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub

    Intent put = new Intent(getApplicationContext(), Level1.class); 

    musicSwitch = 1;
    Bundle cargo = new Bundle();
    cargo.putInt("sign", musicSwitch);

    put.putExtras(cargo);
    }
});

musicOff.setOnClickListener(new OnClickListener(){

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

    Intent put = new Intent(getApplicationContext(), Level1.class);             
    musicSwitch = 0;
    Bundle cargo = new Bundle();
    cargo.putInt("sign", musicSwitch);

    put.putExtras(cargo);
    }

});

这是我的level1活动:

int value=1;

Bundle cargo = getIntent().getExtras();
value = cargo.getInt("sign");

if(value==1){
MediaPlayer mPlayer = MediaPlayer.create(Level1.this, R.raw.sounds);
mPlayer.start();
mPlayer.setLooping(true);
}

2 个答案:

答案 0 :(得分:0)

请发布logcat以更准确。

我认为它是强制关闭的,因为当值等于0时你没有告诉它该做什么。

if(value==1){
MediaPlayer mPlayer = MediaPlayer.create(Level1.this, R.raw.sounds);
mPlayer.start();
mPlayer.setLooping(true);
} else if(value == 0){
mPlayer.stop();
}

我建议你不要只在if语句中使mPlayer静态。

答案 1 :(得分:0)

您正在创建意图,但没有对它们做任何事情。我想你在假设

Intent put = new Intent(getApplicationContext(), Level1.class); 

将允许您向最初启动Activity的Intent添加额外内容,但事实并非如此。除非您使用它来启动新活动,否则您创建的此Intent将不会执行任何操作。在onClick方法完成后,它将被GC转储。

因此当你运行getIntent().getExtras(); Bundle时,它返回的内容将不包括你在onClick方法中添加的额外内容。

最好使用可由视图和活动访问的静态成员变量。如果您希望它在游戏会话之间持续存在,请将其存储在SharedPreference中。