问题标签 [avrcp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
645 浏览

ios - 如何在蓝牙应用中实现 avrcp 功能(播放、暂停、上一个、下一个)

我正在创建一个蓝牙应用程序,我需要在我的应用程序中提供播放器控件。首先,iPhone 连接到蓝牙扬声器并通过手机音乐播放器应用程序播放歌曲。现在,如果我打开我的应用程序,我需要播放、暂停、上一首、下一首歌曲。

我阅读了有关核心蓝牙框架、CBservices 和 CBcharacteristics 的信息,但我不知道应该为这些服务和特征指定什么 uuid。

参考:https ://www.raywenderlich.com/52080/introduction-core-bluetooth-building-heart-rate-monitor 在本教程中他们从https://www.bluetooth.com/specifications/gatt/services获得的服务

我需要用于播放、暂停等功能的 uuid。

任何帮助将不胜感激。提前致谢!

0 投票
1 回答
1184 浏览

ios - 将元数据添加到生成的音频文件

我正在以编程方式生成一个音频文件,我想向其中添加元数据,例如标题和艺术家。我并不特别关心文件是用什么格式写入的,只要 AVPlayer 会读取它并将其发送到播放设备即可。(整个目标是将生成的音频及其音轨名称发送到蓝牙设备。我很高兴探索在 iPhone 上实现这一目标的更简单方法,无需写入文件或将元数据直接添加到文件中。)

到目前为止,我发现 AVAssetWriter 通常只会丢弃它不理解的元数据,而不会产生错误,所以我在试图找到可以接受的文件格式和键的组合时有点磕磕绊绊。到目前为止,我还没有找到可以自动生成 AVAssetWriter 将添加任何元数据的文件格式。例如:

我还没有找到将在文件中包含此元数据的标识符或文件类型(我实际上可以生成)的任何组合。

我目前的方法是将文件创建为 AIFF,然后使用 AVAssetExportSession 将其重写为 m4a。使用它我已经能够添加足够的元数据,iTunes 将显示标题。但是,Finder 的“文件信息”无法读取标题(它适用于 iTunes m4a 文件)。我的假设是,如果它甚至没有出现在文件信息中,它就不会通过蓝牙发送(我很快就会对此进行测试,但我手边没有我需要的硬件)。

研究 iTunes m4a 文件,我发现了一些无法用 AVMetadataItem 重新创建的标签。例如,排序名称 (sonm)。我不知道如何编写不是已知标识符之一的标签(我已经测试了所有 263 个 AVMetadataIdentifiers)。

在这样的背景下,我的核心问题是:

  • AVPlayer 读取哪些元数据标签并发送到蓝牙设备(即 AVRCP)?
  • 是否可以使用 AVAssetWriter 直接将元数据写入支持线性 PCM(或其他一些易于生成的格式)的文件格式?
  • 给定一个与任何 AVMetadataIdentifiers 都不匹配的已知标记/值),是否可以将其写入 AVAssetExportSession 中?

稍后我将探索第三方 id3 框架,但如果可能的话,我想用 AVFoundation(或其他内置框架)来实现它。

0 投票
1 回答
713 浏览

bluetooth - beaglebone 黑色无线蓝牙 AVRCP

我正在使用小猎犬骨黑无线进行一个项目,我需要能够将音乐控制命令发送到手机。请注意,我不想将音乐流式传输到我的 beaglebone。我花了大约一周的时间在网上寻找,但发现很少。

beaglebone 的操作系统是 Debian Jessie。我可以让 hci0tool、Bluetoothctl、hciconfig 之类的东西正常工作。我可以检测并与设备配对。似乎我的连接只在配对过程中持续,之后每次都失败。

我当前的进程正在执行:

我得到了mac地址

到目前为止,配对和信任成功,但连接在配对完成后结束。而且我不知道从哪里开始向手机发送命令。

0 投票
0 回答
659 浏览

android - 是否可以使用蓝牙建立 L2CAP 套接字连接?

我有一系列蓝牙耳机,希望能够直接连接到他们的 AVRCP 配置文件。

主要的症结在于没有公开可访问的方法来构建 L2CAP 套接字。从理论上讲,下面的代码应该可以工作,但是我收到了 permssion denied 错误。
我的清单中有这些:

代码片段在这里:

它正在寻找构造函数,但抛出 IllegalAccessException。有没有人有幸说服 Android 蓝牙建立除 RFCOMM 之外的任何连接类型?和/或是否有可能取得更大成功的不同方法?

(PS:addln 只是向文本视图发送消息,所以我可以看到发生了什么)

0 投票
1 回答
241 浏览

bluetooth - 解释 AVRCP 数据包

经过一番折腾,我得到了一个 pybluez 脚本,可以连接到各种设备上的 AVRCP 配置文件,并阅读响应。

代码片段:

当我按下听筒上的按钮时,我得到的结果如下:

仔细阅读规范后,看起来我看到的是 PASSTHROUGH 命令,其中 44 是“PLAY”操作命令,而 46 是“PAUSE”(我认为)我不知道 10 11 0e 是什么意思,除了从第一个字节似乎是某种序列号这一事实来看。我的问题是三方面的:

  1. 我不知道在哪里可以找到有效 operation_id 的列表。它在规范中提到,但除了一些随机示例之外没有定义。
  2. 规范再次引用了子单元类型和 ID(在上例中为 48),但没有定义它们 AFAICT。
  3. 没有提到前三个字节是什么。它们甚至可能是 L2CAP 的一部分,与 AVRCP 没有直接关系,我对 pybluez 还不够熟悉。

