扩展Android蓝牙可发现性

时间:2012-06-06 00:17:57

标签: android bluetooth

我正在编写一个依赖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秒后结束。

这是硬件问题,还是我在这里做错了什么?

2 个答案:

答案 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秒。