バッテリーがある程度のレベルに達するとwifiが自動的にシャットダウンするアプリを作成しています。画面がオンのときはアプリが正常に動作しますが、画面がロックされているときは何もしません。
私のアプリは、アクティビティを開始し、ユーザーがボタンをクリックしてサービスを開始すると、サービスはブロードキャストレシーバーを登録して現在のバッテリーレベルを取得し、ブロードキャストレシーバーはバッテリーレベルが制限に達したかどうかを確認し、完了したwifiをシャットダウンするかどうかを決定します
画面がオンかオフかを調べるために isScreenOn() を使用しようとしましたが、これも機能しません
ここに私のコードがあります
public class BatteryMonitor extends Service {
/*declear variables*/
private BroadcastReceiver batteryReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent){
/* get battery level*/
//Check is screen is on or not
boolean isScreenOn = powermanager.isScreenOn();
//set as 90 just for test function//
if(batteryLevel<=90){
if(isScreenOn==true){
if(isCharging == true && wifimanager.isWifiEnabled()){
//not do anything
}else if(isCharging == false && wifimanager.isWifiEnabled()){
wifimanager.setWifiEnabled(false);
}
}else{
if(isCharging == true && wifimanager.isWifiEnabled()){
//not do anything
}else if(isCharging == false && wifimanager.isWifiEnabled()){
wifimanager.setWifiEnabled(false);
}
}
}
}
};
public void onStart(Intent intent, int startId) {
wifimanager = (WifiManager)this.getSystemService(Context.WIFI_SERVICE);
powermanager = (PowerManager) getSystemService(Context.POWER_SERVICE);
registerReceiver(batteryReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
};
@Override
public IBinder onBind(Intent i) {
// TODO Auto-generated method stub
return null;
}
}