ble_audio_android

android audio框架

蓝牙BLE又称bluetooth smart,主打的是低功耗和快速链接,所以在支持的profile并没有audio的部分,而蓝牙语音协议A2DP只在传统蓝牙中有,本文就是提供一种利用ble数据来传输压缩语音,并最终在实现用android语音框架中的AudioRecord方法来获取语音流。

说明文档:蓝牙ble数据转语音实现Android AudioRecord方法推荐

Features

kernel audio driver

audio deamon

framework AudioMananger config

Adpcm decode

TODO

Project Organization

主要文件介绍

├── upcm

│   ├──upcm.c

│   ├──Makefile

├── android_PCM

│   ├── Android.mk

│   ├── audio_hw.cpp

│   ├── audio_policy.conf

├── aduio_d

│   ├── toolchain

│   ├── main.c

│   ├── audio.c

│   ├── dev_list.c

│   ├── ADPCMDecoder.c

│   ├── Makefile

├── AudioRecordTest

build

platform:Real4418

kernel:linux3.4.39

android:Android 4.4.2

upcm.ko的编译

修改upcm源码/Makefile 文件:

KDIR ?= /root/Desktop/myir_4418/android/linux/kernel/kernel-3.4.39

注:需要修改为当前使用的内核路径。

编译:

make ARCH=arm CROSS_COMPILE=/root/Desktop/myir_4418/android/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7/bin/arm-eabi-

注:需要修改为当前系统所需要的编译器路径。

Android PCM语音通道

将文件放到源码路径下,执行Android.mk编译。

audio deamon

交叉编译工具就在文件路径下,可直接编译。

Useage

创建一个虚拟的PCM通道

把upcm.ko放到文件系统/system/etc/下,在板级的init.rc里加入insmod /system/etc/upcm.ko。

这样上电就可以加载upcm.ko的驱动。

安卓中间层创建PCM通道来链接底层建立的虚拟PCM通道

把audio.LSDAudio.default.so,放到system/lib/hw/下。

修改system/etc/audio_policy.conf 文件,把primary里的input删掉,只留output,并加上下面的内容。可参考文件包的样本,注意检查权限为644。

audio.LSDAudio.default.so的加载,是靠audio_policy.conf里面建立PCM通道来加载的。这样就创建了一个input_mic的PCM通道。

LSDAudio {

inputs {

LSDAudio {

sampling_rates 8000|16000

channel_masks AUDIO_CHANNEL_IN_MONO

formats AUDIO_FORMAT_PCM_16_BIT

devices AUDIO_DEVICE_IN_BUILTIN_MIC

}

}

}

建立蓝牙语音数据连接

将工具audio_d放到system/bin,加入到系统里自动启动

service hidraw /system/bin/audio_d

class main

oneshot

注意,需要在加载upcm.ko之后运行。

APP测试工具

app测试工具:AudioRecordTest,直接安装APK即可使用。

Reference

