发送通知

这次邮件我们将会讨论怎么获取电量状态在安卓设备上,为了完成这个目标,我们将会使用到广播。

What is BroadcastReceiver?
A broadcast receiver is an Android component which allows you to register for system or application events. All registered receivers for an event are notified by the Android application.

The system itself broadcast event all time, as example when system gets booted or an SMS arrived, etc.

Application description
Application display of battery level and update this value when battery level changed.

在Android Studio 中新建一个工程

在String.xml中添加一个常量

  1. <string name="battery_level">Battery level:</string>
    

      

更新布局文件,在这里我叫 “activity_main.xml”

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"android:layout_height="match_parent"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"android:paddingBottom="@dimen/activity_vertical_margin"android:orientation="vertical"tools:context=".MainActivity"><TextViewandroid:id="@+id/textView"android:text="@string/battery_level"android:layout_width="wrap_content"android:layout_height="wrap_content" /><ProgressBarandroid:id="@+id/progressBar"style="?android:attr/progressBarStyleHorizontal"android:layout_marginTop="8dp"android:layout_marginLeft="12dp"android:layout_marginRight="12dp"android:max="100"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@+id/textView"android:layout_toRightOf="@+id/textView"android:layout_toEndOf="@+id/textView" /></LinearLayout>

创建一个内部类为我们的广播实现

private class BatteryBroadcastReceiver extends BroadcastReceiver {private final static String BATTERY_LEVEL = "level";@Overridepublic void onReceive(Context context, Intent intent) {int level = intent.getIntExtra(BATTERY_LEVEL, 0);mBatteryLevelText.setText(getString(R.string.battery_level) + " " + level);mBatteryLevelProgress.setProgress(level);}
}

更新Activity的代码如下:

public class MainActivity extends Activity {private TextView mBatteryLevelText;private ProgressBar mBatteryLevelProgress;private BroadcastReceiver mReceiver;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mBatteryLevelText = (TextView) findViewById(R.id.textView);mBatteryLevelProgress = (ProgressBar) findViewById(R.id.progressBar);mReceiver = new BatteryBroadcastReceiver();registerReceiver(mReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));}@Overrideprotected void onStop() {unregisterReceiver(mReceiver);super.onStop();}private class BatteryBroadcastReceiver extends BroadcastReceiver {private final static String BATTERY_LEVEL = "level";@Overridepublic void onReceive(Context context, Intent intent) {int level = intent.getIntExtra(BATTERY_LEVEL, 0);mBatteryLevelText.setText(getString(R.string.battery_level) + " " + level);mBatteryLevelProgress.setProgress(level);}}
}

我们必须反注册你的接收者当activity 停止,因为如果不反注册,当你的应用程序关闭时候,进程会一直在后台接受一些信息

注册广播:

We can register receiver in AndroidManifest.xml:<receiver android:name="BatteryBroadcastReceiver" >
<intent-filter>
<action android:name="android.intent.action.BATTERY_CHANGED" />
</intent-filter>
</receiver>

