扩展Android蓝牙的可发现性

我正在编写一个依赖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日,但仍列为“新”状态,因此我不希望此问题得到解决.

上一篇:Android系统如何自动连接到配对设备?


下一篇:我可以绑定低功耗蓝牙设备吗?