【实例简介】

android 收音机 FM 驱动 hal层 框架层以及应用层代码

方法一 不需要framework部分

1.fm放到 \hardware\rk2x

2.FmRadio 放到 packages\apps

3.hardware\libhardware\include\hardware\fm.h 放到hardware\libhardware\include\hardware\fm.h

4.build\target\product中PRODUCT_PACKAGES :=加上 FmRadio \

5./bionic/libc/kernel/common/linux/Hw_fm.h拷贝过去

6./de

【实例截图】

【核心代码】

FM移植包(基于Android4.4)

├── 方法一(FmService写在apk里面)

│   ├── bionic

│   │   └── libc

│   │   └── kernel

│   │   └── common

│   │   └── linux

│   │   └── Hw_fm.h

│   ├── drvier

│   │   └── fm

│   │   ├── 5807p

│   │   │   ├── built-in.o

│   │   │   ├── fm5807.c

│   │   │   ├── fm5807.h

│   │   │   ├── fm5807.o

│   │   │   ├── Kconfig

│   │   │   ├── Makefile

│   │   │   └── modules.order

│   │   ├── built-in.o

│   │   ├── Kconfig

│   │   ├── Makefile

│   │   ├── modules.order

│   │   └── qn8006

│   │   ├── hw_qn8006.h

│   │   ├── Kconfig

│   │   ├── Makefile

│   │   ├── qn8006.c

│   │   ├── qncommon.h

│   │   ├── qnconfig.h

│   │   ├── qndriver.c

│   │   ├── qndriver.h

│   │   ├── qnfunc.c

│   │   ├── qnfunc.h

│   │   ├── qnio.c

│   │   ├── qnio.h

│   │   └── qnreg.h

│   ├── FmRadio

│   │   └── FmRadio

│   │   ├── AndroidManifest.xml

│   │   ├── Android.mk

│   │   ├── bin

│   │   │   ├── aidl

│   │   │   │   └── com

│   │   │   │   └── rk

│   │   │   │   └── FmRadio

│   │   │   │   └── IfmService.aidl

│   │   │   └── AndroidManifest.xml

│   │   ├── gen

│   │   │   └── com

│   │   │   └── rk

│   │   │   └── FmRadio

│   │   │   ├── BuildConfig.java

│   │   │   ├── IfmService.java

│   │   │   └── R.java

│   │   ├── jni

│   │   │   ├── Android.mk

│   │   │   ├── com_android_server_FmService.cpp

│   │   │   └── Log.h

│   │   ├── project.properties

│   │   ├── res

│   │   │   ├── drawable

│   │   │   │   ├── areabutton2.png

│   │   │   │   ├── areabutton.png

│   │   │   │   ├── area.xml

│   │   │   │   ├── autobutton2.png

│   │   │   │   ├── autobutton.png

│   │   │   │   ├── auto.xml

│   │   │   │   ├── background.png

│   │   │   │   ├── channelbackground.png

│   │   │   │   ├── channelbutton2.png

│   │   │   │   ├── channelbutton.png

│   │   │   │   ├── channel.xml

│   │   │   │   ├── homebutton2.png

│   │   │   │   ├── homebutton.png

│   │   │   │   ├── home.xml

│   │   │   │   ├── icon.png

│   │   │   │   ├── modebutton2.png

│   │   │   │   ├── modebutton.png

│   │   │   │   ├── mode.xml

│   │   │   │   ├── nextbutton2.png

│   │   │   │   ├── nextbutton.png

│   │   │   │   ├── next.xml

│   │   │   │   ├── notice.png

│   │   │   │   ├── prebutton2.png

│   │   │   │   ├── prebutton.png

│   │   │   │   ├── pre.xml

│   │   │   │   ├── record1.xml

│   │   │   │   ├── record2.xml

│   │   │   │   ├── record3.xml

│   │   │   │   ├── recordbutton2.png

│   │   │   │   ├── recordbutton.png

│   │   │   │   ├── record_play.png

│   │   │   │   ├── record_play_select.png

│   │   │   │   ├── record_start.png

│   │   │   │   ├── record_start_select.png

│   │   │   │   ├── record_stop.png

│   │   │   │   ├── record_stop_select.png

│   │   │   │   ├── recordtimebackground.png

│   │   │   │   ├── record.xml

│   │   │   │   ├── savebutton2.png

│   │   │   │   ├── savebutton.png

│   │   │   │   ├── save.xml

│   │   │   │   ├── seek1.png

│   │   │   │   ├── startbutton2.png

│   │   │   │   ├── startbutton.png

│   │   │   │   ├── start.xml

│   │   │   │   ├── stopbutton2.png

│   │   │   │   ├── stopbutton.png

│   │   │   │   ├── stop.xml

│   │   │   │   ├── thumb.png

│   │   │   │   ├── vol.png

