java - tutorial - Android: Wie übertrage ich eine Bluetooth-Verbindung zu einer anderen Aktivität?




java bluetooth example (3)

Ich habe meine erste Aktivität, bei der die BT-Verbindung hergestellt wird. Dem Benutzer wird eine Option angezeigt, und je nach Auswahl wird eine andere Aktivität geladen.

Das Problem ist, beide Aktivitäten benötigen eine BT-Verbindung und ich sehe nicht den Sinn darin, eine Verbindung zu zerstören, nur um eine andere herzustellen.

Gibt es eine Möglichkeit, die Verbindung zwischen Aktivitäten zu vermitteln?

Hat jemand ein Beispiel für mich oder vielleicht einen Link?

Ich habe versucht " class MyApplication extends Application ", aber dann kann ich nicht verwenden:

super.onCreate(savedInstanceState);
setContentView(R.layout.blablabla);

Das kann eine ziemlich dumme Frage sein, aber ich war nur bei Android + - 2 Wochen.



Haben Sie versucht, das Application-Objekt zu verwenden, um die Bluetooth-Verbindung in einem Objekt zu speichern und Ihre Aktivitäten dazu zu verwenden?

Probieren Sie so etwas aus. (Hinweis: Ich habe noch nie mit Bluetooth unter Android gearbeitet, daher weiß ich nicht, welche relevanten Klassen zu verwenden sind. In diesem Fall verwende ich BluetoothDevice , da es die richtige Klasse zu sein scheint, basierend auf der Bibliotheksdokumentation.)

public class MyApplication extends Application {
    BluetoothDevice device;
    ...
    public synchronized BluetoothDevice getBtConnection() {
        if (device == null) {
            // construct a BluetoothDevice object and put it into variable device
        }
        return device;
    }
}

So muss deine erste Aktivität das machen:

public class FirstActivity extends Activity {
    private BluetoothDevice device;
    ...
    @Override
    protected void onCreate(Bundle b) {
        super(b);
        ...
        device = ((MyApplication) getApplication()).getBtDevice();
        ...
    }
    ...
}

Und jedes Mal, wenn Ihre anderen Aktivitäten diese Verbindung verwenden müssen, müssen sie nur getBtDevice() aufrufen, da FirstActivity bereits instanziiert hat.


Ich hatte das gleiche Problem und löse es endlich! Daher sollten Sie zunächst Ihre Verbindung in einer Aktivität erstellen und sicherstellen, dass die Verbindung in der öffentlichen statischen Variable gespeichert wird, und Sie können diese Verbindungsvariable in jeder Aktivität aufrufen, für die Sie eine Bluetooth-Verbindung haben möchten. Ich empfehle Ihnen, die Service-Klasse zu verwenden, um eine Verbindung zu erstellen und eine Verbindungsvariable wie diese zu verwenden

BluetoothChatService mChatService=DeviceListActivity.chatService




bluetooth