2016-10-22 11 views
-1

をスローし、私は私のアプリは、次のコードを通じて警告音を使用するようにしようとしていますが、私は、スタックトレースは、次のメディアプレーヤーは例外

でのIOException

private void playSound() { 
    try { 
     AssetFileDescriptor afd = getAssets().openFd("sounds/alert.mp3"); 
     MediaPlayer mediaPlayer = new MediaPlayer(); 
     Log.d(TAG, "playSound: mediaplayer created...................."); 
     mediaPlayer.setDataSource(afd.getFileDescriptor()); 
     // MediaPlayer reads the file and gets ready to play 
     mediaPlayer.prepare(); 
     mediaPlayer.start(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

を取得します

10-22 22:46:47.380 8612-8612/com.example.android.timer E/MediaPlayer: Unable to to create media player 
10-22 22:46:47.400 8612-8612/com.example.android.timer W/System.err: java.io.IOException: setDataSourceFD failed.: status=0x80000000 
10-22 22:46:47.430 8612-8612/com.example.android.timer W/System.err:  at android.media.MediaPlayer.setDataSource(Native Method) 
10-22 22:46:47.430 8612-8612/com.example.android.timer W/System.err:  at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1032) 
10-22 22:46:47.430 8612-8612/com.example.android.timer W/System.err:  at com.example.android.timer.MainActivity.playSound(MainActivity.java:147) 
10-22 22:46:47.430 8612-8612/com.example.android.timer W/System.err:  at com.example.android.timer.MainActivity.access$000(MainActivity.java:23) 
10-22 22:46:47.430 8612-8612/com.example.android.timer W/System.err:  at com.example.android.timer.MainActivity$1.onPlayNotification(MainActivity.java:52) 
10-22 22:46:47.430 8612-8612/com.example.android.timer W/System.err:  at com.example.android.timer.MyTimer.run(MyTimer.java:113) 
10-22 22:46:47.430 8612-8612/com.example.android.timer W/System.err:  at android.os.Handler.handleCallback(Handler.java:615) 
10-22 22:46:47.430 8612-8612/com.example.android.timer W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:92) 
10-22 22:46:47.430 8612-8612/com.example.android.timer W/System.err:  at android.os.Looper.loop(Looper.java:137) 
10-22 22:46:47.440 8612-8612/com.example.android.timer W/System.err:  at android.app.ActivityThread.main(ActivityThread.java:4940) 
10-22 22:46:47.440 8612-8612/com.example.android.timer W/System.err:  at java.lang.reflect.Method.invokeNative(Native Method) 
10-22 22:46:47.440 8612-8612/com.example.android.timer W/System.err:  at java.lang.reflect.Method.invoke(Method.java:511) 
10-22 22:46:47.440 8612-8612/com.example.android.timer W/System.err:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798) 
10-22 22:46:47.440 8612-8612/com.example.android.timer W/System.err:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565) 
10-22 22:46:47.440 8612-8612/com.example.android.timer W/System.err:  at dalvik.system.NativeStart.main(Native Method) 

問題が配置されているMainActivity.java:147がラインである

mediaPlayer.setDataSource(afd.getFileDescriptor()); 

私のmp3ファイルassets/sounds/alert.mp3にあります。プロジェクトマネージャでは疑問符で表されています。何か案は?

答えて

2

試してみてください。それが動作しない場合は

player.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength()); 

、あなたはその後、生のフォルダにmp3を追加し、することができます

MediaPlayer player = MediaPlayer.create(this, R.raw.mp3_file); 
0

まあ答えは最終的には簡単でした。次

mediaPlayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(), afd.getLength()); 
0

mediaPlayer.setDataSource(afd.getFileDescriptor()); 

を交換し、このヘルプのおかげRESディレクトリ内の生のフォルダを作成し、このR.raw.alert.mp3.Sureのように生のフォルダおよび参照内のすべてのmp3ファイルを置く