android之检测手机电池

效果图:

activity代码:

[java:nogutter] view plain copy print ?
  1. package cn.com.chenzheng_java;
  2. import android.app.Activity;
  3. import android.app.Dialog;
  4. import android.content.BroadcastReceiver;
  5. import android.content.Context;
  6. import android.content.Intent;
  7. import android.content.IntentFilter;
  8. import android.os.Bundle;
  9. import android.view.LayoutInflater;
  10. import android.view.View;
  11. import android.view.ViewGroup;
  12. import android.view.Window;
  13. import android.view.WindowManager;
  14. import android.view.View.OnClickListener;
  15. import android.view.ViewGroup.LayoutParams;
  16. import android.widget.Button;
  17. import android.widget.TextView;
  18. import android.widget.Toast;
  19. /***
  20. * @description 查看手机电池电量,这里要注意监听Intent.ACTION_BATTERY_CHANGED的广播接收者,只能
  21. * 在程序中显示的注册,不能再androiManifest.xml中进行静态的注册
  22. * @author chenzheng_java
  23. * @since 2011/03/16
  24. *
  25. */
  26. public class BatteryActivity extends Activity implements OnClickListener{
  27. // 当系统处于充电状态或者电量发生改变时会广播该action
  28. private static final String ACTION_NAME = Intent.ACTION_BATTERY_CHANGED;
  29. @Override
  30. public void onCreate(Bundle savedInstanceState) {
  31. super.onCreate(savedInstanceState);
  32. setContentView(R.layout.battery);
  33. Button button = (Button) findViewById(R.id.button1);
  34. // 注意哦,我们这里的activity实现了View.OnClickListener接口
  35. button.setOnClickListener(this);
  36. }
  37. // 声明广播接收者
  38. BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
  39. @Override
  40. public void onReceive(Context context, Intent intent) {
  41. String actionName = intent.getAction();
  42. if(actionName.equals(ACTION_NAME)){
  43. int level = intent.getIntExtra("level", 0);
  44. int scale = intent.getIntExtra("scale", 100);
  45. // Toast.makeText(BatteryActivity.this, "level="+level+" scale="+scale, Toast.LENGTH_LONG).show();
  46. final Dialog dialog = new Dialog(BatteryActivity.this);
  47. dialog.setTitle("电量显示");
  48. // 加载xml布局文件为View对象
  49. LayoutInflater flater = LayoutInflater.from(BatteryActivity.this);
  50. View view = flater.inflate(R.layout.battery2, null);
  51. dialog.setContentView(view,new ViewGroup.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
  52. /**
  53. * 获取该dialog显示的父窗口,然后设置当dialog显示时,窗口内的其他部分设置为模糊
  54. * WindowManager.LayoutParams.FLAG_BLUR_BEHIND告诉我们,无论什么对象显示于前段,
  55. * 都会显示在window的最上层
  56. */
  57. Window window = dialog.getWindow();
  58. window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND, WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
  59. /**
  60. * 这里注意findViewById()方法,默认的会去加载main.xml中的组件。如果你想加载x.xml中的id为
  61. * a的组件,那么应该在前面加上setContentView这个布局文件的对象,如这里的dialog
  62. */
  63. TextView textView = (TextView)dialog.findViewById(R.id.textView_message);
  64. textView.setText("目前的手机电量为"+level*100/scale+"%");
  65. Button button2 = (Button) dialog.findViewById(R.id.button_back);
  66. button2.setOnClickListener(new OnClickListener() {
  67. @Override
  68. public void onClick(View v) {
  69. dialog.dismiss();
  70. // 注销广播接收者
  71. unregisterReceiver(broadcastReceiver);
  72. }
  73. });
  74. dialog.show();
  75. }
  76. }
  77. };
  78. @Override
  79. public void onClick(View v) {
  80. IntentFilter filter = new IntentFilter(ACTION_NAME);
  81. registerReceiver(broadcastReceiver, filter);
  82. }
  83. }

battery2.xml

battery.xml

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值