我正在编写一个依赖Android设备的应用程序(出于目前的测试目的,HTC Evo 4G和几个原始的摩托罗拉Droids)可以通过蓝牙找到300秒钟.
我的目标是Android 2.0.1版,因此根据API,我应该能够提示用户启用可发现性的最长时间为300秒.在我的Droid和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秒后结束.
这是硬件问题,还是我在这里做错了什么?
解决方法:
它似乎是一个错误:
问题15486:不遵守Bluetooth Adapter.EXTRA DISCOVERABLE
http://code.google.com/p/android/issues/detail?id=15486
问题13361:BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION目的Extra不会延长120秒的发现间隔
http://code.google.com/p/android/issues/detail?id=13361
首次报告于2010年12月22日,但仍列为“新”状态,因此我不希望此问题得到解决.