【问题标题】:Error in playing the sound on a button click单击按钮时播放声音时出错
【发布时间】:2013-12-22 03:06:14
【问题描述】:

我在我的活动中添加了两个 imageButton,单击每个按钮应该播放不同的声音。 但是当我点击任何按钮时,声音不会播放,并且日志显示错误。

LOGCAT 错误

09-30 15:19:07.436: D/dalvikvm(477): GC_EXTERNAL_ALLOC freed 629 objects / 50520 bytes in 180ms
09-30 15:19:10.226: E/MediaPlayer(477): start called in state 1
09-30 15:19:15.276: E/MediaPlayer(477): start called in state 1

这是我写的一段代码,

import android.media.MediaPlayer;

public class MainActivity extends Activity {


MediaPlayer mp;
ImageButton iV1,iV2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    iV1 = (ImageButton)findViewById(R.id.iV1);
    iV2 = (ImageButton)findViewById(R.id.iV2);
    mp = MediaPlayer.create(this, R.raw.bud);
    mp = MediaPlayer.create(this, R.raw.classic);

iV1.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
        mp = new MediaPlayer();
        mp.prepare();

        mp.start();

    }});

iV2.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {

        mp = new MediaPlayer(); 
        mp.prepare();
        mp.start();

    }});

    }
}

请帮助我。任何帮助将不胜感激。我是这个 Android 环境的新手。

提前致谢。

【问题讨论】:

    标签: android audio


    【解决方案1】:

    这是一个状态机问题,正如日志中明确指出的那样:

    09-30 15:19:10.226: E/MediaPlayer(477): start called in state 1
    

    参考: http://developer.android.com/reference/android/media/MediaPlayer.html#StateDiagram

    例如,我不知道你在哪里打电话

    MediaPlayer.setDataSource();
    MediaPlayer.Prepare() 
    

    【讨论】:

      【解决方案2】:

      这里有几个问题。首先,每次按下按钮时,您都会创建一个新的 MediaPlayer 对象。您应该删除这些行:

      mp = new MediaPlayer();
      mp1 = new MediaPlayer();
      

      您已经使用静态创建方法创建了对象。

      同样如前所述,您需要在调用 start 之前调用 prepare:

      mp.prepare();
      mp.start();
      

      【讨论】:

        【解决方案3】:

        【讨论】:

          【解决方案4】:

          使用 MediaPlayer 播放按钮声音时很容易遇到麻烦,尤其是使用更多按钮时。我在这里描述了一个使用 SoundPool 的解决方案:How to Play sound when button is clicked in Android?

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-07-07
            • 1970-01-01
            • 2016-01-24
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多