嘿!
我正在创建一个测试应用程序,它可以检测设备是否连接到任何电源,并相应地显示"充电"或"放电"状态。在这里之前,它运行得很好。现在我想要的是,当我取下电源时,它应该在延迟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();