Erweitern Sie die Android Bluetooth-Erkennbarkeit

Ich schreibe eine Anwendung, die sich darauf stützt, dass das Android-Gerät (für meine aktuellen Testzwecke ein HTC Evo 4G und mehrere Original-Motorola-Droiden) 300 Sekunden lang über Bluetooth auffindbar ist.

Ich beziehe mich auf die Android-Version 2.0.1, daher sollte ich gemäß der API den Benutzer auffordern können, die Erkennbarkeit für maximal 300 Sekunden zu aktivieren. Sowohl bei meinen Droiden als auch bei meinem Evo sind im Eingabeaufforderungsfenster 300 Sekunden aufgelistet, beide enden jedoch nach 120 Sekunden.

Der Code, den ich verwendet habe, um den Benutzer aufzufordern, ist hier:

private void makeDiscoverable() {
    Intent discoverableIntent = new Intent(
            BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
    discoverableIntent.putExtra(
            BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
    startActivity(discoverableIntent);
}

Ich bin sicher, dass dieser Code ausgeführt wird. Ich habe jedoch später einen Handler für den Fall, dass sich mein Erkennbarkeitsstatus ändert (in diesem Fall endet, nehme ich an), der wie folgt lautet:

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;
}

Ich habe versucht, den Teil zu kommentieren, der ausgeführt wird, wenn der Erkennbarkeitsmodus endet, für den Fall, dass alles vorzeitig abgebrochen wurde, aber die Erkennbarkeit wirklich nach 120 Sekunden endet.

Handelt es sich um ein Hardwareproblem, oder mache ich hier etwas falsch?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage