Android电源管理专题之获取和监测Dock状态和类型

(2013-04-07 16:36:00)

标签:

android

电源管理

dock

it

Android 设备可以接在不同类型的 Dock 底座中,其中包括车载的,家用的,以及数字的和模拟的。许多 Dock

基座都能为接在其上面的设备供电,所以,“dock-state”(Dock状态)也通常是接入设备的充电状态。

Dock 状态的变化如何影响您应用程序的服务更新速度取决于您应用程序的设计。假如是一个获取体育赛况的应用程序,那么在 “desktop

dock” 状态时,可以提高其数据的更新频率,而当在 “car docked”

状态时,可以完全禁用数据的更新。相反,假如该应用程序是用来获取当前交通路况的,那么就应当在“car docked”

状态时选择最大限度提高数据的更新速度。

系统会广播 “sticky” 类型的 Dock 状态通知 Intent,您可以通过该 Intent 来查询设备当前是否在 Dock

状态,以及具体的 Dock 类型。

获得当前的 Dock 状态

Dock 状态的详细信息可以从 Action 为 ACTION_DOCK_EVENT 中的广播数据中取得,因为广播类型是

“sticky”的,您不需要自己定义 BroadcastReceiver ,只需要调用 registerReceiver()

方法,并且传入空的参数null就可以了。

该方法的返回值 intent 就包括了当前 Dock 状态的详细信息。

示例代码:

IntentFilter ifilter = new

IntentFilter(Intent.ACTION_DOCK_EVENT);

Intent dockStatus = context.registerReceiver(null, ifilter);

您可以通过键值 EXTRA_DOCK_STATE 来取得当前的 Dock 状态。

示例代码:

int dockState = battery.getIntExtra(EXTRA_DOCK_STATE, -1);

boolean isDocked = dockState !=

Intent.EXTRA_DOCK_STATE_UNDOCKED;

获得当前的Dock 类型

如果设备当前在Dock状态,那么目前支持的Dock类型如下:

Car (车载)

Desk(家用,桌面)

Low-End (Analog) Desk (低端模拟)

High-End (Digital) Desk (高端数字)

请注意后面的两种Dock类型只支持Android API Level 11以上,所以较好的方法是只需要区分大的 dock

类型,而不用去具体关注是数字的,还是模拟的。

示例代码:

boolean isCar = dockState == EXTRA_DOCK_STATE_CAR;

boolean isDesk = dockState == EXTRA_DOCK_STATE_DESK ||

dockState == EXTRA_DOCK_STATE_LE_DESK ||

dockState == EXTRA_DOCK_STATE_HE_DESK;

监测 Dock 状态和类型的变更

每当 Andoid 设备在 Dock 和非 Dock 状态之间切换的时候(即设备接入底座和从底座拔出),系统就会广播 Action 为

ACTION_DOCK_EVENT

的广播。要想在应用程序中捕捉这种状态的变化,您只需要注册一个自定义的广播接收器Receiver就可以了。

示例代码:

您可以在Receiver的代码实现中获取当前Dock的详细信息,具体方法参照前面的步骤。

分享:

喜欢

0

赠金笔

加载中,请稍候......

评论加载中,请稍候...

发评论

登录名: 密码: 找回密码 注册记住登录状态

昵   称:

评论并转载此博文

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

android 布局dock,Android电源管理专题之获取和监测Dock状态和类型相关推荐

  1. xamarin android 布局,Xamarin.Android 上中下布局

    xml代码: xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_par ...

  2. android 布局排排,[android]如何使LinearLayout布局从右向左水平排列,而不是从左向右排列...

    方法1:利用android:layout_weight android:layout_width="match_parent" android:layout_height=&quo ...

  3. android 布局回弹,Android仿IOS回弹效果 支持任何控件

    本文实例为大家分享了Android仿IOS回弹效果的具体代码,供大家参考,具体内容如下 效果图: 导入依赖: dependencies { // ... compile 'me.everything: ...

  4. android+布局分块,android的List View的Item布局问题

    线性布局,你的第一个textview已经设成占满整个空间了,你的中.右布局当然出不来了,姑且认为你左中右三块平均分配水平空间,可以这么写 android:layout_width="matc ...

  5. android布局翻译,android – 使用翻译动画将视图从一个布局转换为另一个布局

    我是 Android动画的新手,我的要求是在点击该视图时将视图从一个布局转换为单个xml文件中的布局. 场景: 假设我单击一个按钮,它出现在xml文件中标题的顶部,它应该向下移动/转换(它应该会产生一 ...

  6. Android布局中 android:layout_gravity=bottom为何不起作用?

    在android布局时我们有时会需要将位于LinearLayout布局中的控件放在布局底部,或者是同时想将几个控件底部对齐,此时我们自然会想到使用 android:layout_gravity=&qu ...

  7. android+布局倾斜,android – 如何在Eclipse图形布局视图中使斜...

    在Eclipse中工作,我试图将一些斜体文本放到布局上.问题是,当我设置时 android:textStyle ="italic",文字消失. (内容的高度变为0,整个TextVi ...

  8. 名片夹android布局代码,Android自定义布局实现仿qq侧滑部分代码

    自定义布局实现仿qq侧滑部分Android代码,供大家参考,具体内容如下 实现说明: 通过自定义布局实现: SlidingLayout继承于 HorizontalScrollView /** * Cr ...

  9. android布局错,Android Studio布局错误

    嘿,我真的需要你的帮助 . 我的问题是Android Studio不会在模拟器或物理设备中正确显示布局 . 每当我放置一个textView,按钮等,我想将它居中(水平,垂直或两者),然后我启动模拟器它 ...

最新文章

  1. java面试题2019 答案
  2. 算法设计:UNION-FIND算法实现
  3. Spring Boot简介
  4. win7自带远程应用
  5. 云计算设计模式(四)——消费者的竞争模式
  6. 【Python CheckiO 题解】Right to Left
  7. 年薪40W+还招不到人!人工智能到底有多火?(附人工智能+Python 自学视频资料)...
  8. Android studio 插件安装
  9. Spring 的下载、安装和使用
  10. 访问Cache和主存的效率计算问题
  11. 一个程序员成功的六个阶段
  12. 利用云服务器搭配宝塔面板解禁网易云
  13. 物联网方面的竞赛有那些?
  14. 剑指Offe 50:数组中重复的数字
  15. Linux I2C驱动
  16. IVR业务基础知识和制作技巧(转)
  17. 洋哥线下见面会,小姐姐都问了什么?
  18. 计算机教室防辐射方案,办公室电脑族如何防辐射 内调外养轻松应对
  19. 计算机联锁控制系统的软件应具备信号操作功能,车站信号计算机联锁控制系统—软件PPT课件...
  20. 虚电路服务和无连接的数据包服务

热门文章

  1. linux进程tty,linux下kill tty
  2. vue elementui + Java实现获取本地文件夹路径,绝对路径。(Ctrl C+V 即用)
  3. stm32之低功耗总结帖:文章分享、官方文档、个人经验
  4. 俄罗斯方块c 语言课程设计流程图,C语言课程设计俄罗斯方块源代码详细分解.doc...
  5. random库 随机数函数
  6. Windows下虚拟机的自动化管理
  7. 2022年浙江执业护士资格考试试题及答案
  8. Lily HBase Indexer使用整理
  9. 图像增强算法的安卓移植
  10. 深圳农业基因组所汪鸿儒课题组(演化遗传学研究)诚招博后、副研