连接充电器时运行后台代码

2024-04-12

每次充电器连接到设备并且应用程序关闭时,我都尝试运行一些代码。我发现的唯一的事情是安排一个只能在连接充电器时运行的作业,但问题是代码只会运行一次(除非我重新安排它)并且它只会在设置时运行次。我希望代码在每次连接充电器时立即运行,就像广播监听器一样,但在后台运行。

这可能吗?或者您还有其他建议吗?

提前致谢! :)

编辑: 如果您运行 API 级别 26+,您似乎无法再收听此类广播ref https://developer.android.com/guide/components/broadcast-exceptions.html


每当设备连接或断开电源时,BatteryManager 就会广播一个操作。即使您的应用程序未运行,接收这些事件也很重要 - 特别是因为这些事件会影响您启动应用程序以启动后台更新的频率 - 因此您应该在清单中注册一个 BroadcastReceiver 以通过以下方式侦听这两个事件在意图过滤器中定义 ACTION_POWER_CONNECTED 和 ACTION_POWER_DISCONNECTED。

<receiver android:name=".PowerConnectionReceiver">
  <intent-filter>
    <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
    <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
  </intent-filter>
</receiver>

在关联的 BroadcastReceiver 实现中,您可以提取当前的充电状态和方法,如上一步所述。

public class PowerConnectionReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
        boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
                            status == BatteryManager.BATTERY_STATUS_FULL;

        int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
        boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
        boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
    }
}

Ref: https://developer.android.com/training/monitoring-device-state/battery-monitoring https://developer.android.com/training/monitoring-device-state/battery-monitoring

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

