2012-07-13 31 views
2

我正在写一个应用程序,当电池达到一定水平时,wifi会自动关闭完成,我的应用程序在屏幕开启时工作正常,但屏幕锁定时它没有做任何事情。Android执行功能,同时锁定屏幕

我的应用就像开始活动一样,用户点击按钮启动服务,服务会注册broadcastreceiveer以获取当前的电池电量,braodcastreceiver会查看电池电量是否达到极限并决定关闭完成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; 
} 

} 

回答

3

创建接收一个单独的类,注册到Mani为电池更换行动提供档案文件。然后即使在屏幕关闭的情况下,它也可以工作

Broadcast Receiver 阅读此链接。

你需要sendBroadcast当你想将消息发送给接收器,请确保您添加适当的操作字符串,在清单的接收器,

+0

谢谢,我会进行这项工作。但你有什么样的例子可以帮助我吗?我不知道如何使服务电话从其他类的广播接收器 – 2012-07-13 06:29:43

+0

我更新了我的答案,再次检查,标记接受/ + 1,如果它帮助你 – AAnkit 2012-07-13 06:45:25