蓝牙ble数据转语音实现Android AudioRecord方法推荐

蓝牙ble数据转语音实现Android AudioRecord方法推荐

教程

欢迎走进zozo的学习之旅。

概述

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

主要思路

首先问题的需求是从一种非标准的协议挂载成为一个标准协议。那通过修改kernel的bluetooth协议或者是修改android的语音框架都是可以实现的,但是不论哪种方式都要耗费大量的工作,而且这两种的哪一种的修改都会给平台的更换或者是系统版本的更换带来很大的障碍。

那这里提供的一种较为简单的思路来实现:在kernel内建议一个upcm的声卡,运行一个守护进程将ble的对应数据解压后放入声卡这样AudioRecord就可以获取PCM的语音流了。另外,android语音的挂载需要添加so库,并修改Audio的配置文件audio_policy.conf来添加。

UPCM分析

upcm的源码可关注我的代码仓库

蓝牙正常 连接 log

[  633.209000] input: Broadcom Bluetooth HID as /devices/virtual/misc/uhid/input4
[  633.217000] generic-bluetooth 0005:0000:0000.0002: input,hidraw0: BLUETOOTH HID v1.01 Mouse [Broadcom Bluetooth HID] on
[  641.437000] UPCM : snd_u_capture_open
[  641.440000] UPCM : snd_u_hw_params format 2, rate 16000, channels 1, period_bytes 2048, buffer_bytes 8192
[  641.451000] UPCM: format 0x2, rate 16000, channels 1
[  641.456000] UPCM : snd_u_pcm_prepare
[  641.460000] UPCM : snd_u_substream_capture_trigger, cmd 1
[  641.465000] UPCM: SNDRV_PCM_TRIGGER_START
[  649.407000] UPCM: upcm_char_release
[  651.592000] UPCM : snd_u_substream_capture_trigger, cmd 0
[  651.597000] UPCM: SNDRV_PCM_TRIGGER_STOP
[  651.602000] UPCM : snd_u_hw_free
[  651.605000] UPCM : snd_u_capture_close

audio daemon

