我正在编写一个依赖于 Android 设备的应用程序(对于我目前的测试目的,一个 HTC Evo 4G 和几个原始的摩托罗拉 Droids)可以通过蓝牙发现 300 秒。
我的目标是 Android 版本 2.0.1,所以根据 API,我应该能够提示用户启用最多 300 秒的可发现性。在我的 Droids 和我的 Evo 上,提示窗口都列出了 300 秒,但它们都在 120 秒后结束。
我用来提示用户的代码在这里:
private void makeDiscoverable() {
Intent discoverableIntent = new Intent(
BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
discoverableIntent.putExtra(
BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
startActivity(discoverableIntent);
}
我确信这段代码可以运行。但是,我稍后有一个处理程序,用于处理我的可发现性状态更改(我假设在这种情况下结束),如下所示:
if (isDiscoverableChange(action)) {
int discoverState = intent.getIntExtra(
BluetoothAdapter.EXTRA_SCAN_MODE, Short.MIN_VALUE);
if (isDiscoverableState(discoverState)) {
setItOrder();
setUpScanAndDisplay();
} else {
discoverScheduler.cancel();
itScheduler.cancel();
}
}
private boolean isDiscoverableChange(String action) {
return BluetoothAdapter.ACTION_SCAN_MODE_CHANGED.equals(action);
}
private boolean isDiscoverableState(int state) {
return state == BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE;
}
我尝试注释掉可发现模式结束时运行的部分,以防它过早取消所有内容,但可发现性确实在 120 秒后结束。
这是硬件问题,还是我在这里做错了什么?