gpt4 book ai didi

java - Android MediaPlayer 错误(在状态 1 中开始调用;错误 (-38, 0);错误 (-38,0))

转载 作者:行者123 更新时间:2023-11-30 02:55:50 32 4
gpt4 key购买 nike

我已经为 SoundManagement 创建了一个包,其中有一个扩展 MediaPlayer 的类。我希望全局控制这个变量。这是我的代码:

package soundmanagement;

import android.content.Context;

import android.media.MediaPlayer;

import java.io.IOException;

public class MusicManager extends MediaPlayer {

public static MediaPlayer mediaPlayer = new MediaPlayer();

public void MusicManager() {
}

public static MediaPlayer create(Context context, int musicID) {
if (mediaPlayer != null) {
mediaPlayer.release();
}
mediaPlayer.create(context, musicID);
try {
mediaPlayer.prepare();
} catch (IOException e) {
e.printStackTrace();
}
return mediaPlayer.create(context, musicID);
}

public void prepare() {
try {
mediaPlayer.prepare();
super.prepare();
} catch (IOException e) {
e.printStackTrace();
}
}

public void start() {
if (mediaPlayer != null) {
mediaPlayer.start();
}
super.start();
}

public void pause() {
mediaPlayer.pause();
super.pause();
}

public void stop() {
super.stop();
mediaPlayer.release();
}

public void release() {
mediaPlayer.release();
super.release();
}

public boolean isPlaying(boolean isPlaying) {
super.isPlaying();
return isPlaying;
}

public void setLooping(boolean setLoop) {
mediaPlayer.setLooping(setLoop);
super.setLooping(setLoop);
}
}

在我的 MainActivity.class 中,在 onCreate() 中,我所做的就是在 onCreate() 中编写这段代码:

MusicManager.mediaPlayer.create(MainActivity.this, R.raw.riseofcc);
MusicManager.mediaPlayer.start();

应用程序编译并运行良好,只是启动后没有音乐播放。

最佳答案

您对 MediaPlayer 采取了一种奇怪的方法,但让我印象深刻的是:

public static MediaPlayer create(Context context, int musicID) {
if (mediaPlayer != null) {
mediaPlayer.release();
}
mediaPlayer.create(context, musicID);
try {
mediaPlayer.prepare();
} catch (IOException e) {
e.printStackTrace();
}
return mediaPlayer.create(context, musicID);
}

你调用 mediaPlayer.create(),然后 .prepare(),然后再调用 create(...)?

此外,create 是一个静态方法,因此它应该被称为 MediaPlayer.create 并且您应该持有对它的引用。当您调用 prepare() 时,您是在尚未创建的 MediaPlayer 对象上调用 prepare()。

编辑:如果你想保留这个方法,相应地修改它:

public static MediaPlayer create(Context context, int musicID) {
if (mediaPlayer != null) {
mediaPlayer.release();
}
mediaPlayer = MediaPlayer.create(context, musicID);
try {
mediaPlayer.prepare();
} catch (IOException e) {
e.printStackTrace();
}
return mediaPlayer;
}

关于java - Android MediaPlayer 错误(在状态 1 中开始调用;错误 (-38, 0);错误 (-38,0)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23276786/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com