情况是这样的 我要播放的mp3 都是加过密的
我需要解密后才能正常的播放 那么就用到了linux的fifo管道 
代码如下:final String mFifoPath = this.getFilesDir().getAbsolutePath() +"/.mp3fifo.mp3";
int ret = Decrypt.mkfifo(mFifoPath);
if(ret == 0) {
new Thread(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
Decrypt.decrypt(mFifoPath,path);
}
}).start();
}
mMediaPlayer.setDataSource((new FileInputStream(new File(mFifoPath))).getFD());// 设置数据源
道理就是初始化一个fifo文件 然后呢将自己的文件放入到fifo文件管道中 并且解密:
SmartQMP3Decrypt.swfdecrypt(mFifoPath,path); 就是这句代码 
这个是用到jni的调用了 代码不方便全部给出然后mMediaPlayer.setDataSource((new FileInputStream(new File(mFifoPath))).getFD());
设置数据源为 我的这个fifopath中 fifo是一种读写同步的文件 这个文件在用完后会是空的 没数据 我这这样理解的 不知道可对 现在代码运行都是在setDataSource 方法出报错 :
IOException: setDataSourceFD failed.: status=0x80000000 不知道为什么 麻烦有没有大牛能指点指点

解决方案 »

  1.   

    你是否修改了 mFifoPath 文件的读写权限?  一般的 media 是没有root权限的。
    我遇到过类似问题
      

  2.   

    你是否修改了 mFifoPath 的文件权限,一般的meida是没有root权限的。
    我遇到过类似的问题
      

  3.   

    你是否修改了 mFifoPath 的文件权限,一般的meida是没有root权限的。
    我遇到过类似的问题
      

  4.   

    我没有改 但是我记得当我用可执行文件创建的一个 修改成root权限后
    代码执行时 fifo会 broken pipe的错误 
    所以我想可能不是这个原因 
    不知道是不是 MediaPlayer 本身的机制导致的