基于iTop4412的FM收音机系统设计(三)

说明:第一版架构为:APP+JNI(NDK)+Driver(linux),优点是开发简单,周期短,也作为自己的毕业设计

   现在更新第二版,FM服务完全植入Android系统中,成为系统服务,架构为:APP+Frameworks+JNI+HAL+Driver

 

整个系统设计,大致分为三篇文章介绍完毕,包括:

一、驱动设计篇

二、系统API接口篇

三、APP功能实现篇

---------------------------------------------------(三)APP设计篇-----------------------------------------------------------------

前两篇文章介绍了底层是怎么实现的,现在终于可以和用户进行交互了

这里暂时只介绍调用底层API的方法,具体实现后续再补充...

1.导包

1 import android.os.ServiceManager;
2 import android.os.IFMService;

2.获取系统的FM服务

1 private IFMService fmService = null;  
2 fmService = IFMService.Stub.asInterface(ServiceManager.getService("fm5767"));  

 3.调用底层服务,如获取当前频率

int curFreq = fmService.getFreq();

我们可以用同样的方式调用其他的API,API的查阅在frameworks/base/core/java/android/os/IFMService.aidl文件中

 1 package android.os;  
 2    
 3 interface IFMService {  
 4     int getADC();
 5     int getFreq();
 6     void setFreq(int freq);
 7     void searchNextorPreFreq(int enable);
 8     void setNextorPreFreq(int enable);
 9     void enableMute(int enable);
10     int getIsMute();
11     void startAutoSearch();
12 }

4.由于我们在系统中自行添加了API,所以最好编译APP是放在系统源码里进行编译,使用mm命令即可

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES := $(call all-java-files-under, src) 

LOCAL_PACKAGE_NAME := FmRadio

LOCAL_PROGUARD_FLAG_FILES := proguard.flags

include $(BUILD_PACKAGE)

# Use the folloing include to make our test apk.
include $(call all-makefiles-under,$(LOCAL_PATH))

 

 

github上的代码暂时是APP->JNI(NDK)->Driver架构的,后续会更新...欢迎大家指出错误与不足指出,非常感谢~~

 

完整工程代码下载:

https://github.com/pngcui/FM-radio  

 

posted @ 2017-08-04 16:03  某某璀  阅读(549)  评论(0编辑  收藏  举报
levels of contents