2012-07-13 30 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