获取当前的蓝牙可发现性超时

时间:2012-06-11 12:17:28

标签: android bluetooth

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

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

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

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

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

2 个答案:

答案 0 :(得分:2)

您可以使用以下内容:

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

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

答案 1 :(得分:0)

BluetoothAdapter上有hidden getDiscoverableTimeout函数,该函数返回超时秒数。您可以通过反射访问它:

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
}

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