禁用按钮,直到连接了蓝牙

问题描述 投票:0回答:1

我有一个可自动打开设备蓝牙并连接至已配对设备的android应用。设备发送不断更新的数据。如果用户按下启用设备按钮,该按钮用于初始化设备并开始操作,则在建立连接之前,将重置所有先前的数据。

这是我从一家外包公司得到的一个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);
    }

我想在成功连接蓝牙之前禁用该按钮,以确保保存的参数不会更改。

android-bluetooth
1个回答
0
投票

配置广播接收器以收听ACTION_STATE_CHANGED

然后检查多余的EXTRA_CONNECTION_STATE并启用按钮,如果它是STATE_CONNECTED

同样也在ACTION_STATE_CHANGED接收器中,检查STATE_DISCONNECTED,并禁用按钮。

© www.soinside.com 2019 - 2024. All rights reserved.