Parse error on line 2:
... TD;    id1[`socket(PF_NETLINK, SOCK_DG
----------------------^
Expecting ‘SEMI‘, ‘NEWLINE‘, ‘SPACE‘, ‘EOF‘, ‘GRAPH‘, ‘DIR‘, ‘TAGEND‘, ‘TAGSTART‘, ‘UP‘, ‘DOWN‘, ‘subgraph‘, ‘end‘, ‘SQE‘, ‘PE‘, ‘-)‘, ‘DIAMOND_STOP‘, ‘MINUS‘, ‘--‘, ‘ARROW_POINT‘, ‘ARROW_CIRCLE‘, ‘ARROW_CROSS‘, ‘ARROW_OPEN‘, ‘DOTTED_ARROW_POINT‘, ‘DOTTED_ARROW_CIRCLE‘, ‘DOTTED_ARROW_CROSS‘, ‘DOTTED_ARROW_OPEN‘, ‘==‘, ‘THICK_ARROW_POINT‘, ‘THICK_ARROW_CIRCLE‘, ‘THICK_ARROW_CROSS‘, ‘THICK_ARROW_OPEN‘, ‘PIPE‘, ‘STYLE‘, ‘LINKSTYLE‘, ‘CLASSDEF‘, ‘CLASS‘, ‘CLICK‘, ‘DEFAULT‘, ‘NUM‘, ‘PCT‘, ‘COMMA‘, ‘ALPHA‘, ‘COLON‘, ‘BRKT‘, ‘DOT‘, ‘PUNCTUATION‘, ‘UNICODE_TEXT‘, ‘PLUS‘, ‘EQUALS‘, ‘MULT‘, got ‘PS‘

原文地址:https://www.cnblogs.com/zozo825117/p/10272395.html

时间: 2024-10-14 03:44:05

蓝牙ble数据转语音实现Android AudioRecord方法推荐的相关文章

蓝牙BLE数据包格式汇总

以蓝牙4.0为例说明: BLE包格式有:广播包.扫描包.初始化连接包.链路层控制包(LL层数据包).逻辑链路控制和自适应协议数据包(即L2CAP数据包)等: 其中广播包又分为:定向广播包和非定向广播包: 逻辑链路控制和自适应协议数据包又分为:ATT指令包.信令指令包.SMP包: 1. 首先,所有的包都符合如下格式: 2. 广播包: 3. 非定向广播包: 4. 定向广播包: 5. 扫描包: 6. 初始化连接包: 7. 链路层数据包: 8. 链路层控制包: 9. L2CAP层数据包: 10. 信令指

【转】Android4.3 蓝牙BLE初步

原文网址:http://www.cnblogs.com/savagemorgan/p/3722657.html 一.关键概念: Generic Attribute Profile (GATT) 通过BLE连接,读写属性类小数据的Profile通用规范.现在所有的BLE应用Profile都是基于GATT的. Attribute Protocol (ATT) GATT是基于ATT Protocol的.ATT针对BLE设备做了专门的优化,具体就是在传输过程中使用尽量少的数据.每个属性都有一个唯一的UU

Android4.3 蓝牙BLE初步

一.关键概念: Generic Attribute Profile (GATT) 通过BLE连接,读写属性类小数据的Profile通用规范.现在所有的BLE应用Profile都是基于GATT的. Attribute Protocol (ATT) GATT是基于ATT Protocol的.ATT针对BLE设备做了专门的优化,具体就是在传输过程中使用尽量少的数据.每个属性都有一个唯一的UUID,属性将以characteristics and services的形式传输. Characteristic

Android-低功耗蓝牙(BLE)-客户端(主机/中心设备)和服务端(从机/外围设备)

一.Android 低功耗蓝牙(BLE)的API简介 从Android 4.3(API 18)才支持低功耗蓝牙(Bluetooth Low Energy, BLE)的核心功能, BLE蓝牙协议是GATT协议, BLE相关类不多, 全都位于android.bluetooth包和android.bluetooth.le包的几个类: android.bluetooth. .BluetoothGattService 包含多个Characteristic(属性特征值), 含有唯一的UUID作为标识 .Bl

使用BleLib的轻松搞定Android低功耗蓝牙Ble 4.0开发具体解释

转载请注明来源: http://blog.csdn.net/kjunchen/article/details/50909410 使用BleLib的轻松搞定Android低功耗蓝牙Ble 4.0开发具体解释 演示样例源代码: https://github.com/junkchen/BleLib/tree/master/sample Android ble4.0开发基础篇:http://blog.csdn.net/kjunchen/article/details/50339549 BleLib是An

android studio 开发蓝牙BLE芯片的APP学习总结第一集

一.简介 作为一个纯粹的硬件开发人员,迫不得已开发安卓.前面也花了3天的时候,搭建好了环境,也算是明白了安卓开发的流程.写这个文章的目的也算是做一个小结,给自己一个鞭策,边学习边总结,希望自己能坚持下去.同时也算是通过网络获取资料,然后回报网络的一种方式 我学习安卓开发的目的主要的,做蓝牙BLE或者WIFI之类的应用.因为我本身是做蓝牙芯片程序开发的,所以不可避免需要开发APP,由于外包,达不到我们的要求同时也不灵活.招人开发成本又巨高,所以不得已而为之 硬件:BT201蓝牙BLE音频模块,芯片

蓝牙BLE实用教程

蓝牙BLE实用教程 Bluetooth BLE 欢迎使用 小书匠(xiaoshujiang)编辑器,您可以通过 设置 里的修改模板来改变新建文章的内容. 1.蓝牙BLE常见问答 Q: Smart Ready 和 Smart 以及传统蓝牙之间是什么关系? Q: 双模(dual-mode)和单模(single-mode)有什么区别? Q: There is a confusion between Server-Client vs Master-Slave vs Central-Peripheral.

蓝牙(BLE)应用框架接口设计和应用开发——以TI CC2541为例

本文从功能需求的角度分析一般蓝牙BLE单芯片的应用框架(SDK Framework)的接口设计过程,并以TI CC2541为例说明BLE的应用开发方法. 一.应用框架(Framework) 我们熟知的Framework包括Android Framework.Linux QT.Windows MFC.应用框架抽象并封装实现了一般应用场景的需求,完成应用开发的80%,剩下的20%则以回调(callback)和接口的方式供应用开发人员调用以完成具体的需求. 一般Framework完成的工作包括:任务分

<转> 主流蓝牙BLE控制芯片详解(5):Dialog DA14580

[导读] Dialog推出的号称全球功率最低.体积最小的SmartBond DA14580蓝牙智能系统级芯片(SoC),与竞争方案相比,该产品可将搭载应用的智能型手机配件,或计算机周边商品的电池巡航时间延长一倍. 同系列芯片资料推荐: 主流蓝牙BLE控制芯片详解(1):TI CC2540 主流蓝牙BLE控制芯片详解(2):CSR BC6130 主流蓝牙BLE控制芯片详解(3):创杰 IS1685S 主流蓝牙BLE控制芯片详解(4):Nordic nRF51822 DA14580简介 Dialog