条件是不能利用java的接口,所以我也不确定这种纯C的方式可不可行。如果哪位大哥有实现过,麻烦赐教下!非常感谢。

解决方案 »

  1.   

    会纯 C 实现读取 wave 文件吗?如果会,使用 NDK 就可以了。
      

  2.   

    是新手,没用过,但是如果这种方式可行的话,可以立马去尝试。是只能读取wave的文件吗?NDK的例子好像是处理的PCM 。我想知道有没有哪种方式可以直接将.mp3(或者其他格式)文件读取播放就可以了的?或者有其他的方法能够帮我总结个思路也OK。非常感谢!!!
      

  3.   

    mp3 格式很复杂,原理上肯定没有问题;问题是 android 已经支持了 mp3player 了,不用这样重复发明了吧。
      

  4.   

    mp3要做decoder的,如果自己做,比较麻烦了。可以尝试用opencore/stagefright看一下。
    不过这个要自己琢磨了,貌似没有放出来的C接口的例子。如果只是个wave文件或者raw的pcm文件,那就太简单了。直接读文件,然后write出去就可以了。
      

  5.   

    Boss要求必须要用ndk的native实现。不可以用Java,甚至JNI都不可以,需要用纯C实现。所以想确定下ndk提供的接口是不是确实没法直接读取这些音频文件?
      

  6.   

    ndk 里面是有opensl es支持音频的。opencore/stagefright好像不支持吧?我没有弄懂,即使是那些二进制的音频文件,ndk是怎么读取的?
      

  7.   

    读取不是最简单了。fopenfread就可以。
      

  8.   

    这样读出来的就直接能出声音?可是native-audio并没有这样操作啊!它里面有个.h文件长这样的:     "\x00\x00\xfd\xff\x01\x00\x01\x00\xf9\xff\xfb\xff\x02\x00\x05\x00"
    "\x01\x00\x03\x00\x06\x00\x0a\x00\x0a\x00\x09\x00\x04\x00\x04\x00"
    "\x06\x00\x06\x00\x00\x00\xff\xff\x05\x00\x08\x00\x01\x00\xfe\xff"
    "\xff\xff\x03\x00\x04\x00\xfe\xff\xf9\xff\xfd\xff\x04\x00\xfe\xff"…………
    这个是什么文件?ndk的例子的一种方法好像是把它放缓冲区然后播放的。
      

  9.   

    你找找看关于 mp3 格式的开源的代码吧,不使用 JNI 是不可能的,使用 NDK 也是通过 JNI 调用底层的 C/C++ 来实现的。
      

  10.   

    恩,谢谢了,ndk是支持纯c实现一些功能的,但是我不确定是否支持纯c的音频录放。native是可以实现不使用jni而直接调用c/c++的。呵呵!