0

我的应用程序中有 4 个切换按钮。所有这些都是为了在应用程序中循环声音。因此,这意味着当我想单击第一个 ToggleButoon 并且它的状态将打开时,音乐开始播放并继续循环直到它的状态为ON。其余的切换按钮也是如此。它们可能同时开启(全部),所以我打算让 4 个媒体播放器循环播放。
这是我为第一个 TogglleButton 编写的代码,到目前为止,即使有一个也没有运气......

    public MediaPlayer resourcePlayer;
    Context appContext = getApplicationContext();
    resourcePlayer = MediaPlayer.create(appContext,R.raw.loop1);
    .....
    .....
    public void onClick (View v){
    switch (v.getId()) {
    case R.id.toggleButton1:
    boolean on = ((ToggleButton) v).isChecked();

    if (on) {
    resourcePlayer.start();
    resourcePlayer.setLooping(true)
    }
    else {
    resourcePlayer.stop();
    }

    break;
    }

当我单击 ToggleButton 时,没有任何反应,只有手机上的状态在改变,我可以看到,LogCat 也很清晰。谢谢)
UPD1:现在它正在循环,但是当我更改状态时它不会停止并继续循环。
UPD2:resourcePlayer 在主要活动中是公开的
UPD3:我已将 MediaPlayer 变量取出到 onCreate 方法中,以免重复。它播放和停止,但只有在 Logcat 给出错误消息之后的第一次

    MediaPlayer start called in state 0
    ....
    ....
    MediaPlayer stop called in state 0
4

2 回答 2

1

你需要使用 resourcePlayer.setLooping(true); 或假

对于您的 UPD3:

因为您正在停止 resourcePlayer,所以它需要重新分配声源,但在您的情况下,它仅在仅第一次调用的 oncreate 方法中分配。所以每次你想在停止后播放时都需要重新初始化它。

于 2012-11-29T05:53:52.443 回答
1

我认为这是因为您继续创建媒体播放器的新实例。所以你总是向新创建的媒体播放器对象发送停止命令,而不是当前正在播放的对象。

于 2012-11-29T07:51:46.470 回答