我正在创建一个应用程序,要求用户的蓝牙可发现性/可见性超时为“永不超时”。
我使用以下代码要求用户更改当前设置。
Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0);
startActivity(discoverableIntent);
但是,如果蓝牙可发现性已经开启,我不想打扰用户。
有没有办法让设备的当前可发现性超时?
答案 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
}
请注意,这是隐藏功能,因此有一天可能被禁止或删除。