1

我正在制作一个需要用户的蓝牙可发现性/可见性超时为“永不超时”的应用程序。

我使用以下代码要求用户更改当前设置。

Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0);           
startActivity(discoverableIntent);

但是,如果蓝牙可发现性已经开启,我不想打扰用户。

有没有办法获得设备当前的可发现性超时?

4

2 回答 2

2

您可以使用以下内容:

BluetoothAdapter ba = BluetoothAdapter.getDefaultAdapter();
if (ba.getScanMode() != BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE)
{
    //Launch the intent to set timeout
}

您还应该确保适配器已打开。

于 2012-06-11T12:26:07.590 回答
0

有一个隐藏getDiscoverableTimeout函数BluetoothAdapter返回秒数作为超时。您可以通过反射访问它:

try {
    java.lang.reflect.Method method;
    method = bluetoothAdapter.getClass().getMethod("getDiscoverableTimeout");
    int value = (int) method.invoke(bluetoothAdapter);
    // ... use the value
}
catch (Exception ex) {
    // ... error handling
}

请注意,这是一项隐藏功能,因此有一天可能会被禁止或删除。

于 2019-06-26T16:01:06.343 回答