2011年4月8日 星期五

BroadcastReceiver物件

BroadcastReceiver物件
有部分資訊,會經由Android系統透過廣播的方式傳送給應用程式或服務。
而BroadcastReceiver就是用來接收這一類訊息的物件

    // 加入filter,選擇要receiver的對象
    IntentFilter filter = new IntentFilter();
    filter.addAction(Intent.ACTION_BATTERY_CHANGED);
    registerReceiver(mBroadcastReceiver, filter);

    // BroadcastReceive(以電池為例)
    private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
                switch (intent.getIntExtra("status", 0)) {
                case BatteryManager.BATTERY_STATUS_UNKNOWN:
                    bat_status = "unknown";
                    break;
                case BatteryManager.BATTERY_STATUS_CHARGING:
                    bat_status = "charge";
                    break;
                case BatteryManager.BATTERY_STATUS_DISCHARGING:
                    bat_status = "discharge";
                    break;
                case BatteryManager.BATTERY_STATUS_NOT_CHARGING:
                    bat_status = "not_charge";
                    break;
                case BatteryManager.BATTERY_STATUS_FULL:
                    bat_status = "full";
                    break;
                }
   
                bat_level = intent.getIntExtra("level", 0);
            }
        }
    };

    // close when leaving
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(mBroadcastReceiver);
    }

沒有留言:

張貼留言