java.io.IOException:准备失败:状态=0x1

java.io.IOException:准备失败:状态=0x1,java,android,Java,Android,请帮助我解决此错误,我在过去5天尝试此操作,但无法解决此问题 由于android中的“文本讲话”没有暂停状态,所以我尝试使用mediaplayer暂停和播放 将文本字符串转换为.3gp格式并存储在SD卡中,到目前为止工作正常,但我在mediaPlayer中遇到了问题,它抛出了以下错误 07-10 09:12:12.279: D/(13589): temper destination file/mnt/sdcard/tmpaudio.3gp 07-10 09:12:12.279: I/TextTo

请帮助我解决此错误,我在过去5天尝试此操作,但无法解决此问题

由于android中的“文本讲话”没有暂停状态,所以我尝试使用mediaplayer暂停和播放

将文本字符串转换为.3gp格式并存储在SD卡中,到目前为止工作正常,但我在mediaPlayer中遇到了问题,它抛出了以下错误

07-10 09:12:12.279: D/(13589): temper destination file/mnt/sdcard/tmpaudio.3gp
07-10 09:12:12.279: I/TextToSpeech.java - synthesizeToFile(13589): synthesizeToFile text of length 256
07-10 09:12:12.479: D/MediaPlayer(13589): setDataSource(tmpaudio.3gp)
07-10 09:12:12.489: E/MediaPlayer(13589): error (1, -2147483648)
07-10 09:12:12.489: W/System.err(13589): java.io.IOException: Prepare failed.: status=0x1
07-10 09:12:12.489: W/System.err(13589):    at android.media.MediaPlayer.prepare(Native Method)
07-10 09:12:12.489: W/System.err(13589):    at net.sf.andpdf.pdfviewer.PdfViewerActivity$GraphView$2.onClick(PdfViewerActivity.java:651)
07-10 09:12:12.489: W/System.err(13589):    at android.view.View.performClick(View.java:2485)
07-10 09:12:12.489: W/System.err(13589):    at android.view.View$PerformClick.run(View.java:9080)
07-10 09:12:12.489: W/System.err(13589):    at android.os.Handler.handleCallback(Handler.java:587)
07-10 09:12:12.489: W/System.err(13589):    at android.os.Handler.dispatchMessage(Handler.java:92)
07-10 09:12:12.489: W/System.err(13589):    at android.os.Looper.loop(Looper.java:130)
07-10 09:12:12.489: W/System.err(13589):    at android.app.ActivityThread.main(ActivityThread.java:3683)
07-10 09:12:12.489: W/System.err(13589):    at java.lang.reflect.Method.invokeNative(Native Method)
07-10 09:12:12.489: W/System.err(13589):    at java.lang.reflect.Method.invoke(Method.java:507)
07-10 09:12:12.489: W/System.err(13589):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:875)
07-10 09:12:12.489: W/System.err(13589):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:633)
07-10 09:12:12.489: W/System.err(13589):    at dalvik.system.NativeStart.main(Native Method)
07-10 09:12:12.489: D/MediaPlayer(13589): start state 0
07-10 09:12:12.489: E/MediaPlayer(13589): start called in state 0
07-10 09:12:12.489: E/MediaPlayer(13589): error (-38, 0)
07-10 09:12:12.529: E/MediaPlayer(13589): Error (-38, 0)
代码:

public void onClick(视图v){
mediaPlayer=新的mediaPlayer();
if(mBtplay.getText().equals(getString(R.string.play_str))){
PdfReader reader=null;
试一试{
阅读器=新的PDF阅读器(PDFFielName);
}捕获(IOE3异常){
//TODO自动生成的捕捉块
e3.printStackTrace();
}
int num=mPdfPage.getPageNumber();
字符串str=null;
试一试{
str=PdfTextExtractor.getTextFromPage(
阅读器,num);
}捕获(IOE2异常){
//TODO自动生成的捕捉块
e2.printStackTrace();
}
HashMap myHashRender=新建HashMap();
myHashRender.put(TextToSpeech.Engine.KEY\u PARAM\u outrance\u ID,str);
文件appTmpPath=Environment.getExternalStorageDirectory();
System.out.println(“”)
+appTmpPath.getAbsolutePath());
appTmpPath.mkdirs();
字符串tempFilename=“tmpaudio.3gp”;
最终字符串tempDestFile=appTmpPath
.getAbsolutePath()+“/”+临时文件名;
Log.d(“,”回火目标文件“+tempDestFile”);
mTts.合成文件(str、myHashRender、,
临时文件);
试一试{
mediaPlayer.setDataSource(tempDestFile);
mediaPlayer.prepare();
}捕获(IllegalArgumentException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(非法状态){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
试一试{
mediaPlayer.start();
}捕获(例外e){
系统输出打印项次(“+e”);
}
}否则{
试一试{
Log.d(“,”暂停“);
mBtplay.setText(getString(R.string.pause_str));
mediaPlayer.pause();
}捕获(例外pa){
如果(mediaPlayer!=null){
mediaPlayer.stop();
mediaPlayer.release();
}
}
}   
}

我有一些建议给你。按照给定的顺序逐个尝试这些

1) 在播放之前,请检查您试图播放的文件是否存在以及路径是否正确

2) 尝试不同的音频格式,如mp3

3) 使用文件描述符而不是文件路径,即

FileInputStream fis = new FileInputStream(pathoffiletobeplayed);
mediaPlayer.setDataSource(fis.getFD());
4) 在
setDataSource()之前调用
reset()


1是强制性的。如果没有成功,请尝试2-3-4的所有组合。

我有一些建议给你。按照给定的顺序逐个尝试这些

1) 在播放之前,请检查您试图播放的文件是否存在以及路径是否正确

2) 尝试不同的音频格式,如mp3

3) 使用文件描述符而不是文件路径,即

FileInputStream fis = new FileInputStream(pathoffiletobeplayed);
mediaPlayer.setDataSource(fis.getFD());
4) 在
setDataSource()之前调用
reset()

1是强制性的。如果没有成功,请尝试2-3-4的所有组合

  • 检查对媒体文件的引用是否已正确释放
  • 使用系统中的音频工具播放
  • 检查对媒体文件的引用是否已正确释放
  • 使用系统中的音频工具播放

  • 我尝试了所有这些步骤,但问题尚未解决。如果我将歌曲放入原始文件夹,但通过/sdcard/file.mp3未找到给定文件。但是如果我签入目录文件存在,您是否在清单文件中具有读取外部存储权限?文件保存在sdcard中。如何通过SetDataSource访问该文件我尝试了所有这些步骤,但问题尚未解决。如果我将歌曲放入原始文件夹,则将播放歌曲,但通过/sdcard/file.mp3未找到给定文件。但是如果我签入目录文件存在,您在清单文件中是否具有读取外部存储权限?文件保存在sdcard中。如何通过setdatasource访问该文件