连接充电器时运行后台代码 的相关文章

  • 带有垂直选项卡的 Android 布局 - 设计类似于 hello 短信应用程序

    Can somebody please help me out in designing vertical tabs like in the given pic taken from hello sms app 我不要求提供代码片段 所以请
  • 如何在从另一个活动调用一个活动时延迟一些?

    我有一个应用程序 其中我正在接收包含他的位置的短信 收到短信后 它会调用另一个活动来启动并将该位置传递给该活动以将其绘制在地图上 在调用第二个活动之前 它会显示一个类似于通知的吐司在屏幕上 但由于调用第二个活动 吐司没有出现 我的问题是我们
  • 在 docker 容器内创建 android 模拟器时出现“sh: 1: file: not found”

    我正在尝试在 docker 容器内创建一个 android 模拟器 但遇到了一些问题 SDK 更新和 AVD 创建成功 我尝试创建模拟器 出现以下错误 emulator avd test 22 no skin no audio no win
  • 如何调试使用maven构建的android应用程序

    我目前正在尝试从 Eclipse 调试我的设备上的 Android 应用程序 设备已添加 我可以在控制台和 Eclipse 中看到它 控制台 Windows adb devices List of devices attached 0019
  • 如何在 Android 中启用/禁用日志级别?

    例如 我有很多日志语句需要调试 Log v TAG Message here Log w TAG WARNING HERE 在设备电话上部署此应用程序时 我想关闭详细日志记录 我可以在其中启用 禁用日志记录 The Android 文档对日
  • 我什么时候应该使用 CGM 设备组和主题?

    我正在考虑将 Google Cloud Messaging 合并到我的应用程序中 我想向与用户关联的所有设备发送消息 乍一看 它看起来像 GCM 的设备群组消息传递 https developers google com cloud mes
  • PinnedHeader Google 加上 GridView?

    背景 Google google 应用程序可以很好地查看 亮点 类别中的图像 对于该屏幕上的每个部分 他们制作了一个标题 其中包含可单击的文本和一个用于选择该部分的所有照片的按钮 对于每个部分 他们还以网格状方式显示照片 它是这样的 这是另
  • 使用 Android Exoplayer 调整 Dash 流音量

    我正在尝试设置一个搜索栏来控制 exoplayer 流式破折号实例的级别 我正在使用的设置是演示项目的修改版本 并且无法确定我应该尝试影响搜索栏输出的哪个元素 即如何正确使用 MSG SET VOLUME 等 任何意见将不胜感激 我正在寻找
  • ArgumentMatchers.any 不得为 null

    我正在尝试测试ViewModel以确保实时数据得到正确更新 然而使用时ArgumentMatchers any 它失败了IllegalStateException saying ArgumentMatchers any mViewModel
  • Android 反向地理编码不适用于华为设备

    我正在尝试通过这段代码反转地理编码纬度 经度 Geocoder geocoder new Geocoder context Locale ENGLISH try List
  • 如何从我的android联系人列表中的人名获取电话号码

    我想从我的联系人列表中的人名中获取他的电话号码 我已经使用了下面的代码 但它不能正常工作 告诉我我哪里错了 try cursor company getContentResolver query ContactsContract Data
  • 当我转到下一个活动并再次返回时,如何恢复活动的值?

    我希望当用户返回我的第一个活动时恢复编辑文本的值 请帮帮我 提前致谢 这是我的第一个活动代码 用于在编辑文本中获取用户值 public class IntentActivity extends Activity EditText ed1 e
  • android 销毁时是否有任何视图回调?

    我有一个自定义视图组件 我在片段或活动中使用了它 我想知道当它从片段 活动中销毁时是否有回调 View 没有回调 除了finalize 但我不认为这就是你所要求的 查看有onDetachedFromWindow 当它从屏幕上移除时 但这与它
  • 免费和付费版本 Android 应用程序的最佳方法?

    我开发了一个 Android 应用程序 我希望它可以作为免费版本和付费版本提供 最好的方法是什么 我可以想到三种解决方案 将项目分成两个分支并维护它们 创建一个库项目并有两个附加项目 一个 免费 版本和一个 付费 版本 使用应用内结算 问
  • 如何在具有多种字体大小的 TextView 中调整行高?

    我有一个包含 Spannable 字符串的 TextView 该字符串包含一堆文本 其中第一个单词的字体大小是字符串其余部分的两倍 问题在于 由于第一个字的大小增加 第一行和第二行之间的行间距比后续行之间的行间距大得多 http img s
  • 如何使用特定选项卡启动活动?

    我已经浏览了许多示例 问题和教程 但我从未见过使用特定选项卡启动活动 启动新意图 我知道可以使用 setCurrentTab切换到选项卡 但这只能从父活动选项卡内部完成 从另一个活动启动一个活动中包含的特定选项卡怎么样 是否可以 如果是这样
  • logcat 信息出现在 Android Studio 的“运行”选项卡中

    我的 android studio 运行选项卡很简单 然后它变得更难并给我更多信息 例如 logcat 中的信息 如何禁用或删除第二张图片中出现的更多信息并返回到第一张图片中的第一个外观 我只需要正在运行的 flutter 应用程序的日志输
  • Android:禁用 1.5 纸杯蛋糕动画过渡

    长话短说 如何禁用活动之间的屏幕转换 如果您愿意的话 我们实现了自己的选项卡处理程序 现在它正在选项卡之间进行转换 这看起来很俗气 谢谢 Chris See android content Intent FLAG ACTIVITY NO A
  • Android:适合SystemWindows和换行符干扰bottomSheets

    我发现如果父布局包含android fitsSystemWindows true 当发生与视图相关的操作时 它会干扰我的 BottomSheets 定位 具体来说 我遇到的是 文本视图中的换行符将触发底页偏移系统 通知栏的高度 换行符 fi
  • Android Studio-公司域名

    在Android Studio中 当您创建新项目时 系统会提示您输入域名 我已经知道您可以制作一个 但是如果您想在 Google Play 商店上分发您的应用程序怎么办 即使我永远不会使用我的域 我是否需要购买一个网络域来分发我的应用程序

随机推荐