2010-09-09 35 views
1
public class Battery1 extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main);   
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 

     IntentFilter filter = new IntentFilter(); 

     filter.addAction(Intent.ACTION_BATTERY_CHANGED); 
     registerReceiver(mBroadcastReceiver, filter); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 

     unregisterReceiver(mBroadcastReceiver); 
    } 

    private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      String action = intent.getAction(); 
      if (action.equals(Intent.ACTION_BATTERY_CHANGED)) { 
       int status = intent.getIntExtra("status", 0); 
       int health = intent.getIntExtra("health", 0); 
       boolean present = intent.getBooleanExtra("present",false); 
       int level = intent.getIntExtra("level", 0); 
       int scale = intent.getIntExtra("scale", 0); 
       int icon_small = intent.getIntExtra("icon-small", 0); 
       int plugged = intent.getIntExtra("plugged", 0); 
       int voltage = intent.getIntExtra("voltage", 0); 
       int temperature = intent.getIntExtra("temperature",0); 
       String technology = intent.getStringExtra("technology"); 

       String statusString = ""; 

       switch (status) { 
       case BatteryManager.BATTERY_STATUS_UNKNOWN: 
        statusString = "unknown"; 
        break; 
       case BatteryManager.BATTERY_STATUS_CHARGING: 
        statusString = "charging"; 
        break; 
       case BatteryManager.BATTERY_STATUS_DISCHARGING: 
        statusString = "discharging"; 
        break; 
       case BatteryManager.BATTERY_STATUS_NOT_CHARGING: 
        statusString = "not charging"; 
        break; 
       case BatteryManager.BATTERY_STATUS_FULL: 
        statusString = "full"; 
        break; 
       } 

       String healthString = ""; 

       switch (health) { 
       case BatteryManager.BATTERY_HEALTH_UNKNOWN: 
        healthString = "unknown"; 
        break; 
       case BatteryManager.BATTERY_HEALTH_GOOD: 
        healthString = "good"; 
        break; 
       case BatteryManager.BATTERY_HEALTH_OVERHEAT: 
        healthString = "overheat"; 
        break; 
       case BatteryManager.BATTERY_HEALTH_DEAD: 
        healthString = "dead"; 
        break; 
       case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE: 
        healthString = "voltage"; 
        break; 
       case BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE: 
        healthString = "unspecified failure"; 
        break; 
       } 

       String acString = ""; 

       switch (plugged) { 
       case BatteryManager.BATTERY_PLUGGED_AC: 
        acString = "plugged ac"; 
        break; 
       case BatteryManager.BATTERY_PLUGGED_USB: 
        acString = "plugged usb"; 
        break; 
       } 


       Toast.makeText(context, 
          "status  :" + statusString    + 
         ";\nhealth  :" + healthString    + 
         ";\npresent :" + String.valueOf(present) + 
         ";\nlevel  :" + String.valueOf(level)  + 
         "%;\nscale  :" + String.valueOf(scale)  + 
         ";\nicon_small :" + String.valueOf(icon_small) + 
         ";\nplugged :" + acString     + 
         ";\nvoltage :" + String.valueOf(voltage) + 
         ";\ntemperature:" + String.valueOf(temperature)+ 
         ";\ntechnology :" + technology, Toast.LENGTH_LONG).show(); 
      } 
     } 
    }; 
} 

我要運行該代碼在運行background.and採用了Android客戶端和服務器PC之間的socket通信。當我發送請求電池從服務器到客戶端我必須在客戶端顯示電池信息。請任何人指導我在正確的路徑..什麼是額外的代碼,我不得不添加在後面運行它..或任何這個代碼需要更正..?如何在android中的後臺運行任務?

回答

2

看看Android documentation - 你有很多東西都可以重複使用。要創建一個服務,請執行Service課程,要使用它,請在您的活動中使用onCreate()中的bindService

+0

ThanxChris ..我是一個新的嬰兒的android ..可以請你說明一個例子..很多很多的幫助和安全 – 2010-09-09 08:20:24

+0

@Sridhar開始Android 2有一些很好的例子,我不想通過發佈在這裏打破版權;這本書在OReilly Safari上 – 2010-09-09 09:40:32

3

您可以實施延伸Service的課程。服務適用於不需要與用戶交互的長時間運行的任務。請注意,服務也在您的應用程序主線程中運行,導致應用程序在執行IO時掛起,因此您可能需要生成thread

+0

Thanx Kjetil ..我是一個新的嬰兒的android..can你請舉例說明..thanx很多爲你的幫助inandance – 2010-09-09 08:20:06