Android: как передать соединение Bluetooth на другой вид деятельности? - PullRequest
4 голосов
/ 29 июля 2011

У меня есть первая активность, в которой установлено соединение BT. Пользователю предоставляется опция, и в зависимости от их выбора загружается другая активность.

Проблема в том, что оба действия нуждаются в соединении BT, и я не вижу смысла разрушать одно соединение только для создания другого.

Есть ли способ передать связь между действиями?

У кого-нибудь есть пример или ссылка?

Я пробовал "class MyApplication extends Application", но тогда я не могу использовать:

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

Это может быть довольно глупый вопрос, но я только на Android + - 2 недели.

Ответы [ 4 ]

5 голосов
/ 01 августа 2011

Вы пытались использовать объект приложения для сохранения соединения Bluetooth в объекте и использовать свои действия для его получения?

Попробуйте что-нибудь подобное. (Примечание: я никогда не работал с Bluetooth на Android, поэтому я не знаю, какие соответствующие классы использовать. В этом случае я буду использовать BluetoothDevice, так как он кажется правильным классом, основанным на документации библиотеки)

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

Таким образом, ваше первое занятие просто должно сделать это:

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

И затем, всякий раз, когда ваши другие действия должны использовать это соединение, им просто нужно позвонить getBtDevice(), потому что FirstActivity уже создал его.

0 голосов
/ 29 июня 2017

У меня была такая же проблема, и, наконец, я ее решил! поэтому сначала вы должны создать ваше соединение в действии и быть уверенным, что хранилище соединений находится в переменной public static , и вы можете вызывать эту переменную соединения в каждом действии, для которого вы хотите иметь Bluetooth Подключение. Я предлагаю вам использовать класс обслуживания для создания соединения и использовать переменную соединения, как это

BluetoothChatService mChatService=DeviceListActivity.chatService
0 голосов
/ 22 апреля 2016

Я знаю, что это старый вопрос, но для новых людей, посещающих эту тему:

Я думаю, что ответ Кибибайта также сработает, но в противном случае есть возможность использовать (Bound)Service.Это будет работать, даже если приложение закроется

Официальная документация службы Android

0 голосов
/ 29 июля 2011

Вы пробовали использовать комплект?

Проверьте соответствующую тему

http://www.anddev.org/putting_an_object_into_a_bundle-t6431.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...