取得手機電池的剩餘量

來源:互聯網
上載者:User

[java] 
/*
 * 取得手機電池的剩餘量
 * Android API中的BroadcastReceiver(Android.content.BroadcastReceiver)
 * 類有點像Button中的Listener,當Receiver被註冊後,會在後台等待其他程式
 * 的調用,程式將通過註冊BroadcastReceiver時設定的IntentFilter來捕捉系統
 * 發出的Intent.ACTION_BATTERY_CHANGED這個action,再以此取得手機電池的剩
 * 餘量。
 */ 

import 略;
[java] 
public class Ex06_02Activity extends Activity { 
    private int intLevel; 
    private int intScale; 
    private Button mButton01; 
    private AlertDialog d; 
    // 建立BroadcastReceiver 
    private BroadcastReceiver mBatInfoReveiver = new BroadcastReceiver() { 
 
        @Override 
        public void onReceive(Context context, Intent intent) { 
            // TODO Auto-generated method stub 
            String action = intent.getAction(); 
            // 如果捕捉到action是ACRION_BATTERY_CHANGED 
            // 就運行onBatteryInfoReveiver() 
            if (intent.ACTION_BATTERY_CHANGED.equals(action)) { 
                intLevel = intent.getIntExtra("level", 0); 
                intScale = intent.getIntExtra("scale", 100); 
                onBatteryInfoReceiver(intLevel, intScale); 
            } 
        } 
    }; 
 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        mButton01 = (Button) findViewById(R.id.myButton1); 
        mButton01.setOnClickListener(new OnClickListener() { 
 
            @Override 
            public void onClick(View v) { 
                // TODO Auto-generated method stub 
                // 註冊一個BroadcastReceiver,作為訪問電池計量之用 
                registerReceiver(mBatInfoReveiver, new IntentFilter( 
                        Intent.ACTION_BATTERY_CHANGED)); 
            } 
        }); 
    } 
 
    // 攔截到ACTION_BATTRY_CHANGED後要執行的動作 
    private void onBatteryInfoReceiver(int intLevel, int intScale) { 
        // TODO Auto-generated method stub 
        d = new AlertDialog.Builder(Ex06_02Activity.this).create(); 
        d.setTitle(R.string.str_dialog_title); 
        d.setMessage(getResources().getString(R.string.str_dialog_body) 
                + String.valueOf(intLevel * 100 / intScale) + "%"); 
        d.setButton(getResources().getString(R.string.str_button2), 
                new DialogInterface.OnClickListener() { 
 
                    @Override 
                    public void onClick(DialogInterface dialog, int which) { 
                        // TODO Auto-generated method stub 
                        // 取消註冊,並關閉對話方塊 
                        unregisterReceiver(mBatInfoReveiver); 
                        d.dismiss(); 
                    } 
                }); 
        d.show(); 
    }; 

下面我們來看看程式運行後的結果:www.2cto.com


在Android API中有提到,要註冊Intent.ACTION_BATTERY_CHANGED的Receiver只能在程式中以
Context.register Receiver()方法來註冊,而不能直接在AndroidManifest.xml中註冊。
作者:Jasonzhou613

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.