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

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

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

一、驱动设计篇

二、系统API接口篇

三、APP功能实现篇

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

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

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

1.导包

 import android.os.ServiceManager;
import android.os.IFMService;

2.获取系统的FM服务

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

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

int curFreq = fmService.getFreq();

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

 package android.os;  

 interface IFMService {
int getADC();
int getFreq();
void setFreq(int freq);
void searchNextorPreFreq(int enable);
void setNextorPreFreq(int enable);
void enableMute(int enable);
int getIsMute();
void startAutoSearch();
}

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

最新文章

  1. JQuery中使用Ajax实现诸如登录名检测等异步请求Demo
  2. 【编程题目】和为 n 连续正数序列
  3. 黑马程序员:Java编程_面向对象
  4. CUBRID学习笔记 22 插入数据
  5. XBox360-双光盘游戏自制GOD
  6. 【待补】java开发Web Service
  7. memcached一些整理
  8. [JAVA关键字] static & final
  9. 临时对象与NRV技术
  10. arrow functions 箭头函数
  11. SpringBoot系列——Redis
  12. CentOS7编译安装php7.1
  13. Inquirer.js
  14. ORM版学员管理系统
  15. 痞子衡嵌入式:蓝牙芯片厂商三强(Qualcomm&CSR, TI, Nordic)产品一览
  16. swift3笔记
  17. 自学Zabbix11.1 Zabbix 配置SNMP监控
  18. DRF之接口文档以及Xadmin
  19. shell command
  20. DELPHI新的变量的声明方法

热门文章

  1. DataStage 六、安装和部署集群环境
  2. System.Web.HttpUtility VS System.Web.HttpServerUtility VS System.Net.WebUtility
  3. Hadoop学习【一】单机版搭建
  4. linux每天一小步---tail命令详解
  5. InstaGAN: Instance-Aware Image-to-Image Translation
  6. python ghost.py使用笔记
  7. 利用ROW_NUMBER中的partition by 删除重复Key的数据
  8. selenium 元素可以定位到,但是无法点击问题
  9. Hibernate4获取Connection,ResultSet对象
  10. Docker Warning : the backing xfs filesystem is formatted without d_type support