│   │   │   │   ├── widget_background.png

│   │   │   │   ├── widget_open_light.png

│   │   │   │   ├── widget_open.png

│   │   │   │   ├── widget_radio_icon.png

│   │   │   │   ├── widget_turn_next.png

│   │   │   │   └── widget_turn_pre.png

│   │   │   ├── layout

│   │   │   │   ├── channeldialog.xml

│   │   │   │   ├── main_layout.xml

│   │   │   │   ├── recordlayout.xml

│   │   │   │   └── widget_layout.xml

│   │   │   ├── values

│   │   │   │   └── strings.xml

│   │   │   ├── values-zh-rCN

│   │   │   │   └── string.xml

│   │   │   ├── values-zh-rTW

│   │   │   │   └── strings.xml

│   │   │   └── xml

│   │   │   └── fm_widget_info.xml

│   │   └── src

│   │   └── com

│   │   └── rk

│   │   └── FmRadio

│   │   ├── ChannelAdapter.java

│   │   ├── DBhelper.java

│   │   ├── FmRadio.java

│   │   ├── FmRadioService.java

│   │   ├── FmRelate.java

│   │   ├── FmWidgetProvider.java

│   │   └── IfmService.aidl

│   ├── FmRadio.rar

│   ├── hardware

│   │   ├── libhardware

│   │   │   └── include

│   │   │   └── hardware

│   │   │   └── fm.h

│   │   └── rk29

│   │   └── fm

│   │   ├── Android.mk

│   │   ├── fm.c

│   │   └── primitive

│   │   ├── rk28_fm.c

│   │   └── rk28_fm.h

│   └── kernel

│   └── drvier

│   └── fm

│   ├── 5807p

│   │   ├── fm5807.c

│   │   ├── fm5807.h

│   │   ├── Kconfig

│   │   └── Makefile

│   ├── built-in.o

│   ├── Kconfig

│   ├── Makefile

│   ├── qn8006

│   │   ├── hw_qn8006.h

│   │   ├── Kconfig

│   │   ├── Makefile

│   │   ├── qn8006.c

│   │   ├── qncommon.h

│   │   ├── qnconfig.h

│   │   ├── qndriver.c

│   │   ├── qndriver.h

│   │   ├── qnfunc.c

│   │   ├── qnfunc.h

│   │   ├── qnio.c

│   │   ├── qnio.h

│   │   └── qnreg.h

│   └── qn8035

│   ├── built-in.o

│   ├── fm8035.c

│   ├── fm8035.h

│   ├── fm8035.o

│   ├── Kconfig

│   └── Makefile

├── 方法二(FmService写在系统服务)

│   ├── Android HAL的被调用流程 - 嵌入精灵 - 博客频道 - CSDN.NET.htm

│   ├── android 平添系统服务 - Android.htm

│   ├── Android 添加系统服务.htm

│   ├── bionic

│   │   └── libc

│   │   └── kernel

│   │   └── common

│   │   └── linux

│   │   └── Hw_fm.h

│   ├── FmRadio

│   │   └── FmRadio

│   │   ├── AndroidManifest.xml

│   │   ├── Android.mk

│   │   ├── bin

│   │   │   ├── aidl

│   │   │   │   └── com

│   │   │   │   └── rk

│   │   │   │   └── FmRadio

│   │   │   │   └── IfmService.aidl

│   │   │   └── AndroidManifest.xml

│   │   ├── gen

│   │   │   └── com

│   │   │   └── rk

│   │   │   └── FmRadio

│   │   │   ├── BuildConfig.java

│   │   │   ├── IfmService.java

│   │   │   └── R.java

│   │   ├── project.properties

│   │   ├── res

│   │   │   ├── drawable

│   │   │   │   ├── areabutton2.png

│   │   │   │   ├── areabutton.png

│   │   │   │   ├── area.xml

│   │   │   │   ├── autobutton2.png

│   │   │   │   ├── autobutton.png

│   │   │   │   ├── auto.xml

│   │   │   │   ├── background.png

│   │   │   │   ├── channelbackground.png

│   │   │   │   ├── channelbutton2.png

│   │   │   │   ├── channelbutton.png

│   │   │   │   ├── channel.xml

│   │   │   │   ├── homebutton2.png

│   │   │   │   ├── homebutton.png

│   │   │   │   ├── home.xml

│   │   │   │   ├── icon.png

│   │   │   │   ├── modebutton2.png

│   │   │   │   ├── modebutton.png

│   │   │   │   ├── mode.xml

│   │   │   │   ├── nextbutton2.png

│   │   │   │   ├── nextbutton.png

│   │   │   │   ├── next.xml

│   │   │   │   ├── notice.png

│   │   │   │   ├── prebutton2.png

│   │   │   │   ├── prebutton.png

│   │   │   │   ├── pre.xml