android 7 audio架构,GitHub - zozo825117/ble_audio_android: android audio框架相关推荐

  1. 代码android点击效果,GitHub - likaiyuan559/TouchEffects: Android View点击特效TouchEffects,几行代码为所有控件添加点击效果...

    Android 点击特效TouchEffects TouchEffects能够帮助你更快速方便的增加点击时候的效果,TouchEffects的目标是打造一个稳定.全面.且能更方便的自定义及个性化的一款 ...

  2. android图片美化开源,GitHub - xingxing-yan/BLImage: Android中美化图片的库。功能包括滤镜,贴纸,标签,裁剪,涂鸦,亮度,饱和度,对比度,马赛克等功能...

    BLImage Android中美化图片的库.功能包括滤镜,贴纸,标签,裁剪,涂鸦,亮度,饱和度,对比度,马赛克等功能 效果图 添加依赖: 在project的build.gradle中添加: allp ...

  3. android滴滴技术架构,滴滴乘客端Android架构解密_何斌斌.pdf

    滴滴出行乘客端Android架构解密 何斌斌 乘客Android负责人 自我介绍 自我介绍 自我介绍 滴滴出行乘客端Android负责人 十余年移动终端经验 拥有Android驱动.Framework ...

  4. android 平台马甲举报,GitHub - qq549631030/AndroidJunkCode: Android马甲包生成垃圾代码插件...

    Android垃圾代码生成插件 此插件用于做马甲包时,减小马甲包与主包的代码相似度,避免被OPPO.VIVO等应用市场识别为马甲包. 使用方法 根目录的build.gradle中: buildscri ...

  5. android 小红书标签,GitHub - shellljx/TagViewGroup: Android 仿小红书图片标签Group

    TagViewGroup Android 仿小红书图片标签,实现了图片标签的动画,布局,水波纹,编辑等功能,还可以自定义 Tag.视频演示地址 This is a library of tags th ...

  6. android画板控件,GitHub - imaiya/PainterView: Android画板控件,可以写字画画并生成图片...

    PainterView Android画板控件,可以写字画画并生成图片 引用 最新版本号 Gradle Project.gradle allprojects { repositories { jcen ...

  7. android 联系人批量插入,GitHub - Atinerlengs/InsertDemo: android 简单的批量插入通话记录、联系人、短信demo...

    [toc] 批量插入 批量插入通话记录 下面是添加通话数据的代码,我们自己去构造Tb_calllogs数据,里面可以添加通话记录数据字段,由于是个简单的demo,所以只加了number.callTyp ...

  8. android文件管理器项目,GitHub - yangsmith/FileExplorer: android file explorer android文件管理器...

    File_Explorer Android 文件管理器 #发布版本 ####腾讯助手 ####百度助手 ####91助手 #包常用ui控件有: 1.侧滑菜单slidingMenu 2.兼容action ...

  9. android横向瀑布流布局,GitHub - wikison/android_waterfall: Android版的瀑布流布局

    Android瀑布流实例 此项目由于最初设计问题,导致现在问题比较多,暂时停止维护. 我现在在其他类似的瀑布流上进行完善开发, ####请关注: 有必要解释一下程序为什么采用addview方式而不是做 ...

最新文章

  1. [转]Linux 微擎系统搭建
  2. python爬取微博指定内容_python3.5爬虫-爬取微博某博主微博内容
  3. 开发日记-20190820 关键词 读书笔记《Unix环境高级编程(第二版)》DAY 1
  4. HTTP代理如何正确处理Cookie(2) - 转载(写的比较详细,并以实例讲解)
  5. grep检索关键字的命令_linux系统中java线上问题常用排查命令
  6. Spring注解中@Configuration和@Configurable的区别
  7. java 输出当月日历_java 实现打印当前月份的日历
  8. day6 java成员变量与局部变量以及对象的建立
  9. python输出元组重复的元素_python – 从n个元素生成所有4元组对
  10. Servlet ---- cookie session
  11. Java程序开发过程
  12. 嵌入式大杂烩周记 | 第 7 期:zlog
  13. mysql 分隔字符串的函数_Mysql 字符串分隔函数
  14. windows server 2019 中文语言包
  15. 小米8SE 解BL锁教程 申请BootLoader解锁教程
  16. 在Linux Mint 19.2 XFCE(x64)中安装Canon LBP2900+打印机驱动程序
  17. Notes真的无处不在
  18. 台式计算机usb口不识别鼠标,如何解决插入鼠标提示无法识别USB设备的问题
  19. 为什么高质量计算机书籍几乎都是外国人写的?
  20. 神奇的CSS用法之border-radius

热门文章

  1. 好消息:部分银行磁条卡更换芯片卡
  2. 应用程序无法正常启动(0xc000007b) 请单击确定关闭应用程序
  3. MFC实现简单连续加减计算器
  4. c语言编译作用,叙述 C语言编译
  5. 【SpringBoot进阶】阿里云短信发送配置
  6. sfm算法之三角化(三角测量)
  7. ios 抓娃娃开发_可爱抓娃娃ios版_可爱抓娃娃手机版1.0.4 - 系统城
  8. 重磅!L4级自动驾驶硬件方案来啦!
  9. 推荐 6 个本月 yyds 的开源项目
  10. 微电子电路——反相器级联