• 电池信息 显示


    引用: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不处于前台时,用户将不再看到电池信息,程序运行结果如下

    人

  • 相关阅读:
    021 顺时针打印矩阵
    020 二叉树的镜像
    019 树的子结构
    018 机器人的运动范围
    017 矩阵中的路径
    022 Jquery总结
    003 css总结
    002 html总结
    016 合并两个排序的链表
    015 反转链表
  • 原文地址:https://www.cnblogs.com/sode/p/2888392.html
Copyright © 2020-2023  润新知