Отключить кнопку, пока не подключен Bluetooth - PullRequest
0 голосов
/ 22 октября 2019

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

Это проект Android, полученный от сторонней компании, поэтому я изначально не писал код. У меня есть

private void initialize() {
        // initializing and launching the Equipment layer api
        try {
            Utility.writeLogs(this, getString(R.string.info), TAG, 
"Initializing EState Manager");
           EStateManager.getInstance().launch(getResources());
           getInfo();
           requestConfiguration();
           findViewById(R.id.btn_enable).setVisibility(View.VISIBLE);
           handleConnectionDialog();
       } catch (Exception e) {
            e.printStackTrace();
            Utility.writeLogs(this, getString(R.string.error), TAG, 
"EStateManger initialization failed");
            Utility.writeLogs(this, getString(R.string.error), TAG, e);
       }
    }


private void handleConnectionDialog() {

    ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor();
        exec.scheduleAtFixedRate(() -> {
            // do stuff
            if (!EStateManager.getInstance().isDataReceived()) {
                if (!new PrefUtil(this).isConnectionDialogEnabled()) {
                    runOnUiThread(() -> 
onShowPopup(Utility.POPUP_MAP.get(14)));
                }
            } else {
                if (!buttonPressed) {

findViewById(R.id.btn_enable).setVisibility(View.VISIBLE);
                }
                EStateManager.getInstance().setDataReceived(false);
            }
        }, 5, 5, TimeUnit.SECONDS);
    }

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

1 Ответ

0 голосов
/ 23 октября 2019

Сконфигурируйте приемник вещания для прослушивания ACTION_STATE_CHANGED

Затем проверьте дополнительные EXTRA_CONNECTION_STATE и включите кнопку, если она STATE_CONNECTED

Также в ACTION_STATE_CHANGED приемник, проверьте наличие STATE_DISCONNECTED и отключите кнопку.

Ответ на комментарий:

findViewById должен быть разрешен в приемнике, если он определен в MainActivity.java, например так


public class HomeActivity extends Activity {

...

    private final BroadcastReceiver mRadioReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                button = (Button) findViewById(R.id.button1);
                String action = intent.getAction();
                switch (action) {
                    case ACTION__DEVICE_CONNECTED:
                        button.setEnabled(true);
                        break;
                    case ACTION_DEVICE_DISCONNECTED:
                        button.setEnabled(false);
                        break;
                }
            }
        };
...