• 基于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  

  • 相关阅读:
    vue小结
    ES6中的super关键字
    es5和es6
    雅虎工程师提供的CSS初始化示例代码
    移动端rem用法总结
    批量压缩图片
    cordova
    cordova 添加插件时报错相关问题
    JS 数组中对象去重 reduce 用法
    中间件笔录
  • 原文地址:https://www.cnblogs.com/pngcui/p/7285577.html
Copyright © 2020-2023  润新知