android-bluetooth 相关问题

Android蓝牙子系统。也可以参考在Android中使用蓝牙硬件。

如何从 Android 应用程序获取游戏控制器的电池电量

我开发了一个 Android 应用程序,它通过蓝牙连接到游戏手柄控制器,并显示在 Android 设备上的手持控制器上进行的按钮按下、操纵杆移动等。

回答 1 投票 0

从 Android 应用程序检测蓝牙外设关闭

我有一个外围设备,我正在从我开发的 Android 应用程序连接到该设备。我可以使用 onConnectionStateChange 来检测设备何时超出范围并通知用户

回答 1 投票 0

如何将蓝牙套接字从一个活动传输到另一个活动?

在我的 Android 应用程序中,我设置了两个活动: 连接活动:此活动有助于查找并连接 蓝牙设备。它显示了配对和可发现的列表 设备。 控制法...

回答 1 投票 0

如何将BluetoothSocket从一个活动传输到另一个活动?

在我的 Android 应用程序中,我设置了两个活动: 连接活动:此活动有助于查找并连接 蓝牙设备。它显示了配对和可发现的列表 设备。 控制动作...

回答 1 投票 0

如何使用已弃用的方法克服 Android CompanionDataManager?

在其自己的文档页面中,指出 CompanionDeviceManager 是扫描设备的首选机制,而无需请求臭名昭著的 FINE_LOCATION 权限。 设备管理器。

回答 1 投票 0

配备 Wear OS 3 / Android 11 的 Fossil Gen 6 上不显示 CompanionDeviceManager 蓝牙对话

我有两个应用程序,它们的代码库非常相似,在移动设备(Android 13 / API 33)和磨损(Android 11 / API级别30)上运行良好,使用旧式蓝牙连接程序。 当尝试发布...

回答 1 投票 0

三星 SM-A546E 蓝牙在后台出现奇怪行为

这不是编码问题。由于这个原因,这个问题可能会被否决。 一个简短的历史 我们有一个 BLe 设备,每 20 毫秒发布一次广告。手机(iOS 或 Android)连接到...

回答 1 投票 0

Android 慢速蓝牙 RFCOMM 传输速率与 RN4678

我们正在尝试一系列新平板电脑,我们尝试的每一款平板电脑都存在 RN4678 板传输速率慢的问题。我们目前使用的是联想 M10 FHD Plus。我们尝试了一些...

回答 3 投票 0

Android 不支持 BlueCove 库

我在非 Android Java 项目中使用 BlueCove 库连接到蓝牙设备。在 Windows 上测试时工作正常,但在 Android 设备上测试时出现以下错误。

回答 1 投票 0

如果我像下面的代码一样启用通知,为什么我们在写入特征时会收到 ERROR_GATT_WRITE_REQUEST_BUSY 错误?

