在Android Studio中更新交换机上的蓝牙状态

时间:2019-09-22 05:21:11

标签: android android-studio-3.0

我从在Android Studio上进行Android Apps编程开始,然后在一个简单的蓝牙打开/关闭开关上进行练习,该开关工作正常,可以激活和停用蓝牙,但是如果我从状态栏上的快速设置激活或停用了蓝牙(而不关闭应用程序)开关不会更新。我认为该应用失去了焦点,因此我尝试验证蓝牙状态并更新onResume上的开关,但它不起作用。有想法吗?

public class bluetooth_Control extends AppCompatActivity{

    Switch aSwitch;
    BluetoothAdapter blueadp;

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

        aSwitch = (Switch) findViewById(R.id.switch2);
        blueadp =   BluetoothAdapter.getDefaultAdapter();



        aSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(isChecked){

                    Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
                    startActivityForResult(intent, 0);

                }
                else{

                    blueadp.disable();
                }
            }
        });

    }



    @Override
    protected void onResume(){
        super.onResume();
        setBTswitch(blueadp);
    }


    public void setBTswitch(BluetoothAdapter b){
        if(b.isEnabled()){
            aSwitch.setChecked(true);
        }
        else{
            aSwitch.setChecked(false);
        }
    }
}

2 个答案:

答案 0 :(得分:0)

您应该添加有关“更新onResume()上的开关”的代码,否则我们无法找出问题所在。我建议在onResume()回调中添加日志,以检查获取蓝牙状态的代码是否工作正常。

答案 1 :(得分:0)

好吧,如果有人有相同的躁动,我只会说:onWindowFocusChanged(),因为当您向下拖动通知和快速设置面板时,onResume()和onPause()不会触发。这样就解决了这个问题,也许看起来并不干净准确,因为在您向上拖动以隐藏通知和快速设置面板之前,开关已更新,我一直在做更多的研究,并且可能会更准确地了解听众。