问题标签 [headset]
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.
android - 从 Motorola Razr Android 4.0.4 上的耳机捕获媒体按钮
这是我的第一篇文章,所以如果我做任何事情或表达任何错误,请让我知道未来,如果这比正常更长或更冗长,我很抱歉,我只是想提供一个好的背景。同样,如果这不是正常格式,请让我知道,因为我想在未来使用并在此站点上做出更多贡献。
我正在维护一个应用程序,它控制耳机按钮将执行的操作,并具有单击、双击、长按等的手势识别功能。该应用程序在我们所有的测试设备(三星 Galaxy S3、摩托罗拉)上运行良好Droid 4 和其他一些运行不同版本的 android 操作系统的人),但我们最近得到消息,使用 motorola razr 该应用程序根本无法运行。
我最初以为他们在谈论运行 4.1 的新高清,但它显然是运行 android 4.0.4 的常规摩托罗拉 razr(至少那是我们的测试设备正在运行的)。插入设备后,我们收到了应用程序的一些响应,我们可以执行长按和单击,但设备无法识别双击和打开等手势。
谷歌搜索了一段时间后,我发现很多人在论坛上谈论这个问题,但我找不到任何开发人员谈论潜在的修复。
这是我所知道的唯一运行 4.0.4 的设备,所以我将开始更多地查看该版本,看看是否有一些注释,但如果有人在这些设备上工作过并且可能知道为什么会发生这种情况如果您对此事有任何了解,我将不胜感激。
android - 蓝牙耳机按键事件
我回复我的答案,我检查源代码“BluetoothHandsfree.java”,这是不可能的,除非重新编译源代码添加特殊广播或添加一些标志来做。我真的希望谷歌可以在蓝牙 Api 上添加自定义按钮事件,我们可以在蓝牙耳机按钮事件上做任何事情。只需点击按钮,我们可以使用语音命令和控制手机中的任何应用程序。不是触摸屏。或与人工智能程序对话,我们可以在自己的应用程序中添加功能,可以按下按钮说某事或做某事。这很容易,但是现在 .......:(
我想捕捉蓝牙耳机按钮单击或双击事件。我们都知道,当双击蓝牙耳机的按钮时,电话会拨打最后一个号码。所以我在“onReceived()”中添加过滤广播“Intent.ACTION_NEW_OUTGOING_CALL”我收到了广播。所以当点击按钮时,收到它,但我发现我不知道是谁在广播这条消息?电话或蓝牙耳机。
在android 4.0.3中,当相机被激活时,双击蓝牙按钮手机(HTC)会拍照,但我仍然无法捕捉到事件?我怎么能抓住它?还是不可能?接收 AT 命令并在我的应用程序中做某事???
跟踪日志:
07-26 11:07:21.958: I/蓝牙 AT recv(1798): AT+BLDN
07-26 11:07:21.958: I/蓝牙 HS/HF(1798): +BLDN
07-26 11:07:21.958: D/Bluetooth HS/HF(1798): searchKeyString input=ActivityRecord{4124aef0 com.htc.launcher/.Launcher}, key=com.android.camera/.CameraEntry
07-26 11:07:22.138: D/PhoneUtils(1798): checkAndCopyPhoneProviderExtras: 缺少部分或全部附加功能。
07-26 11:07:22.328: W/memalloc(1444): 回退到 ashmem
07-26 11:07:22.328: D/memalloc(1444): ashmem: 分配的缓冲区基数:0x41b15000 大小:294912 fd:59
07-26 11:07:22.328: D/memalloc(2137): ashmem: 映射缓冲区基数:0x52eb1000 大小:294912 fd:102
07-26 11:07:22.328: I/ActivityManager(1590): 启动 proc net.dinglisch.android.taskerm 广播 net.dinglisch.android.taskerm/.ReceiverStaticCallRewriter: pid=4089 uid=10140 gids={1015, 1006 , 3001, 3002, 3003}
07-26 11:07:22.338: I/Adreno200-EGLSUB(1444): : Android 图像
07-26 11:07:22.338: I/Adreno200-EGLSUB(1444): : RGBA_8888
07-26 11:07:22.378:I/dalvikvm(4089):为目标 SDK 打开 JNI 应用程序错误解决方法 07-26 11:07:22.408:D/dalvikvm(4089):调试器已分离;对象注册表有 1 个条目
07-26 11:07:22.478: D/WirelessDisplayService(1590): CallReceiver: actionandroid.intent.action.NEW_OUTGOING_CALL
android - 在 Android 中将电话麦克风路由到 Sco 蓝牙耳机
去年我的帖子中的这些机会如何让我看到了我在这个应用程序上的挣扎。现在我已经到了最后阶段,我真的不明白为什么代码不起作用。我想要做的是将音频流从电话麦克风路由到 sco 蓝牙耳机。手机是三星 Galaxy s2,耳机是 Esco Plastronics。我遵循了 android 网站上的文档,这就是我到目前为止所做的:
清单文件上的许可是:
日志给了我很多我无法理解的信息,所以我只附上了几行。
非常感谢您的帮助
android - Permission Denial:不允许发送广播 android.intent.action.HEADSET_PLUG
Google 显然正在为其在 JB 或 4.1 及更高版本上的内部广播引入越来越多的保护。这在 4.0 上运行良好?你知道是否有办法发送一个新的广播,也许是在有权限的情况下使用 sendOrderedBroadcast ?
哪一个?
android - 自动回答:传统智慧似乎不正确
我一直在研究一种使用“KeyEvent”方法自动接听电话的方法,许多人似乎都信誓旦旦。
此方法适用于模拟器,但不适用于实际设备。
我正在使用的代码如下:
发生的情况是,在模拟器上,答案“按钮”似乎起作用。不幸的是,在实际的手机上,看起来正在发送的 KeyEvent 被完全忽略了。
有没有人找到在 Android 2.3.* 上执行此操作的可靠方法?
android - Android 平板电脑和蓝牙 HFP
我正在编写一个从蓝牙耳机录制音频的应用程序。我一直在测试我的 HTC Evo 4g LTE(4.0.3)。耳机配对和应用程序按预期工作。为了进一步测试,我正在尝试将蓝牙耳机连接到一些 Android 平板电脑。耳机配对很好,但随后无法连接。我没有收到错误对话框,但从我的配对设备列表中选择耳机没有响应。我的假设是,这两款设备的免提配置文件都已从这两款设备中删除,因为其中缺少手机。我测试过的设备包括 Asus Nexus 7 (4.1) 和 Motorola Xoom(4.0)。
考虑到我的假设是正确的,有没有办法用缺少的 HFP 蓝牙配置文件打包应用程序而不需要 root 访问权限?
c# - 连接到电脑上的蓝牙耳机
我有一个振动耳机,它会在来自移动设备的来电时振动。我想用我的电脑连接这个耳机,并像接到电话一样向它发送“来电信号”。
这如何通过命令行或 .net (C#) 来完成?
谢谢 !!!!
android - SmartWirelessHeadset Pro 图标
(我已经为 Sony SmartWatch 创建了一个 Android/Extension 应用程序,现在我也在添加对 Sony Smart Wireless Headset Pro 的支持。)
我的问题是扩展程序的黑白 PNG 图标显示不正确(看起来它已损坏或其他什么?)。
我首先想到可能是构建签名应用的时候出现压缩错误,所以我构建了一个未签名的版本,将压缩后的图标替换为我原来的图标,然后进行签名。这不起作用,所以现在我认为耳机读取图像的方式可能有问题?
我还尝试了所有使用 GIMP 创建的不同图像颜色模式(1 位、24 位、32 位 PNG),但我无法让它工作。
有谁知道这个图标是否有任何特定限制(除了大小 18x18px)或者您是否必须以某种特殊格式保存文件?
android - Android startBluetoothSco 未启动 sco 但 isBluetoothScoOn 返回 true
我创建了一个带有示例项目的 GitHub 存储库,该项目显示了我在这里询问的以下问题:
https
://github.com/paulpv/audio-loopback/tree/simplified/src/com/twistpair/wave/experimental/loopback
(请坚持使用“简化”分支并忽略“主”分支)
两个主要文件是:
- https://github.com/paulpv/audio-loopback/blob/simplified/src/com/twistpair/wave/experimental/loopback/MainActivity.java
- https://github.com/paulpv/audio-loopback/blob/simplified/src/com/twistpair/wave/experimental/loopback/AudioStateManager.java
免责声明:我目前只使用一个运行 CyanogenMod 10 Jelly Bean 的三星 Epic SPH-D700 来进行编码和测试。我没有在其他设备上尝试过这个,但也许这可能有助于阻止我把头发拉出来发疯。
几个月来,我一直在努力让 Android 蓝牙 SCO可靠地启动和停止以及捕获/播放音频!
一旦我可以让手机进入 SCO 模式,通过 AudioRecord 和 AudioTrack(分别)捕获和播放就可以正常工作,如文档所述。
我遇到的问题是我无法可靠地将手机置于 SCO 模式!
“互联网”上使用 startBluetoothSco() 和 setBluetoothScoOn(true) 的示例看起来都很简单直接,但是当我在我的设备上使用它们时,它们几乎无法可靠地工作。
我创建了自己的测试应用程序,除了启动和停止 SCO 什么都不做,我什至无法让它可靠地工作!
我的代码监听BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED EXTRA_STATE==CONNECTED.
我可以可靠地检测到任何耳机何时连接或断开。
当检测到连接时,我的处理程序立即调用 startBluetoothSco()。
A 可以发誓至少一旦这踢到SCO_AUDIO_STATE
了 C O
NNECTED,但 99% 的时间它只是导致从DISCONNECTED->CONNECTING->DISCONNECTED
.
这是我的 GitHub 示例应用程序的注释日志输出:
我的应用程序在关闭 Jawbone 耳机的情况下启动并更新 UI...
...UI 更新完成
Sticky 广播,告诉我当前的 SCO_AUDIO_STATE...
...当前 SCO_AUDIO_STATE == DISCONNECTED; 预期,因为我的耳机已关闭。
调用我的 SCO Disconnected 事件侦听器并使用两个 sendMessage 更新 UI...
...UI 更新完成
大约 20 秒后,我打开了 Jawbone 耳机……
颚骨连接;我的事件侦听器被称为...
...看到我们可以SCO...
...并自动调用 startBluetoothSco()这就是问题所在
!为什么这个对 startBluetoothSco 的调用不会导致 SCO_AUDIO_STATE == CONNECTED?!?!
我的事件监听器完成了带有 sendMessage 以更新带有当前 BT 状态的 UI ...
... UI 更新完成
startBluetoothSco 的第一个结果进来...
...从 DISCONNECTED 移动到 CONNECTING
来自 startBluetoothSco 的第二个结果进来...
...从 CONNECTING 移动到DISCONNECTED
我本来希望 SCO 从 CONNECTING 到CONNECTED!
我的事件侦听器被调用并使用两个 sendMessages 更新 UI ...
...UI 更新完成
我等待 20 秒左右 SCO 连接,但它永远不会出现。
我按下我的应用程序的“startBluetoothSco”按钮。
请注意,这会导致在 17:00:37.626 对 startBluetoothSco() 进行完全相同的调用
startBluetoothSco 的第一个结果出现在...
...从 DISCONNECTED 移动到 CONNECTING
这是与在 17:00:37.626 自动调用 startBluetoothSco() 不同的地方
我们得到一个BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED事件...
...从 DISCONNECTED 移动到 CONNECTING
我们得到另一个 BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED 事件...
...从 CONNECTING 移动到 CONNECTED
事件使用一个 sendMessage 更新 UI
... UI 更新完成(老实说,我不确定第二次调用 isBluetoothScoOn 是什么)
startBluetoothSco 的第二个结果进来......
...从 CONNECTING 移动到 CONNECTED
最后!
我的事件侦听器被调用并使用两个 sendMessages 更新 UI ...
...UI 更新完成
当我在一段时间后“手动”启动 SCO 时,一切(这次)都可以工作,但如果我在连接耳机后立即自动启动 SCO,则不会。
更糟糕的是,当事情没有按预期工作时,我在 SCO 国家看到了奇怪的行为:
- 将 startBluetoothSco() 延迟 3-5 秒似乎没有什么区别。我没有尝试将其延迟超过 5 秒。等待 5 秒以上让音频开始流入您的 BT 耳机是荒谬的。
- 有时调用 isBluetoothScoOn() 会返回 true,即使自上次 DISCONNECTED 状态说状态更改为 CONNECTED 以来我从未收到过广播事件。
- 有时,从 UI 中“手动”调用 startBluetoothSco() 什么都不做,就好像 SCO 已经打开一样,但自从上次 DISCONNECTED 状态说状态更改为 CONNECTED 以来,我从未收到任何广播事件。
- 尝试打开 AudioTrack 或 AudioRecord 导致没有声音(当 SCO 没有异常行为时,同样的代码可以正常工作。即:问题是 SCO 状态,而不是 AudioTrack/AudioRecord 调用)。
- 调用 stopBluetoothSco() 不会导致任何事件报告状态 DISCONNECTED。
- setBluetoothScoOn(false/true) 没有区别。老实说,我不明白看似多余的“startBluetoothSco()/stopBluetoothSco()”和“setBluetoothScoOn(boolean)”的区别。当一切正常时,我调用 startBluetoothSco() 会导致 isBluetoothScoOn() 返回 true,这让我认为我不需要调用 setBluetoothScoOn(true)。
- 重新启动手机没有任何区别。
- 重新启动耳机没有任何区别。
- 换另一个耳机没什么区别。
- 有时耳机会失去配对,必须重新配对。
鉴于谷歌/Android 在蓝牙支持方面的记录,这很少让我感到惊讶。
有人可以让我摆脱痛苦并明确解释如何在Android中可靠地启动和停止蓝牙SCO吗?
PS:是否有官方渠道可以升级此类问题 [w/Google? 三星?]?或者,StackOverflow 是我找到实际答案的最佳机会吗?
java - 通过电脑控制蓝牙耳机
我一直在到处搜索,但一直找不到答案——也许我只是使用了错误的搜索词,但我想知道是否有人知道是否有办法自动控制蓝牙耳机的音量?我正在考虑使用 Java,因为它们已经定义了一个堆栈,但对任何可能的工作都持开放态度。如果它也可以与Matlab集成,那就更好了。
任何帮助是极大的赞赏!