Android - Bluetooth-Erkennung findet kein Gerät

Ich arbeite derzeit an einer kleinen App, um mit den Diensten zu beginnen, die die Bluetooth-Android-API bereitstellen kann.

Edit -> Antwort:

Es scheint, dass das Problem an den spezifischen Nexus 5-Geräten lag. Scheint, als ob ihr Bluetooth-Empfänger nicht gut funktioniert. Die folgende Lösung sollte für andere Geräte funktionieren.

Anmerkung

Ich habe die Dokumentation hier gelesen:http: //developer.android.com/guide/topics/connectivity/bluetooth.htm sowie der folgende Quellcode dieses Tutorialshttp: //www.londatiga.net/it/programming/android/how-to-programmatically-scan-or-discover-android-bluetooth-device befindet sich auf Github unter / Lorensiuswlt / AndroBluetooth

Ich habe fast alle Funktionen abgeschlossen, die mich interessiert haben (z. B. die Überprüfung auf das Vorhandensein von Adaptern, das Aktivieren / Deaktivieren der Bluetooth-Funktion, das Abfragen gepaarter Geräte und das Festlegen, dass der Adapter erkannt werden kann).

Problem

Tatsächlichkein Gerät gefunden Wenn ich die .onDiscovery () -Methode starte, obwohl Geräte über Einstellungen / Bluetooth auf meinem Nexus 5 gefunden werden.

Hier geh ich damit um:

public class MainActivity extends AppCompatActivity {
private BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

...

protected void onCreate(Bundle savedInstanceState) {
IntentFilter filter = new IntentFilter();
filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
filter.addAction(BluetoothDevice.ACTION_FOUND);
filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
registerReceiver(mReceiver, filter); 
}

Dasfilter funktioniert gut soweit ich es versuchen konnte, d. h. ACTION_STATE_CHANGED (bei aktivierter Bluetooth-Funktion) und die beiden ACTION_DISCOVERY _ ***.

Die folgende Methode wird dann erfolgreich aufgerufen:

public void onDiscovery(View view)
{
    mBluetoothAdapter.startDiscovery();
}

Und dann habe ich meinen Bluetooth-Empfänger:

private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();

        if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)) {
            final int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR);

            if (state == BluetoothAdapter.STATE_ON) {
                showToast("ACTION_STATE_CHANGED: STATE_ON");
            }
        }

        else if (BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(action)) {
            mDeviceList = new ArrayList<>();
            showToast("ACTION_DISCOVERY_STARTED");
            mProgressDlg.show();
        }

        else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action) && !bluetoothSwitchedOFF) {
            mProgressDlg.dismiss();
            showToast("ACTION_DISCOVERY_FINISHED");

            Intent newIntent = new Intent(MainActivity.this, DeviceListActivity.class);

            newIntent.putParcelableArrayListExtra("device.list", mDeviceList);

            startActivity(newIntent);
        }

        else if (BluetoothDevice.ACTION_FOUND.equals(action)) {// When discovery finds a device
            // Get the BluetoothDevice object from the Intent
            BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
            mDeviceList.add(device);
            showToast("Device found = " + device.getName());
        }
    }
};

Ich habe keine Probleme mit dem Logcat und habe während des Tests keine Probleme bemerkt. Das einzige Problem ist, dasskein Gerät wird erkannt am Ende des Scans, wenn viele auffindbare in der Nähe verfügbar sind.

Ich habe versucht, nicht zu viel Code zu schreiben, um das Thema nicht zu überfluten. Frag mich, ob du mehr brauchst.

Danke, dass Sie mich gelesen haben, und vielen Dank im Voraus für Ihre Antworten.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage