EX06_02.java
上传用户:vip_99
上传日期:2021-03-27
资源大小:61159k
文件大小:3k
源码类别:

android开发

开发平台:

Java

  1. package irdc.ex06_02;
  2. /* import相关class */
  3. import android.app.Activity;
  4. import android.app.Dialog;
  5. import android.content.BroadcastReceiver;
  6. import android.content.Context;
  7. import android.content.Intent;
  8. import android.content.IntentFilter;
  9. import android.os.Bundle;
  10. import android.view.View;
  11. import android.view.Window;
  12. import android.view.WindowManager;
  13. import android.widget.Button;
  14. import android.widget.TextView;
  15. public class EX06_02 extends Activity
  16. {
  17.   /* 变量声明 */
  18.   private int intLevel;
  19.   private int intScale;
  20.   private Button mButton01;
  21.   /* 创建BroadcastReceiver */
  22.   private BroadcastReceiver mBatInfoReceiver=new BroadcastReceiver()
  23.   {
  24.     public void onReceive(Context context, Intent intent)
  25.     {
  26.       String action = intent.getAction();
  27.       /* 如果捕捉到的action是ACTION_BATTERY_CHANGED,
  28.        * 就运行onBatteryInfoReceiver() */
  29.       if (Intent.ACTION_BATTERY_CHANGED.equals(action))
  30.       {
  31.         intLevel = intent.getIntExtra("level", 0);
  32.         intScale = intent.getIntExtra("scale", 100);
  33.         onBatteryInfoReceiver(intLevel,intScale);
  34.       }
  35.     }
  36.   };
  37.   /** Called when the activity is first created. */
  38.   @Override 
  39.   public void onCreate(Bundle savedInstanceState)
  40.   {
  41.     super.onCreate(savedInstanceState);
  42.     /* 载入main.xml Layout */
  43.     setContentView(R.layout.main);
  44.     /* 初始化Button,并设置点击后的动作 */
  45.     mButton01 = (Button)findViewById(R.id.myButton1);
  46.     mButton01.setOnClickListener(new Button.OnClickListener()
  47.     {
  48.       @Override
  49.       public void onClick(View v)
  50.       {
  51.         /* 注册一个系统 BroadcastReceiver,作为访问电池计量之用 */
  52.         registerReceiver
  53.         (
  54.           mBatInfoReceiver,
  55.           new IntentFilter(Intent.ACTION_BATTERY_CHANGED)
  56.         );
  57.       }
  58.     });
  59.   }
  60.   /* 捕捉到ACTION_BATTERY_CHANGED时要运行的method */
  61.   public void onBatteryInfoReceiver(int intLevel, int intScale)
  62.   {
  63.     /* create 跳出的对话窗口 */
  64.     final Dialog d = new Dialog(EX06_02.this);
  65.     d.setTitle(R.string.str_dialog_title);
  66.     d.setContentView(R.layout.mydialog);
  67.     /* 创建一个背景模糊的Window,且将对话窗口放在前景 */
  68.     Window window = d.getWindow();
  69.     window.setFlags
  70.     (
  71.       WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
  72.       WindowManager.LayoutParams.FLAG_BLUR_BEHIND
  73.     );
  74.     /* 将取得的电池计量显示于Dialog中 */
  75.     TextView mTextView02=(TextView)d.findViewById(R.id.myTextView2);
  76.     mTextView02.setText 
  77.     (
  78.       getResources().getText(R.string.str_dialog_body)+ 
  79.       String.valueOf(intLevel * 100 / intScale) + "%" 
  80.     );
  81.     /* 设置返回主画面的按钮 */
  82.     Button mButton02 = (Button)d.findViewById(R.id.myButton2); 
  83.     mButton02.setOnClickListener(new Button.OnClickListener()
  84.     {
  85.       @Override
  86.       public void onClick(View v)
  87.       {
  88.         /* 反注册Receiver,并关闭对话窗口 */
  89.         unregisterReceiver(mBatInfoReceiver);
  90.         d.dismiss(); 
  91.       }
  92.     });
  93.     d.show(); 
  94.   }
  95. }