Bluetooth verbindet sich nicht mit 4.4.2

Ich habe ein Bluetooth-Gerät, das mit allen Android-Versionen verbunden ist, die ich vor 4.4.2 ausprobiert habe. Das Galaxy Tab 4 oder S3 lässt sich jetzt nicht anschließen. Das Tab 3 verbindet sich gut mit 4.1.2. Das Problem scheint im @ aufzutretAcceptThread beim Versuch, das @ zu initialisierBluetoothSocket. Der von mir verwendete Code basiert auf dem Chat-Beispiel in der SDK.

My Code akzeptieren

private class AcceptThread extends Thread {
    // The local server socket
    private BluetoothServerSocket mmServerSocket;
    public boolean successInit = false;

    public AcceptThread() {
        closeAllConnections();          
        BluetoothServerSocket tmp = null;

        // Create a new listening server socket
        while(!successInit) {
            try {
                tmp = mAdapter.listenUsingRfcommWithServiceRecord(NAME, MY_UUID);
                successInit= true;
                Log.i("TAG", "Socket Server Created");
            }
            catch(Exception e) {
                Log.i("TAG", e.getMessage());
                successInit = false;
            }
        }

        mmServerSocket = tmp;
    }
    public void run() {
        BluetoothSocket socket = null;

        // Listen to the server socket if we're not connected
        Log.i("BluetoothComService", String.valueOf(mState));
        while (mState != STATE_CONNECTED) {
            try {
                // This is a blocking call and will only return on a
                // successful connection or an exception
                mAdapter.cancelDiscovery();

                socket = BluetoothAdapter.getDefaultAdapter()                           
                     .getRemoteDevice(getThermMAC())
                     .createRfcommSocketToServiceRecord(UUID
                     .fromString("00001101-0000-1000-8000-00805F9B34FB"));

           //   socket = mmServerSocket.accept();  // here socket might be closed or timeout
                Log.e("BluetoothComService", "No accept Exception");
            }catch (IOException e) {
                Log.e("TAG", e.getMessage());
            }

getThermMAC() oben ist meine Methode, um die Adresse des verbundenen Geräts zurückzugeben.

Die Fehle

Imrun(), wenn ich @ benut

socket=BluetoothAdapter.getDefaultAdapter()                           
                     .getRemoteDevice(getThermMAC())
                     .createRfcommSocketToServiceRecord(UUID
                     .fromString("00001101-0000-1000-8000-00805F9B34FB"));

dann bekomme ich einNPE in Zeile 501 vonBluetoothSocket.java im Android-Framework, das ist diese Zeile

int left = b.length;

So scheint es, dassb istnull aber es scheint nicht nach dem Debuggen zu sein.b ist einbyte[] die von meinem @ gesendet wiBluetoothService Klasse, die eine brandneue, initialisierte @ sendbyte[] aus demConnectedThread genau wie das sdk-beispiel und wie ich es bei älteren versionen gemacht habe.

Wenn ich das auskommentiere und versuche, @ zu verwend

socket = mmServerSocket.accept();

was hat in der Vergangenheit gearbeitet, dann bekomme ich

bt socket is not in listen state

Also, ich weiß nicht, wie ich es in den "Listen-Status" versetzen soll oder warum es nicht so wäre. Hat jemand dies erlebt oder weiß, wie man es umgeht? Oder wie man das @ nicht bekomNPE wenn ich das erste Snippet benutze (wenn das überhaupt stimmt).

Ich fan

Wenn ich ein @ bekommen haIOException Ich fanddieser Beitra das hat mich geführtHie aber das hat mich nirgendwo hingekriegt.

Beachten Die Kopfgeldnachricht lautet 4.4.4, aber auf der Registerkarte 4 steht 4.4.2.

Gerätefehler

Ich bemerke diese Bluetooth-Fehler auch, wenn ich mein Gerät zum ersten Mal über USB an den Computer anschließe.

09-05 15:18:03.217: E/BluetoothServiceJni(15148): SOCK FLAG = 0 ***********************
09-05 15:18:13.177: E/BluetoothServiceJni(15148): SOCK FLAG = 0 ***********************
09-05 15:18:13.217: E/BluetoothServiceJni(15148): SOCK FLAG = 0 ***********************

aber ich konnte nicht herausfinden, was diese Flagge bedeutet.

Ich stelle fest, dass es bekannte Fehler im BT-Stack 4.x gibt Siehe einen von vielen Fehlerberichten)

minSDK ist derzeit 10. Wenn ich jedoch eine funktionierende Lösung finde, kann ich das umgehen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage