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,如果有人熟悉这块的话,给个资料文档什么的,
以后写完了之后我会把自己的代码和想法分享给大家,希望大家多多指点
本文探讨了在Android环境下,如何通过HAL、JNI等技术实现FM广播功能的详细步骤,包括创建FM服务、调用底层HAL库以及通过JNI在Java应用中进行交互。文章还提及了在系统init.rc文件中启动FM服务的具体操作,并提供了关键代码片段作为实例参考。
4812

被折叠的 条评论
为什么被折叠?



