我正在编写一个依赖Android设备的应用程序(我目前的测试目的是HTC Evo 4G和几个原装摩托罗拉机器人)可以通过蓝牙发现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秒后结束。
这是硬件问题,还是我在这里做错了什么?
答案 0 :(得分:1)
这似乎是一个错误:
问题15486:无法遵守Bluetooth Adapter.EXTRA DISCOVERABLE http://code.google.com/p/android/issues/detail?id=15486
问题13361:BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION intent Extra不延长120秒发现间隔 http://code.google.com/p/android/issues/detail?id=13361
首次报道2010年12月22日,仍然被列为“新”状态,所以我不希望这个被修复。
答案 1 :(得分:1)
除了Android超时之外还有蓝牙DiscoverableTimeout
值。
通常,DiscoverableTimeout
在文件/system/etc/bluetooth/main.conf
中设置为120。
你应该写
DiscoverableTimeout = 0
在/system/etc/bluetooth/main.conf
中禁用蓝牙超时。这将允许您将Android超时延长超过120秒。