2

我正在编写一个应用程序,当电池电量达到一定水平时,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;
}

}
4

1 回答 1

3

为接收器创建一个单独的类,将其注册到清单文件中以进行电池更换操作。然后即使屏幕关闭它也可以工作。

广播接收器 阅读此链接。

当您想向 Receiver 发送消息时,您需要 sendBroadcast ,确保在 Receiver 的清单中添加了正确的 Action String ,

于 2012-07-13T05:56:05.107 回答