我爲SoundManagement創建了一個包,其中一個類擴展了MediaPlayer。我希望全球控制這個變量。這是我的代碼:Android MediaPlayer錯誤(開始在狀態1中調用;錯誤(-38,0);錯誤(-38,0))
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',那麼'MusicManager'對象**是一個**'MediaPlayer'。那麼爲什麼你要創建一個新的'MediaPlayer',以便你有兩個'MediaPlayer's?你確定這是你想要的嗎?也許這是你想要的,我不明白你的代碼,但我以前看過那個錯誤。 – ajb
@ajb ...我認爲問題在於MediaPlayer沒有公開大量的內部工作,並將很多方法標記爲final。 ...但是,它仍然不是最佳方法。 – ajacian81
對不起,我只是想成爲一個在整個應用程序中是全球性的媒體播放器。我將有多個活動操縱它(暫停,開始,創建),我需要它在一個單獨的格式。我曾嘗試在每個活動中使用單個MediaPlayer,並且事情變得很快。 – Azurai