Android MediaPlayer在onBackPressed上停止

时间:2013-01-31 06:30:01

标签: android android-mediaplayer

MediaPlayer我遇到很多问题。 它可能与旧操作系统版本有关,至少在2.3之前。

某个声音在某个Activity播放正常(在启动另一个声音之前) 当我弹出第二个Activity以返回第一个时,我会在弹出之前播放声音文件(我使用super.onBackPressed)。

在这些旧设备(~2.3)上,声音文件被切断。 我使用相同的方式启动和播放MediaPlayer

我使用MediaPlayer(同步)创建create。我将MediaPlayer放在一个静态容器中保留。我发布了仅在setOnCompletionListener上清空容器的结束。发生了什么......

这是一些代码......

// Start sound
adhocplaysoundstatic(R.raw.soundfile, getApplicationContext()); 
// Pop activity
super.onBackPressed();

定义

static ArrayList<MediaPlayer> staticplayers = new ArrayList<MediaPlayer>();
static public void adhocplaysoundstatic(final int MEDIA, Context context) {
    MediaPlayer player = getMediaPlayerStatic(MEDIA, context);
    staticplayers.add(player); // Hold on to
    player.setOnCompletionListener(new OnCompletionListener() {
        @Override public void onCompletion(MediaPlayer mp) {
            mp.release();
            staticplayers.remove(mp);
        }
    });
    player.setOnPreparedListener(new OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            Log.d(LOG_TAG, "onPrepared, play!");
            mp.start();             
        }});
    //player.start();
}

更多...

static protected MediaPlayer getMediaPlayerStatic(int id, Context context) throws RuntimeException {
    MediaPlayer player = MediaPlayer.create(context, id);
    if (player == null) {
        throw new RuntimeException("Failed creating media player from id " + id);
    }
    else {
        player.setOnErrorListener(new OnErrorListener() {
            @Override public boolean onError(MediaPlayer mp, int what, int extra) {
                Log.d(LOG_TAG, "MediaPlayer error: " + mp.toString() + ", what: " + what + ", extra: " + extra);
                return false;
            }
        });
    }
    return player;
}

0 个答案:

没有答案