【问题标题】:Knowing BatteryManager.Battery_Status_Full after receiving ACTION_BATTERY_CHANGED thru BroadcastReceiver通过 BroadcastReceiver 接收 ACTION_BATTERY_CHANGED 后了解 BatteryManager.Battery_Status_Full
【发布时间】:2013-12-09 04:25:03
【问题描述】:

我正在开发一个应用程序,其中,当 Battery_Status_Full 发生(电池已充电 100%)/充电断开时,我需要更新数据库中的时间,以先发生者为准。

我能够获取电池断开事件并根据该事件更新数据库,但是当设备仍在充电并达到 100% 电量时,在服务内部时 - onCreate 我已经使用 IntentFilter(Intent. ACTION_BATTERY_CHANGED) 并尝试每隔 5 分钟触发一次重复事件以检查 100% 电池充电是否完成,我似乎从未收到 100% 事件,因此总是发生断开数据库更新而不是 100% 充电更新。 此外,使用我的 AlarmManager,检查 100% 电池充电的服务只触发一次,而不是重复触发。

请指导。我几乎完成了我的应用程序,但是这个小错误让我发疯了。 谢谢 奥姆卡尔·盖萨斯

---- 更多详情 ---- 我的应用架构如下,

  1. BroadcastReceiver(为 ACTION_POWER_CONNECTED 和 ACTION_POWERDISCONNECTED 注册)。在每种情况下,它都会启动一个单独的服务来处理数据库事务。对于连接的电源,它使用称为 ADD 的额外信息设置 Intent,对于断开连接,它使用更新设置它

  2. 服务启动时,在其 onCreate 中,它通过为 IntentFilter ACTION_BATTERY_CHANGED 传入 null 广播接收器来注册接收器 在 onStartCommand 中,对于 Intent 中的添加标志,将一个新条目保存在 db 中。 在更新标志的情况下-仅当未进行较早的更新数据库条目时,我才继续更新数据库

  3. 我在上述添加/更新逻辑 (If-Else) 下面有一个带有 setRepeating 的 AlarmManager,它通过 getService(serviceclass.class) 启动另一个服务

  4. 我希望在新服务中,当我不断检查电池电量是否达到 100% 时,我会自行更新数据库。

  5. 如果电池从未达到 100% 并且 Battery_Dicsonnected 被触发,那么在上面的更新块内,无论当时的电池电量如何,数据库都会得到更新。

怀疑/担忧 -

  • 但问题是,从警报管理器调用的新服务仅启动/调用一次。
  • 我应该把这个警报管理器放在第一个服务的什么位置?
  • 是否需要为不断检查电池电量是否达到 100% 而创建第二项服务?

请指导。如果需要,我可以很好地发布代码。 谢谢 奥姆卡尔

【问题讨论】:

  • 也许电池永远不会达到充满状态并且充电器决定在此之前停止充电(例如在 99% 时)。您可以在收到ACTION_BATTERY_CHANGED 时检查电池电量,并在电量为 99% 时将电池充满电。对于重复事件,请查看:developer.android.com/reference/android/app/AlarmManager.html
  • 我现在在我的原始查询中添加了更多详细信息。可能这将有助于理解基本问题是什么。我敢肯定,作为一个新手,我一定在某个地方搞砸了,但我不确定在哪里:)
  • "通过传入空broadcastreceiver"表示没有接收器可以接收ACTION_BATTERY_CHANGED?
  • 不是我的意思.. context.getApplicationContext().registerReceiver(this,new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
  • @omkar.ghaisas 你是如何解决问题的?即使我的电池电量为 100%,我的 BatteryManager.BATTERY_STATUS_FULL 总是返回 false

标签: android broadcastreceiver android-service alarmmanager


【解决方案1】:

我终于想通了。我对alarmmanager 的定位是错误的。我修复了这个问题,并删除了不必要的第二次服务,只是为了检查是否达到了 100% 的电池电量。最后一切都按预期工作。 :-) 哇,我的第一个 android 应用程序按预期工作,我感到非常高兴。 感谢所有的帮助。 奥姆卡尔

【讨论】:

  • 我也面临同样的问题。你能帮助电池充满电的触发器吗?就我而言,我总是在移动设备上找到 100%,但它从未触发完全充电事件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多