zoukankan      html  css  js  c++  java
  • 电池信息 显示

    引用:http://blog.csdn.net/hualangdao/article/details/6212001

    广播接收器是一种专门用来接收广播通知信息的,并作出相应的处理的组件。比如通知电量过低,拍照,发短信,来电等

    Broadcast Recevier有两种注册方式:一种是通过AndroidManifest.xml,另一种是通过Context.registerReceiver()进行注册。

    广播接收器只有一个回调方法
    void onReceive(Context context,Intent intent)

    实例:电池电量显示

    main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    <TextView  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="Battery Level:"
        android:id="@+id/tvBatteryLevel"
        />
    </LinearLayout>

    BatterycastReceiver.java

    package org.loulijun.battery;

    import android.app.Activity;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.os.Bundle;
    import android.widget.TextView;

    public class BatteryInfoReceiver extends Activity {
        /** Called when the activity is first created. */
     private TextView tvBatteryLevel;
     private BroadcastReceiver mBatteryInfoReceiver=new BroadcastReceiver()
     {

      @Override
      public void onReceive(Context context, Intent intent) {
       // TODO Auto-generated method stub
       String action=intent.getAction();
       if(Intent.ACTION_BATTERY_CHANGED.equals(action))
       {
        int level=intent.getIntExtra("level",0);
        int scale=intent.getIntExtra("scale",100);
        tvBatteryLevel.setText("Battery Level:"+String.valueOf(level*100/scale)+"%");
       }
      }
      
     };
     
     
        @Override
     protected void onPause() {
      // TODO Auto-generated method stub
      super.onPause();
      unregisterReceiver(mBatteryInfoReceiver);
     }


     @Override
     protected void onResume() {
      // TODO Auto-generated method stub
      super.onResume();
      registerReceiver(mBatteryInfoReceiver,new IntentFilter(
        Intent.ACTION_BATTERY_CHANGED));
     }


     @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            tvBatteryLevel=(TextView)findViewById(R.id.tvBatteryLevel);
        }
    }

    首先,在方法onCreate(Bundle savedInstanceState)中,通过R.java文件索引获得TextView实例tvBatteryLevel,用来展示电量信息。然后再方法onResume()中注册一个广播接收器mBatteryInfoReceiver,该接收器是我们自定义的一个广播接收器BroadcastReceiver。这样,当BatteryInfoReceiver这个Activity处于前台时,就会开始监听系统电池电量状态的改变,注意,实在方法registerReceiver()中直接传递一个IntentFilter对象,而不是在manifest文件中配置。mBatteryInfoReceiver收到广播消息时,调用onReceive()方法进行处理:首先解析收的的Intent对象,解析并判断其行动,然后获得ACTION_BATTERY_CHANGED这个Intent对象的“level”和"scale"值,最后把结果显示在UI上,在方法onPause()中注销广播监听器,这样当BatteryInfoReceiver这个Activity不处于前台时,用户将不再看到电池信息,程序运行结果如下

    人

  • 相关阅读:
    【转】依赖注入那些事儿
    【转】Visual Studio單元測試小應用-測執行時間
    【转】 代码设计敏捷开发三部曲
    【转】 c#中两个DateTimePicker,一个时间设置为0:0:0,另一个设置为23:59:59
    【转】 C#获取当前程序运行路径的方法集合
    CSVHelper读出乱码 解决方案
    CvsHelper 使用指南
    【转】 C# ListView实例:文件图标显示
    【转】C# winform 加载网页 模拟键盘输入自动接入访问网络
    基于MHA的MySQL高可用
  • 原文地址:https://www.cnblogs.com/sode/p/2888392.html
Copyright © 2011-2022 走看看