比如别人只给了我一个.so文件,说是支持在模拟器的MediaPlay播放wav文件的,请问我如何操作这个文件,就可以让Android模拟器的MediaPlayer可以播放wav文件,谢谢!

解决方案 »

  1.   

    1.首先在android工程的root目录下新建/libs/armeabi/目录,然后把相应的so文件拷贝到这个目录下
    2.在java代码中加入static {
    try {
    System.loadLibrary(so文件名,如test.so的test);
    } catch (Exception e) {
    Log.e("JNI", e.toString());
    }
    }
    3.使用java的native方法调用so文件中的本地方法(如public native int closeEngine(long pDEngine);),但前提是你必须知道这个so文件都有什么方法,(NDK/JNI)
    4.然后你可以在代码中调用这个native方法去播放wav文件
    官方的API demo中有一个hello-jni的例子,你可以去百度或者google中搜一下
      

  2.   

    google IO 有个 Mastering android media framework, 蛮好的。前提是要能看到youtube.
      

  3.   

    在.mk中加local_libary = 库名字,然后在jni层可以使用库中的接口,把用到的函数封装一下交个java使用。
    这样用应该可以
      

  4.   

    就像liblog.so , 在.mk中加LOCAL_LIBARY += log ,这样就可以使用log库中的函数了
      

  5.   

    static const CodecInfo kDecoderInfo[] 
    在OmxCodec.cpp中,这个结构体中加上一条,
    但是还得需要有一个WAV的Extractor,否则也不能正确去解析WAV格式的。。
      

  6.   

    不好意思,我是从WinCE转过来学Android的,刚用Android的媒体播放框架,我的意思就是我的多媒体解码插件是别人写好的,我只需要集成进我的系统就行了.
    在WinCE下对应的说法就是DirectShow的过滤器,过滤器本身是别人写的,我拿到后只需要注册到系统中即可,在WinCE下过滤器的注册是通过配置注册表来完成的.
    我要问的是Android的插件(就是对应WinCE下的过滤器)是否有个注册的过程或说法,我其实关心的就是这个配置过程,我不关心媒体播放器本身是怎么写的.
      

  7.   

    这个例子你可以去网上搜下系统集成第三方
    这里有个例子不知道符不符合要求:http://my.unix-center.net/~Simon_fu/?p=1020
      

  8.   


    android的多媒体编解码插件的集成分软编解码跟硬编解码,集成软编解码是在OMXCodec.cpp当中做的,硬编解码是通过OPEN MAX,按照你的描述应该是软解码,请参照我的前一个回复。OMXCodec.cpp当中有个数组,描述的是MIMETYPE跟codec之间的关系,你可以参考下现存的是怎么写的。
      

  9.   

    /libs/armeabi最好使用STAGEFRIGHT的框架来写播放器,使用标准的mediaplyaer类,如果要怎家新的格式
    就给Stagefright怎么新的extractor和解码器的插件
      

  10.   

    1.首先爱你android是支持wav格式播放的,请看
    DataSource::RegisterDefaultSniffers()函数中已经注册了wav的解析:
    RegisterSniffer(SniffWAV);
    2.如果不支持,就参考DataSource::RegisterDefaultSniffers()函数中注册高通扩展的媒体格式的方式引用别人提供的so库,注册一个wav的sniffer。