私は、Androidデバイス(現在のテスト目的では、HTC Evo4GといくつかのオリジナルのMotorolaDroids)に依存するアプリケーションを作成しており、Bluetoothを介して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秒後に終了します。
これはハードウェアの問題ですか、それともここで何か間違ったことをしていますか?