android audiorecord socket,蓝牙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

97b88f532722d6ad55641731a7ce72c4.png

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‘

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值