首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确定特定的充电器输入

确定特定的充电器输入
EN

Stack Overflow用户
提问于 2013-11-08 21:10:25
回答 3查看 1.4K关注 0票数 6

我目前正试图做出一种可靠的方式来确定一个特定的充电器类型,在我的情况下,一个音乐码头,如。问题是,不幸的是,这个码头在停靠时不会发送一个dock事件。

因为我正在制作一个应用程序,它依赖于能够确定设备何时被停靠或卸载。因此,我需要一种过滤和分离这些事件的方法:

  • 设备通过USB连接器充电(没有单独的充电器)
  • 设备是而不是连接到计算机
  • 用某种方法将慢速充电坞与标准充电器分开

我已经注意到,我的设备(LG擎天柱4x HD)设法处理不同的反应对每一个这些行动。当它连接到标准充电器时,它不会发出通知消息,当它连接到计算机时,它会告诉我USB模式已经激活,当它连接到码头时,它会给我一个缓慢的充电器警告。

我需要一个系统,有同样的能力分开这些行动,并对他们作出反应。到目前为止,我只做了一个简单的BroadcastReceiver,如果设备是连接或未连接到充电器反应。我还设法使用在文档中找到的代码监视充电状态。

有任何方法来确定这个特定的充电器输入吗?

EN

回答 3

Stack Overflow用户

发布于 2013-11-21 07:57:04

每当设备停靠或取消停靠时,都会广播ACTION_DOCK_EVENT操作。要监视设备的停靠状态中的更改,只需在应用程序清单中注册一个广播接收器,如下所示:

代码语言:javascript
复制
<action android:name="android.intent.action.ACTION_DOCK_EVENT"/>

如果一个设备被停靠,它可以停靠在四种不同类型的坞中的任何一种:

  • 小汽车
  • 课桌
  • 低端(模拟)桌
  • 高端(数字)办公桌

在ACTION_DOCK_EVENT操作的粘性广播中包含了停靠状态的详细信息。因为它很粘,所以不需要注册BroadcastReceiver。您只需调用registerReceiver()作为广播接收器传入null,如下一个片段所示。

代码语言:javascript
复制
IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
Intent dockStatus = context.registerReceiver(null, ifilter);

您可以从额外的EXTRA_DOCK_STATE中提取当前的停靠状态:

代码语言:javascript
复制
int dockState = battery.getIntExtra(EXTRA_DOCK_STATE, -1);
boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;

您可以通过以下方法找到码头状态

代码语言:javascript
复制
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;

编辑:

如果您的应用程序仍未接收到广播,请尝试使用此代码发送手动广播并检查代码:

代码语言:javascript
复制
adb shell am broadcast -a android.intent.action.POWER_CONNECTED -n com.jm.monitoringbatterydemo/.PowerConnectionReceiver

更改广播和接收器的名称。

票数 4
EN

Stack Overflow用户

发布于 2013-11-27 08:46:06

要解决这个问题,你可以做的就是看看手机上剩下的电量的百分比。然后,您可以确定该值正在上升,这意味着它已停靠。唯一的问题可能是,如果你有时充电在一个常规的充电器,而不是一个码头,你仍然会让它的反应,就像它是一个。

更多关于读取电池级别等的信息:http://developer.android.com/training/monitoring-device-state/battery-monitoring.html

票数 0
EN

Stack Overflow用户

发布于 2013-11-27 13:10:32

它是否有助于识别电源使用

代码语言:javascript
复制
  int   BATTERY_PLUGGED_AC          Power source is an AC charger.
  int   BATTERY_PLUGGED_USB         Power source is a USB port.
  int   BATTERY_PLUGGED_WIRELESS    Power source is wireless.

来自BatteryManager

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19868550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档