Holding-android-bluetooth-Verbindung durch mehrere Aktivitäten

Baue ich eine Android-app, die die Kommunikation mit einem Arduino-board über bluetooth, ich habe den bluetooth-code in der Klasse des eigenen namens BlueComms. Mit dem Gerät verbinden, verwende ich folgende Methode:

public boolean connectDevice() {
    CheckBt();
    BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address);
    Log.d(TAG, "Connecting to ... " + device);
    mBluetoothAdapter.cancelDiscovery();
    try {
        btSocket = device.createRfcommSocketToServiceRecord(MY_UUID);
        btSocket.connect();
        outStream = btSocket.getOutputStream();
        Log.d(TAG, "Connection made.");
        return true;

    } catch (IOException e) {
        try {
            btSocket.close();
        } catch (IOException e2) {
            Log.d(TAG, "Unable to end the connection");
            return false;
        }
        Log.d(TAG, "Socket creation failed");
    }
    return false;

}
    private void CheckBt() {
    mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

    if (!mBluetoothAdapter.isEnabled()) {
        System.out.println("Bt dsbld");
    }

    if (mBluetoothAdapter == null) {
        System.out.println("Bt null");
    }
}

Diese Verbindung in Ordnung, aber sobald ich verlasse die Aktivität, mit der ich verbunden es fällt die Verbindung, mit dieser durch LogCat,

 D/dalvikvm(21623): GC_CONCURRENT freed 103K, 10% free 2776K/3056K, paused 5ms+2ms, total 35ms

Kann ich nicht mehr mit dem Gerät verbinden, aber wenn ich Anruf killBt() er wirft einen fatal error und wenn ich versuche, Daten zu senden, bekomme ich einen "Socket creation failed' Fehler. Meine Nachricht senden code ist wie folgt:

public void sendData(String data, int recvAct) {
    try {
        outStream = btSocket.getOutputStream();
    } catch (IOException e) {
        Log.d(TAG, "Bug BEFORE Sending stuff", e);
    }

    String message = data;
    byte[] msgBuffer = message.getBytes();

    try {
        outStream.write(msgBuffer);
    } catch (IOException e) {
        Log.d(TAG, "Bug while sending stuff", e);
    }
}

Wie soll ich über die Verbindung verhindert wird angehalten, indem die Aktivität Verbinde ich mit, wenn ich wechseln eine andere Aktivität an, ich bin switching-Aktivitäten mit diesem code:

Intent myIntent = new Intent(v.getContext(), Timelapse.class);
    startActivityForResult(myIntent, 0);

Vielen Dank,
Rozz

InformationsquelleAutor Rory Crispin | 2013-07-10
Schreibe einen Kommentar