or register our BroadcastReceiver in application
BatteryBroadcastReceiver mReceiver = new BatteryBroadcastReceiver();
registerReceiver(mReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

运行程序
We can change battery level of our emulator use console. We must connect to out AVD Emulator use console / terminal. If we run many emulator, each emulator will have unique port. Port number your emulator you can find in title of emulator window. As example port of my emulator is 5554.
Connect to emulator:

  1. telnet localhost <PORT>

Change battery level of emulator:

  1. power capacity <BATTERY_LEVEL_IN_PERCENT>


Next step is change battery level on emulator.

As you can see TextView and ProgressBar were updated.

from:http://alexzh.com/tutorials/android-battery-status-use-broadcastreceiver/?utm_source=Android+Weekly&utm_campaign=bce41f280c-Android_Weekly_149&utm_medium=email&utm_term=0_4eb677ad19-bce41f280c-337902977

用广播监听安卓设备电量状态相关推荐

  1. Android广播监听usb插拔状态

    注册广播监听usb的挂载状态,过滤 vid 和 pid,以下是源码: class IdUsbManager private constructor() {val pid = 50010val vid ...

  2. dcloud 5+ 监听安卓前后台切换状态 并后台运行程序

    dcloud 5+ 监听安卓前后台切换状态 并后台运行程序 监听安卓前后台切换状态 function monitorRunStatus() {// 部分型号监听"应用从前台切换到后台&quo ...

  3. LoRa模块(内置MCU),亿百特E22-400T30S,广播监听、定点传输、中继组网

    LoRa模块(内置MCU),亿百特E22-400T30S,广播监听.定点传输.中继组网 配置说明 广播监听.定点传输 中继组网 配置说明 工作模式 模式 M1 M0 模式介绍 模式0 传输模式 0 0 ...

  4. Android 监听USB设备插拔事件

    通过注册广播的方式监听USB设备 . 广播Action UsbManager.ACTION_USB_DEVICE_ATTACHED Usb设备插入或者挂载事件通知 UsbManager.ACTION_ ...

  5. 如何无缝监听安卓手机通知栏推送信息以及拒接来电

    作者:咕咚移动技术团队-乔瑟琳 一.监听安卓手机通知栏推送信息 最近在需求中需要实现监听安卓手机通知栏信息的功能,比如实时获取qq.微信.短信消息.一开始评估是件挺简单的事儿,实现 Notificat ...

  6. 移动端监听安卓手机返回键

    [场景] 相信大家用安卓手机使用APP的过程中,会遇到这样的一个场景:按下手机的返回键时,会弹出一个询问框:"是否退出该页面/APP?",然后点击了确认键才真正退出APP.PC端目 ...

  7. android广播监听短信并显示内容

    still直接代码啦- <receiver android:name=".receive"> <intent-filter> <action andr ...

  8. Delphi 监听安卓(Android)手机通知栏信息

    Delphi 监听安卓(Android)手机通知栏信息 因为一些业务需要,我们有时候需要知道手机通知栏显示的信息,然后根据这些信息去处理一些相应的业务逻辑.如:自动监听收到的短信验证码,提取后自动填写 ...

  9. 移动端监听安卓手机返回键 1

    [场景] 相信大家用安卓手机使用APP的过程中,会遇到这样的一个场景:按下手机的返回键时,会弹出一个询问框:"是否退出该页面/APP?",然后点击了确认键才真正退出APP.PC端目 ...

最新文章

  1. OpenCV | ORB特征检测与描述
  2. Linux 题目总结
  3. 需求、需求工程与需求工程师 — 2.需求的来源
  4. 作者:夏虎, 男, 电子科技大学副研究员、 教育大数据研究所所长。
  5. 【Python】密码生成器
  6. 专访车音网创始人沈康麒:语音识别有无数个痛点
  7. 俄罗斯方块C++代码(转载他人代码)
  8. amazeui PHP,amazeui页面分析之登录页面
  9. C/C++常用工具一览
  10. 做什么样的软件才能赚钱? 学什么样的知识才能赚钱? 肖舸老师
  11. 智慧酒店的建议和分析
  12. 和99.9%的人的认知完全相反的富人思维
  13. 【深度学习入门】- 神经网络
  14. 训练集、验证集、测试集的作用和意义
  15. 常用日本语1000句+简单用语
  16. C compiler cannot create executables问题
  17. extern与static
  18. 渗透工具-后渗透-权限维持-Cobalt strike
  19. 【H5】H5与APP对接跳转
  20. 3分钟带你了解分时图的7种基本形态!

热门文章

  1. 人工智能哪些技术在教育领域中得到了应用?
  2. 开课吧Java课堂:线程间是如何实现通信
  3. React Native Modal组件 Android覆盖状态栏
  4. 《团队-科学计算器-项目进度》
  5. andorid gridview 单行横向显示 横向滚动实现
  6. 记一个java和php都能调用的http接口
  7. ti processor sdk linux am335x evm /bin/setup-minicom.sh hacking
  8. 元数据驱动设计 —— 设计一套用于API数据检索的灵活引擎
  9. 如何更有效地从阅读中汲取知识?
  10. java 中的static 用法