[英]Error when trying to play mp3 in Android java app with Media Player
我正在嘗試播放正確存儲在我的 res/raw 文件夾中的 mp3 文件。 但要達到這個目標似乎相當困難。 我在導航架構中定義的目的地內有一個按鈕。 它的名字是:英文。 在其代碼中,我們可以找到附加到其視圖中唯一按鈕的此偵聽器......
//Button related to play btn
view.findViewById(R.id.btn_audio).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AssetFileDescriptor afd = getActivity().getResources().openRawResourceFd(R.raw.a01);
try {
player.setDataSource(afd.getFileDescriptor());
player.prepare();
player.start();
} catch (IOException e) {
e.printStackTrace();
}
}
});
按下按鈕時,錯誤是:
E/MediaPlayer: error (1, -2147483648)
W/System.err: java.io.IOException: Prepare failed.: status=0x1
at android.media.MediaPlayer._prepare(Native Method)
at android.media.MediaPlayer.prepare(MediaPlayer.java:1163)
at com.example.myapplication.Ingles$3.onClick(Ingles.java:74)
W/System.err: at android.view.View.performClick(View.java:5198)
at android.view.View$PerformClick.run(View.java:21147)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
而且我不知道為什么以及現在該怎么做才能解決這個問題……有什么線索嗎?
僅當無法讀取提供的 AFD 時,MediaPlayer.Prepare() 才會在使用 AFD 時引發 IOException(請參閱MediaPlayer.setDataSource() )。 開發人員完全負責關閉創建的文件描述符,不關閉它會導致編譯時發生沖突。 您可以在調用 MediaPlayer.setDataSource() 后直接執行此操作。
設置要使用的數據源 (AssetFileDescriptor)。 關閉文件描述符是調用者的責任。 此調用返回后立即執行此操作是安全的。 ( 見 AssetFileDescriptor.close() )
view.findViewById(R.id.btn_audio).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AssetFileDescriptor afd = getActivity().getResources().openRawResourceFd(R.raw.a01);
try {
player.setDataSource(afd.getFileDescriptor());
afd.close();
player.prepare();
player.start();
} catch (IOException e) {
e.printStackTrace();
}
}
});
如果問題仍然存在,這可能意味着您的文件已損壞或格式不正確。 更可能的答案是您沒有正確檢索您的 RAW 文件。
我已經嘗試了上述解決方案,但結果一直是錯誤:
E/MediaPlayer: error (1, -2147483648)
W/System.err: java.io.IOException: Prepare failed.: status=0x1
at android.media.MediaPlayer._prepare(Native Method)
at android.media.MediaPlayer.prepare(MediaPlayer.java:1163)
at com.example.myapplication.Ingles$3.onClick(Ingles.java:75)
at android.view.View.performClick(View.java:5198)
at android.view.View$PerformClick.run(View.java:21147)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
我要播放的文件是 mp3,所以應該完全兼容。 但我忘了提到我是從導航中的片段調用它......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.