在安卓应用程序中检测开机状态时引入时间延迟



嘿!

我正在创建一个测试应用程序,它可以检测设备是否连接到任何电源,并相应地显示"充电"或"放电"状态。在这里之前,它运行得很好。现在我想要的是,当我取下电源时,它应该在延迟10秒后显示"放电"。在这10秒内,如果我重新连接电源,应用程序就不会麻烦更新状态并保持"充电"状态。我想保持延迟时间可配置。我该怎么做?以下是迄今为止使用的代码片段。它显示设备的状态,没有任何延迟。

        BroadcastReceiver br = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context , Intent intent) {

        if(Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())){

            int btstatus = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
            switch(btstatus)
            {
            case 1:
                status="Unknown";
                break;
            case 2:
                status="Charging";
                break;
            case 3:
                status="Discharging";
                break;
            case 4:
                status="Not charging";
                break;
            case 5:
                status="Battery Full";
                break;
                default: status= "Error!";
            }
                     tv2.setText(status);

//OnCreate method
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fragment_main);
    tv1= (TextView)findViewById(R.id.textView1);
    tv2=(TextView)findViewById(R.id.textView2);
     registerReceiver(br, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

}
//onDestroy()
@Override
protected void onDestroy() {
    // TODO Auto-generated method stub
    unregisterReceiver(br);
      super.onDestroy();  

}
    new AsyncTask() {
        @Override
        protected Object doInBackground(Object[] params) {
        try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        }
        @Override
        protected void onPostExecute(Object o) {
            // call a method that changes the state; don't change the state here, do it on the UI thread
        }
    }.execute();

最新更新