│   │   │   │   ├── record1.xml

│   │   │   │   ├── record2.xml

│   │   │   │   ├── record3.xml

│   │   │   │   ├── recordbutton2.png

│   │   │   │   ├── recordbutton.png

│   │   │   │   ├── record_play.png

│   │   │   │   ├── record_play_select.png

│   │   │   │   ├── record_start.png

│   │   │   │   ├── record_start_select.png

│   │   │   │   ├── record_stop.png

│   │   │   │   ├── record_stop_select.png

│   │   │   │   ├── recordtimebackground.png

│   │   │   │   ├── record.xml

│   │   │   │   ├── savebutton2.png

│   │   │   │   ├── savebutton.png

│   │   │   │   ├── save.xml

│   │   │   │   ├── seek1.png

│   │   │   │   ├── startbutton2.png

│   │   │   │   ├── startbutton.png

│   │   │   │   ├── start.xml

│   │   │   │   ├── stopbutton2.png

│   │   │   │   ├── stopbutton.png

│   │   │   │   ├── stop.xml

│   │   │   │   ├── thumb.png

│   │   │   │   ├── vol.png

│   │   │   │   ├── widget_background.png

│   │   │   │   ├── widget_open_light.png

│   │   │   │   ├── widget_open.png

│   │   │   │   ├── widget_radio_icon.png

│   │   │   │   ├── widget_turn_next.png

│   │   │   │   └── widget_turn_pre.png

│   │   │   ├── layout

│   │   │   │   ├── channeldialog.xml

│   │   │   │   ├── main_layout.xml

│   │   │   │   ├── recordlayout.xml

│   │   │   │   └── widget_layout.xml

│   │   │   ├── values

│   │   │   │   └── strings.xml

│   │   │   ├── values-zh-rCN

│   │   │   │   └── string.xml

│   │   │   ├── values-zh-rTW

│   │   │   │   └── strings.xml

│   │   │   └── xml

│   │   │   └── fm_widget_info.xml

│   │   └── src

│   │   └── com

│   │   └── rk

│   │   └── FmRadio

│   │   ├── ChannelAdapter.java

│   │   ├── DBhelper.java

│   │   ├── FmRadio.java

│   │   ├── FmRadioService.java

│   │   ├── FmRelate.java

│   │   ├── FmWidgetProvider.java

│   │   └── IfmService.aidl

│   ├── FmRadio.rar

│   ├── frameworks

│   │   └── base

│   │   ├── Android.mk

│   │   ├── core

│   │   │   └── java

│   │   │   └── android

│   │   │   ├── app

│   │   │   │   └── ContextImpl.java

│   │   │   ├── content

│   │   │   │   └── Context.java

│   │   │   └── os

│   │   │   ├── FmManager.java

│   │   │   └── IFmManager.aidl

│   │   └── services

│   │   ├── java

│   │   │   └── com

│   │   │   └── android

│   │   │   └── server

│   │   │   ├── fm

│   │   │   │   └── FmService.java

│   │   │   └── SystemServer.java

│   │   └── jni

│   │   ├── Android.mk

│   │   ├── com_android_server_fm_FmService.cpp

│   │   └── onload.cpp

│   ├── hardware

│   │   ├── libhardware

│   │   │   └── include

│   │   │   └── hardware

│   │   │   └── fm.h

│   │   └── rk29

│   │   └── fm

│   │   ├── Android.mk

│   │   ├── fm.c

│   │   └── primitive

│   │   ├── rk28_fm.c

│   │   └── rk28_fm.h

│   └── kernel

│   └── drvier

│   └── fm

│   ├── 5807p

│   │   ├── fm5807.c

│   │   ├── fm5807.h

│   │   ├── Kconfig

│   │   └── Makefile

│   ├── built-in.o

│   ├── Kconfig

│   ├── Makefile

│   ├── qn8006

│   │   ├── hw_qn8006.h

│   │   ├── Kconfig

│   │   ├── Makefile

│   │   ├── qn8006.c

│   │   ├── qncommon.h

│   │   ├── qnconfig.h

│   │   ├── qndriver.c

│   │   ├── qndriver.h

│   │   ├── qnfunc.c

│   │   ├── qnfunc.h

│   │   ├── qnio.c

│   │   ├── qnio.h

│   │   └── qnreg.h

│   └── qn8035

│   ├── built-in.o

│   ├── fm8035.c

│   ├── fm8035.h

│   ├── fm8035.o

│   ├── Kconfig

│   └── Makefile

└── 移植说明.txt

102 directories, 265 files

