在Android上禁用蓝牙可发现模式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Android上禁用蓝牙可发现模式相关的知识,希望对你有一定的参考价值。
我在android文档中找到了如何打开蓝牙可发现性模式:
Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
startActivity(discoverableIntent);
这将使设备可被发现300秒(documentation)。
我的问题是:在超时发生之前如何关闭可发现性?我想在“设置”|“无线和网络”|“蓝牙设置”小程序中复制相应的设置,以便通过单击打开和关闭可发现性。
有帮助吗?
答案
只需发送持续时间为1的新可发现请求(或者0甚至可能有效):
Intent discoverableIntent = new
Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 1);
startActivity(discoverableIntent);
另一答案
cancelDiscovery()
不是为了这个。此方法可用于停止扫描其他蓝牙设备的设备。与此不同的是,使设备不可见。
另一答案
使用此方法时要小心,因为隐藏它可能很容易更改。
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
try {
Method method = BluetoothAdapter.class.getMethod("setScanMode", int.class);
method.invoke(bluetoothAdapter, BluetoothAdapter.SCAN_MODE_CONNECTABLE);
} catch (NoSuchMethodException | IllegalArgumentException | IllegalAccessException | InvocationTargetException e) {
Log.e(TAG, "Failed to turn off bluetooth device discoverability.", e);
}
也适用于SCAN_MODE_NONE
和SCAN_MODE_CONNECTABLE_DISCOVERABLE
(使用默认持续时间)
以上是关于在Android上禁用蓝牙可发现模式的主要内容,如果未能解决你的问题,请参考以下文章