0

我需要编写一个非常简单的 android 应用程序,但我有一个严重的问题。

这是我的课:

package com.music.playa;

import java.util.Random;

import android.app.Activity;
import android.content.Context;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class PlayMusic extends Activity {

    MediaPlayer mediaPlayer;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    public void playSound() {

        try {
            mediaPlayer.stop();
            mediaPlayer.reset();
            mediaPlayer.release();
            mediaPlayer = null;         
        } catch (Exception ex) {

        }

        String[] sounds = { "sound1", "sound2", "sound3" };
        mediaPlayer = null;
        int path = getResources().getIdentifier(
                sounds[new Random().nextInt(sounds.length)], "raw",
                getPackageName());
        mediaPlayer = MediaPlayer.create(this, path);

        mediaPlayer
                .setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                    public void onCompletion(MediaPlayer mp) {
                        // do something...
                    }
                });

        mediaPlayer.setVolume(1, 1);
        mediaPlayer.start();

    }

}

问题是,当我一直按下按钮调用 PlaySound 函数时,过了一会儿(大约按下按钮 40-50 次),控制台会抛出很多错误:

05-28 12:56:00.202: E/MediaPlayer(755): error (-38, 0)
05-28 12:56:01.153: E/MediaPlayer(755): error (-19, 0)
05-28 12:56:01.153: E/MediaPlayer(755): Error (-19,0)

声音停止播放。

我应该怎么办?

安卓 SDK 2.3.3

4

1 回答 1

0

您应该将媒体播放器实例创建为 PlayMedia 类的一个字段,并在设置按钮的 onClick 侦听器之前对其进行初始化。

在 onResume() 中准备它并在 onPause() 中释放它。您的按钮唯一需要做的就是停止/启动。

于 2012-05-28T14:26:01.793 回答