android调频收音机代码,android 收音机 FM 驱动 hal层 框架层以及应用层代码相关推荐

  1. Android 自动搜索频道,Android自定义收音机搜台控件RadioRulerView

    前言:像这类的自定义控件有非常多的开源项目,但还是没有找到我项目想要的,所以简单实现了一个,下面简单讲讲实现原理. 效果图: 实现思路: 首先画固定背景尺子,而实现这个则要计算刻度线的宽度.刻度线间的 ...

  2. Android架构实例分析之编写hello驱动的HAL层代码

    Android架构实例分析之编写hello驱动的HAL层代码 摘要: HAL层中文名称又叫硬件抽象层,可以理解我Linux驱动的应用层.本文实现了一个简单的hello HAL的代码,衔接hello驱动 ...

  3. java手机电池充电代码,android电池管理系统从上层的java到底层驱动的调用(转载)...

    1.概述 随着移动智能设备的快速发屏,电池的续航能力在很大情况下诱导了大众消费者的购买选择,android系统对电源管理的合理与否直接影响到电池的续航能力,而电池系统作为其中的一部分,主要用于对电池状 ...

  4. Android开发收音机功能,Android实现的网络收音机示例利用Vitamio组件

    Vitamio组件异常强大,请自行百度,android开源的媒体处理框架,无所不能 本项目需要Vitamio项目作为引用项目(Android Library) xmlns:tools="ht ...

  5. android tab 悬停效果代码,Android 仿腾讯应用宝 之 Toolbar +Scroolview +tab滑动悬停效果...

    Android 仿腾讯应用宝 之 Toolbar +Scroolview +tab滑动悬停效果 来源:互联网 作者:佚名 时间:2015-02-10 15:36 Android 仿腾讯应用宝 之 To ...

  6. 《Android深度探索(卷1):HAL与驱动开发》——6.4节使用多种方式测试Linux驱动...

    本节书摘来自异步社区<Android深度探索(卷1):HAL与驱动开发>一书中的第6章,第6.4节使用多种方式测试Linux驱动,作者李宁,更多章节内容可以访问云栖社区"异步社区 ...

  7. android 电容屏(二):驱动调试之基本概念篇

    关键词:android  电容屏 tp 工作队列 中断 多点触摸协议 平台信息: 内核:linux2.6/linux3.0 系统:android/android4.0  平台:S5PV310(sams ...

  8. 新书出版:《Android深度探索(卷1):HAL与驱动开发》

    <Android深度探索(卷1):HAL与驱动开发> [1]亚马逊 [2]当当网 [3]京东商城 [4]互动网 [5]淘宝网 [6]豆瓣网 < Android深度探索(卷1):HAL ...

  9. Android笔记 一Android基础知识 摘自第一行代码Android

    一Android常见版本号 代号 及市场占有率 版本号 系统代号 API 市场占有率 2.2 Froyo 8 1.2% 2.3.3 – 2.3.7 Gingerbread 10 19.0% 3.2 H ...

最新文章

  1. 国内首个手机AR实景驾驶导航上线,还能识别车辆行人,搜狗地图出品
  2. 安装两个硬盘时应如何跳线?
  3. 工业用微型计算机(9)-指令系统(6)
  4. VTK:几何对象之TriangleStrip
  5. Django笔记(1)
  6. python 1+2+3+4+5+6+7+8+9累加求和_求1!+2!+3!+4!+5!+6!+7!+8!+9!+10!+...+N! N阶阶乘求和算法 JAVA C Python...
  7. DiQuick Web UI 框架 V1.3.2 版本更新
  8. [转载] Python性能优化技巧总结
  9. vc 模拟按键 模拟windows消息方式_PC微信电脑端WeChat点击脚本(按键精灵)2020小工具...
  10. 极客大学架构师训练营 大数据架构、Spark、Flink、机器学习、PageRank算法、神经网络 第13次作业
  11. Unity之读取身份证信息
  12. 在网页输出10的阶乘.php,VB 用for循环语句编写程序,计算和输出10的阶乘
  13. 2017年工作总结--初出茅庐
  14. Maya无法创建新模型解决方案1
  15. 一个简单的C语言代码段,逻辑题
  16. 04_UUID128修改与广播名
  17. Python对千分位的处理
  18. 第一次读完《百年孤独》是种什么体验
  19. 计算机ppt要求,计算机信息化培训总要求.ppt
  20. SQL语言——DML与DQL

热门文章

  1. 【机器学习PAI实践七】文本分析算法实现新闻自动分类
  2. 饿了么多活利器:实时双向复制工具(DRC)
  3. Understanding G1 GC Logs--转载
  4. 1号店11.11:从应用架构落地点谈高可用高并发高性能--转载
  5. 【科技金融】互金风控大数据盘点
  6. 《Credit Risk Scorecard》第四章:Data Review and Project Parameters
  7. Vue 里的$如何理解
  8. 英伟达宣布全面支持ARM高性能计算,三周打造全球排名第22超算
  9. ElasticSearch 6.0.0 IK分词 Kibana 6.0.0
  10. 区块链开源实现fabric快速部署及CLI体验