http://www.mobidever.com/forum.php?mod=viewthread&tid=2909
好像现在fm的很少,一般都没什么人去做,所以android目前也没有fm的应用接口类,所以要通过
HAL,实现JNI,然后应用程序通过JNI来跳用底层的,从而实现相关的功能,
这些东西都需要自己去实现的,比较的麻烦,需要有底层c,c++,到java,其实只要把思路弄清楚
都不是什么大的问题,问题就是些细节方面的问题
软件的大体思路就在这里:
FMRadio.apk --> Java应用
libfmradio_jni.so : frameworks/base/fmradio/jni --> Jni
libfmradioplayer.so : --> HAL
libfmradiostackservice.so : --> HAL
要添加一个Fm服务,让系统启动就可以启动这个服务
应该是在这个文件夹下(这个是系统的,如果不懂这些脚本文件的话,可以去搜索下这些关键字是什么意思,
或者可以去查看下文档,具体文档在哪个目录下我也不知道,反正这init.rc就这么几种【命令,服务,属性】)
/system/core/rootdir/init.rc中,需要启动一个FM服务,这里叫fmradio,可执行文件叫fmradioserver
service fmradio /system/bin/fmradioserver
fmradioserver
int main(int argc, char** argv)
{
....
FMRadioStackService::instantiate(); // start the fmradio.stack service
....
}
FMRadioStackService.cpp
void FMRadioStackService::instantiate() {
defaultServiceManager()->addService(
String16("fmradio.stack"), new FMRadioStackService());
}
通过这个FMRadioStackService类,FM的基本功能已经可用
我还只实现到这里,我还没有研究过怎么写一个JNI,如果有人熟悉这块的话,给个资料文档什么的,
以后写完了之后我会把自己的代码和想法分享给大家,希望大家多多指点