在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_NONESCAN_MODE_CONNECTABLE_DISCOVERABLE(使用默认持续时间)

Source

以上是关于在Android上禁用蓝牙可发现模式的主要内容,如果未能解决你的问题,请参考以下文章

使用 c 代码使蓝牙可发现

Android TalkBack 和片段堆栈

Android Jetpack 导航禁用滚动位置

如何禁用在android片段类中按下的后退按钮

php,android:蓝牙扫描仪禁用软件键盘

Android 蓝牙操作详解