如题,我想利用源码MediaFile.java的getFileType()取得文件的类型,然后用isAudioFileType()函数判断是否是音频类型。
但是在判断wma类型的文件是需要执行DecoderCapabilities.java文件中的
static {
    System.loadLibrary("media_jni");
    native_init();
}
网上说这时候要求VM去载入Android的/system/libmeida_jni.so文件,但是在我下载的源码里没有找到此目录及libmeida_jni.so文件。那么,需要去哪里找此文件呢?找到后直接放在MediaFile.java文件所在目录下就可以了吧?
没用过jni,还请各位多多关照。

解决方案 »

  1.   

    没关系的, 这个文件时编译出来的。看你哪个版本, 一般源码在 /framework/base/media
    编出来就有这个so, 这个so放在设备的 /system/lib下面另外: 这里面的东西,接口和行为不保证在各版本及各方案厂商实现的一致 :)
      

  2.   

    多谢,编译源码是不是我把相应的文件夹包括子文件靠边到linux中,直接用文件夹下的Android.mk执行,就可以编译出来了?
    例如编译base-HEAD\base\media\jni目录下的文件,直接在linux的终端执行里面的Android.mk就可以编译了?
    还没编译过android源码,正在学习。
      

  3.   

    源码编译很简单。
    不要将文件夹单独拷贝出来,这样是不对的,因为有依赖关系。编译整个工程:
    源码根目录-make编译某个moudle
    make <module>
    一般module在android.mk中定义。比如:
    make libmedia_jni
      

  4.   

    libmeida_jni.so文件是在手机设备里的,目录:/system/lib/,注意不是sd卡的system目录哦,system和sd卡在同一个根目录下