在上述任何一点上的任何帮助都会有所帮助。编辑:作为参考,AVRCP 规范的详细信息似乎在这里:https ://www.bluetooth.org/docman/handlers/DownloadDoc.ashx?doc_id=119996

0 投票
1 回答
393 浏览

qt - Qt蓝牙AVRCP实现

我正在开发 Qt 项目,并且我使用“HandsfreeAudioGateway”成功实现了蓝牙连接,因此我可以流式传输音频。

作为下一步,我想实现 AVRCP 以通过蓝牙控制音频播放器。

看起来 Qt 还不支持 AVRCP。另一方面,BlueZ 有 mediaAPI,我不知道如何在 Qt 中使用它。

如果你能告诉我一个方法或一个例子来解决它,将不胜感激。

干杯!

0 投票
1 回答
3352 浏览

raspberry-pi - 树莓派 + Bluez + A2DP + AVRCP

在过去的两天里,我一直在寻找一种通过我的 Raspiberry pi 无头扬声器控制 iPhone 媒体播放的方法。

我已经使用以下教程成功设置了 pi: Raspbian Stretch 上的 Headless A2DP 音频流 ,现在我正在寻找一种方法来控制我的树莓派中音频流的播放。

我一直在研究 MediaTransport1、MediaPlayer1、MediaControl1,但不幸的是我没有成功。

给你几个我已经执行的试验和错误的例子:

为了:

我收到了:

为了

我收到了

此外,我发现了一个播放器,我认为我可以用它来构建我自己的脚本作为示例 ,但遇到了一个错误:

当我反省时

我明白他的:

谁能帮我解决这个问题,或者有人知道使用树莓派控制手机上音乐播放的程序吗?

问候。

更新 1:非常感谢@Parthiban,因为它运行良好。

此外,我不得不说我按照此处的教程将 bluez 版本重新安装到 5.50:在 Raspberry Pi 上安装 bluez,因为我看不到 /playerX(在我的情况下为 0)。在我编译源代码之前,我做了一些额外的工作(不确定它是否相关,但它没有伤害),我添加了.auto_connect = true

所示的 avrcp 配置文件:

这里

希望这可以帮助每个可能面临我的问题的人

0 投票
0 回答
84 浏览

android - 如何从 Android 设备控制 Apple 媒体

根据此页面,我的 Apple 设备支持 AVRCP 1.4。

据此,我Android 8.0 设备也支持 AVRCP 1.4。

但是根据这个Android 蓝牙 API 只允许我访问HeadsetA2DPHealth Device配置文件,那么为什么第二个链接说支持AVRCP呢?它是否由低级 API 支持并且没有高级 API?

我的目标是在不使用 MFI程序的情况下从 Android 设备控制在 Apple 设备上播放的媒体。我认为 AVRCP 最适合此目的,但目前我正在努力编写一些非常基本的应用程序,这些应用程序只会播放/暂停。

我已经尝试listenUsingInsecureRfcommWithServiceRecord使用 AVRCP UUID( "0000110E-0000-1000-8000-00805F9B34FB") 使用BluetoothAdapter. 我已经尝试过createInsecureRfcommSocketToServiceRecord使用这个 UUIDBluetoothDevice并且我也尝试过一些隐藏的 API:

result是真的,但什么也没发生,或者我不知道下一步该做什么。

你有什么建议吗?也许有一些我不知道的问题?

0 投票
0 回答
187 浏览

android - 将 AVRCP 与两个设备一起使用

我想使用 AVRCP 功能进行音乐控制,根据https://source.android.com/devices/bluetooth/services Android 支持该功能。但是当我浏览文档时,没有使用它的 API。是否可以在两个 Android 设备之间建立这样的连接?

0 投票
0 回答
795 浏览

android - 如何覆盖(或至少听)android上的蓝牙耳机音量按钮?

我想用耳机键(音量+、中间键、音量-)控制我的应用程序。

我检测媒体密钥没有问题:

  • 播放/暂停,点击中间触发
  • 下一个/上一个,由音量按钮长按触发

我确实在检测(最好是拦截)其他所有内容时遇到了问题。我对音量键特别感兴趣。

!!使用onKeyDown或收听MEDIA_BUTTON收听音量变化(例如通过 AudioService)的解决方案适用于手机音量键,​​但不适用于蓝牙音量键

更多信息:(就像信息一样)在 onKeyDown 上的活动中,我看不到耳机按键(它只会拾取手机音量摇杆上的点击)。

我无法从音量变化中推断出点击次数,因为如果设备处于最大/最小音量,则不会触发。此外,如果我尝试使用耳机将音量设置为高于最大音量,则不会显示音量对话框,就像使用电话音量按钮一样。

在调试器中,vol+ on max volume 上唯一发生的事情是调试模式下 avrcp 报告的一些操作:

我如何通过我的服务获得这些事件?或者是否有任何有用的替代方法来检测此类耳机点击?