2010-09-09 3 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-клиентом и сервером ПК. когда когда-либо я посылаю запрос на батарею от сервера к клиенту, я должен отображать информацию о батарее на client.please, чтобы кто-нибудь направил меня по правильному пути. Какой дополнительный код мне нужно добавить для запуска его на заднем плане .. или любой необходима коррекция в этом коде ..?Как запустить задачу в фоновом режиме в android.?

ответ

2

Взгляните на Android documentation - многое из того, что у вас есть, можно использовать повторно. Чтобы создать сервис, который вы реализуете, класс Service, чтобы использовать его, вы используете bindService в onCreate() в своей деятельности.

+0

ThanxChris .. Я новый ребенок для android..can u, пожалуйста, пример .. thanx alot для ur help in andvance –

+0

@Sridhar Начало Android 2 имеет несколько хороших примеров, я не хочу нарушать авторские права, размещая их здесь; книга находится на OReilly Safari –

3

Вы можете реализовать класс, расширяющий Service. Услуга подходит для длительных задач, не требующих взаимодействия с пользователем. Обратите внимание, что служба также запускается в вашем основном потоке приложений, что приводит к зависанию приложения при выполнении ввода-вывода, поэтому вы можете создать номер thread.

+0

Thanx Kjetil .. Я новый ребенок для андроида. Возможно, пожалуйста, проиллюстрируйте примером .. thanx alot для помощи ур в andvance –

Смежные вопросы