簡體   English   中英

Android MediaPlayer在狀態1下啟動。錯誤-38,0

[英]Android MediaPlayer start called in State 1. Error -38,0

美好的一天! 像往常一樣-我開始學習Android編程,並且在嘗試創建基本的MediaPlayer應用程序時遇到了意外的困難。 音頻文件存儲在res / raw中。 通過create()訪問。 我已經閱讀了一些有關如何構建媒體播放器應用程序的手冊,並確信如果文件存儲在res / raw文件夾中,則無需使用prepare()prepareAsync() 這是我的初始代碼

private MediaPlayer playerM = new MediaPlayer();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button playButton = (Button) findViewById(R.id.playButton);
    playButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            playMusic(R.raw.sleep_away);
        }
    });
    Button stopButton = (Button) findViewById(R.id.pauseButton);
    stopButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            stopMusic();
        }
    });
}

private void playMusic(int rid) {
    playerM.create(this, rid);
    playerM.start();
}

private void stopMusic() {
    playerM.stop();
}

}

從那以后,我進行了許多更改,但沒有任何幫助。 根據MediaPlayer上的dev.android手冊,上面的代碼應該可以工作。 但是,它導致以下錯誤: E/MediaPlayer: start called in state 1, mPlayer(0x0) E/MediaPlayer: error (-38, 0) E/MediaPlayer: Error (-38,0)

可能我只是在犯一些直率的錯誤。 任何幫助將非常感激。

由我自己解決

playButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            try{

                Uri myUri = Uri.parse("android.resource://" + v.getContext().getPackageName() + "/" + R.raw.sleep_away);
                System.out.println(myUri);
                playerM.setDataSource(v.getContext(), myUri);
                playerM.prepare();
                playerM.setOnPreparedListener(new MediaPlayer.OnPreparedListener(){
                    @Override
                    public void onPrepared(MediaPlayer playerM){
                        playerM.start();
                    }
                });
            }catch(IOException e){
                e.printStackTrace();
            }


        }
    });

我知道我應該添加其他方法來更改State,但是主要目的是讓它播放文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM