Как определить активное соединение с Bluetooth-устройства с помощью Android SDK

Я работаю над приложением для Android, которое использует соединение Bluetooth, и я хочу считывать данные с устройства в приложение, но мне нужно знать, подключен ли я к устройству, прежде чем читать данные.

Ниже приведен код, который запускает настройки Bluetooth, где я могу подключить устройство. Как убедиться, что сопряженное устройство активно подключено к приложению и готово к отправке данных?

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_connect);

    Button btn = (Button) findViewById(R.id.connect_button);

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intentOpenBluetoothSettings = new Intent();
            intentOpenBluetoothSettings.setAction(android.provider.Settings.ACTION_BLUETOOTH_SETTINGS);
            startActivity(intentOpenBluetoothSettings);
        }
    });

    mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    pairedDevices = mBluetoothAdapter.getBondedDevices();

person user3316012    schedule 30.06.2016    source источник


Ответы (1)


Сопряжение и Подключение — это два разных понятия. Ваш код только связывает целевое устройство Bluetooth и запоминает его, информацию о котором можно получить, вызвав:

BluetoothAdapter.getDefaultAdapter().getBondedDevices();

Эта функция на самом деле вернет всю информацию о сопряженных устройствах Bluetooth, даже если эти устройства не находятся рядом с вашим телефоном (не подключены к нему).

Чтобы подключить устройство Bluetooth, вам нужно написать свой собственный код подключения и выбрать определенный UUID, чтобы сообщить вашему телефону, какой тип подключения (последовательный, аудио и т. д.) вы хотите установить.

Дополнительные сведения о подключении к устройству Bluetooth см. в официальном документе. в разделе Подключение в качестве клиента.

person solosodium    schedule 30.06.2016