对象 CHatServer{ 私人乐趣 setupGattService(): BluetoothGattService { //...... val rrepCharacteristic = BluetoothGattCharacteristic( RREP_UUID,

回答 1 投票 0

Android 是否有相当于 iOS 的核心蓝牙 canSendWriteWithoutResponse 的功能?

在实施固件更新时,我们注意到不同的Android手机对于GATT特征写入无响应似乎具有不同程度的可靠性。有些会阻止...

回答 1 投票 0

蓝牙 5.2 LE 助听器 CROS/Bi-CROS 功能

我想实现一个与Android 5.2助听器耳机一起使用的Android应用程序,能够将声音从一只耳朵(左耳助听器上的麦克风)传输到左耳(右耳上的助听器); ...

回答 0 投票 0

为什么我们在写入特征时会收到 ERROR_GATT_WRITE_REQUEST_BUSY 错误?

我正在 ble 上构建聊天应用程序。我不需要队列,因为我将按顺序写入。但有时我会收到此错误。我尝试调试它,我发现如果我删除我的通知特征,那么它

回答 1 投票 0

作为数据传输的蓝牙类的类型处理程序传入什么?

我正在开发一个 Android 应用程序,通过 HC-05 通过蓝牙与 Arduino 进行无线通信。我一直在关注 Android 传输蓝牙数据文档。以下是...

回答 2 投票 0

在 Android 14 中,取消第一次配对请求后重试配对时,BluetoothDevice#getName() 返回 null

BluetoothDevice#getName() 在 Android 14 上返回 null 尝试使用以下步骤进行连接时,获取 BluetoothDevice#getName() 的空值 扫描蓝牙设备 取消配对请求 重试

回答 1 投票 0

Android 蓝牙在不应该扫描时扫描经典和 BTLE 设备

android 文档指出: 注意:您只能扫描蓝牙 LE 设备或扫描经典蓝牙设备,如蓝牙中所述。您无法同时扫描蓝牙 LE 和经典

回答 2 投票 0

Android 蓝牙配对,无需用户输入 PIN 码并使用 Android API 进行确认

我是Android编程的初学者,因为我三个月前才开始。 我正在做一个使用蓝牙将 Android 应用程序连接到 Arduino 的项目。我已经有 Android 应用程序的代码 (

回答 3 投票 0

配套设备逻辑无法在 Android 9 上运行?

我已经在我的 Android 应用程序中实现了对配套设备的支持。根据文档,该功能应该在Android 8及以上版本上可用。该流程在 Android 13 上完美运行,...

回答 1 投票 0

Android java中如何接收蓝牙耳机播放暂停事件

如何在我的 VOIP 应用程序中接收蓝牙颈带播放暂停事件? 我在应用程序中实现了下面的广播接收器。 清单文件 如何在我的 VOIP 应用程序中接收蓝牙颈带播放暂停事件? 我在应用程序中实现了下面的广播接收器。 清单文件 <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <receiver android:name=".MediaButtonReceiver" android:exported="true" android:priority="10000" > <intent-filter > <action android:name="android.intent.action.MEDIA_BUTTON" /> </intent-filter> </receiver> public class MediaButtonReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { android.util.Log.d("TAG", "Bluetooth onPlay: "+intent.getAction()); if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) { KeyEvent event = intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT); if (event != null && event.getAction() == KeyEvent.ACTION_DOWN) { int keyCode = event.getKeyCode(); if (keyCode == KeyEvent.KEYCODE_MEDIA_PLAY || keyCode == KeyEvent.KEYCODE_MEDIA_PAUSE) { // Handle play/pause event } } } } } 并像这样注册到调用活动 MediaButtonReceiver r = new MediaButtonReceiver(); registerReceiver(r, new IntentFilter(Intent.ACTION_MEDIA_BUTTON)); 并且还在应用程序中的广播接收器下面实现了 public class BluetoothHeadsetReceiver extends BroadcastReceiver implements BluetoothProfile.ServiceListener { private static final String TAG = "BluetoothHeadsetReceiver"; private BluetoothHeadset bluetoothHeadset; @Override public void onServiceConnected(int profile, BluetoothProfile proxy) { if (profile == BluetoothProfile.HEADSET) { bluetoothHeadset = (BluetoothHeadset) proxy; Log.d(TAG, "Bluetooth Headset connected"); } } @Override public void onServiceDisconnected(int profile) { if (profile == BluetoothProfile.HEADSET) { bluetoothHeadset = null; Log.d(TAG, "Bluetooth Headset disconnected"); } } @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); Log.d(TAG, "Bluetooth Headset onReceive : "+action); if (BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED.equals(action)) { int state = intent.getIntExtra(BluetoothHeadset.EXTRA_STATE, BluetoothHeadset.STATE_DISCONNECTED); if (state == BluetoothHeadset.STATE_CONNECTED) { Log.d(TAG, "Bluetooth Headset connected"); } else if (state == BluetoothHeadset.STATE_DISCONNECTED) { Log.d(TAG, "Bluetooth Headset disconnected"); } } else if (BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED.equals(action)) { int state = intent.getIntExtra(BluetoothHeadset.EXTRA_STATE, BluetoothHeadset.STATE_AUDIO_DISCONNECTED); if (state == BluetoothHeadset.STATE_AUDIO_CONNECTED) { Log.d(TAG, "Bluetooth Headset audio connected"); // Handle button click events or other actions here } else if (state == BluetoothHeadset.STATE_AUDIO_DISCONNECTED) { Log.d(TAG, "Bluetooth Headset audio disconnected"); } }else{ Log.d(TAG, "Bluetooth Headset onReceive else : "); } } public void register(Context context) { BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (bluetoothAdapter != null) { bluetoothAdapter.getProfileProxy(context, this, BluetoothProfile.HEADSET); IntentFilter filter = new IntentFilter(); filter.addAction(BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED); filter.addAction(BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED); context.registerReceiver(this, filter); } else { Log.e(TAG, "Bluetooth is not supported on this device"); } } public void unregister(Context context) { context.unregisterReceiver(this); if (bluetoothHeadset != null) { BluetoothAdapter.getDefaultAdapter().closeProfileProxy(BluetoothProfile.HEADSET, bluetoothHeadset); } } } 在调用 Activity OnCreate() 方法中注册以下代码。 MediaButtonReceiver r = new MediaButtonReceiver(); registerReceiver(r, new IntentFilter(Intent.ACTION_MEDIA_BUTTON)); if(gc.hasBTPermission(this, ConstantStrings.BLUETOOTH_PERMISSION)) { if (BluetoothManager.getInstance().isBluetoothHeadsetAvailable()) { headsetReceiver = new BluetoothHeadsetReceiver(); headsetReceiver.register(this); BluetoothManager.getInstance().initBluetooth(); } } 但不接收蓝牙耳机播放,暂停点击事件仅接收应用程序中的蓝牙连接和断开事件。 我想基于蓝牙点击事件呼叫接受和挂断呼叫,但不在应用程序中接收事件。 蓝牙 HID 配置文件/服务始终由设备的底层操作系统处理。只需订阅操作系统的关键事件即可。在 Android 中,应用程序可以通过覆盖 MediaSession.Callback.onMediaButtonEvent(Intent) 来覆盖默认行为。在这种情况下,应用程序可以/需要自行处理所有 API 细节。

回答 1 投票 0

有任何 Google API 可以限制蓝牙的范围吗?

我正在开发一个简单的Android应用程序,可以扫描附近的蓝牙设备并与它们配对。我想知道我是否可以限制发现范围,例如如果任何配对设备超出

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.