问题标签 [powermanager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5311 浏览

android - Android PowerManager isInteractive() vs isScreenOn() 错误?

我正在尝试使用以下代码确定屏幕是否打开:

我收到了来自现场的报告,称这正在被记录:

谁能帮我理解这是怎么发生的?isScreenOn() 方法应该对 API 19 有效,而 isInteractive() 应该对 API 20 及更高版本有效。我在这里做错了吗?

0 投票
0 回答
344 浏览

android - 确定 Android 版本 15 上的屏幕是打开还是关闭 - 存在

我正在编写一个 API 级别为 15 及以上的 Android 设备将使用的 SDK。我目前的目标是 sdk 版本 22。我想要完成的是确定屏幕是打开还是关闭。有时我会在应用程序处于前台或后台时执行此操作,有时我会在应用程序关闭时使用警报执行此操作。我想要做的是询问框架屏幕是打开还是关闭,但对于 <= 19 的 android 版本来说,这似乎是不可能的。

看起来 sdk 版本 19 允许设备使用 PowerManager.isScreenOn() 来确定屏幕的状态,但是当版本 20 出现时,该方法已被弃用,现在您可以调用 PowerManager.isInteractive() 但这仅适用于设备运行 API 20 及更高版本。如果您尝试使用运行 API 19 或更低版本的设备调用 isScreenOn(),则该调用实际上只是包装了 isInteractive(),您最终会得到一个在日志中找不到的方法,并且实际上并没有得到您想要的数据。

因此,如果我总是想知道设备 <= 19 的屏幕当前状态,一种解决方法是启动一个基本上总是运行的后台服务,并注册一个寻找 ACTION_SCREEN_ON 和 ACTION_SCREEN_OFF 意图的广播接收器. 这显然是不可取的,因为那时我必须有一个不推荐的始终在线服务。

我想另一种解决方法是在我构建时再次编译 sdk 19,这将使 isScreenOn() 调用可用(并使 isInteractive() 调用不可用)。这可能是一种可能性,但似乎是一个糟糕的解决方法,因为我基本上会被困在这个 sdk 级别,直到框架向后移植这个功能或者 sdks 15 - 19 被足够少的用户使用,不再支持它们。

我对情况的评估是否正确?

任何人都可以评论提出的两种解决方法或建议替代方案吗?

0 投票
0 回答
44 浏览

android - 获得一个“网络”锁,在使用时锁定 wifi,但在使用 3G 时不锁定?

目前我的代码中有这个:

但是我的应用程序使用“任何”类型的网络。当没有 Wifi 连接时,它会自动使用 3G 数据。有没有办法以某种方式优化此代码,使其仅在实际使用时锁定 WiFi?我能想到的唯一方法是将上面的代码更改为:

并创建一些 NetworkStateReceiver 来监听 WifiManager.NETWORK_STATE_CHANGED_ACTION 和/或 ConnectivityManager.CONNECTIVITY_ACTION 广播并以某种方式获取/释放锁(并且可能将锁保存到我的应用程序的静态成员?)

有推荐的方法吗?

0 投票
0 回答
128 浏览

android - x分钟后如何通过代码重新启动Android手机

我想在 30 小时后重新启动手机。有一个api可以关闭手机,但是有一个api可以重启手机吗?使用android.os.PowerManager, function reboot(String reason),我想我们可以立即重启手机,但是如何在 30 小时后重启手机。

0 投票
1 回答
74 浏览

java - 当有一定数量的密码尝试失败时让安卓手机重启的语言

当出现一定数量的屏幕密码失败时,我试图让 Android 手机(LP 5.1.1)重新启动。这是我在 Keyguard 中的语言:

我得到一个编译错误:

错误:类 Context 中的方法 getSystemService 不能应用于给定类型;final PowerManager powerManager = mContext.getSystemService(PowerManager.class); ^ 必需:字符串

发现:类

原因:实际参数类不能转换为

字符串按方法调用转换

有任何想法吗?提前致谢

0 投票
3 回答
537 浏览

android - Android isScreenOn Nullpointer异常

我使用此代码在 Android 4.4.2 上保持屏幕开启。

该代码确实有效,但一段时间后应用程序崩溃(可能在 24 小时内发生一次)

有解决方案或解决方法吗?这与硬件/软件有关吗?

我发现的唯一有用的线程是: https ://code.google.com/p/android/issues/detail?id=43008

0 投票
4 回答
47682 浏览

android - 检查是否为应用启用了电池优化

Android 6 和 7 有一些电源优化(打盹模式),在不使用设备时会限制应用网络。

用户可以在电池设置中禁用任何应用程序的优化模式:

安卓设置截图

是否可以检查是否为我的应用启用了优化?我需要要求用户禁用优化以获得更好的应用程序功能,但我不知道如何以编程方式检查它。

0 投票
1 回答
691 浏览

android - Android - 清除应用程序数据并重启设备

我正在用cordova 编写一个Android 应用程序。此应用程序仅安装在专用的 Android 5.1.1 设备上。其中,我具有清除所有应用程序数据的功能。我在cordova-plugin中实现了这个功能:

在删除所有应用程序数据完成后,我想重新启动设备。这是我的重启功能:

重启功能本身正在工作。但是我有一个问题,当我调用它时它没有达到这个功能,((ActivityManager)cordova.getActivity().getApplicationContext().getSystemService(ACTIVITY_SERVICE)).clearApplicationUserData();因为应用程序立即强制关闭。

我该如何解决这个问题?如何清除应用程序数据并重新启动设备?

0 投票
1 回答
934 浏览

android - 使用 PARTIAL_WAKE_LOCK 保持后台线程处于活动状态

我需要定期在后台运行任务,并保持 CPU 唤醒。根据 Android文档,我为此使用了PARTIAL_WAKE_LOCK 。为了测试唤醒锁,我编写了一个 Service,它使用ScheduledThreadPoolExecutor每 2 分钟启动一个线程。该线程只是在 sdcard 中的日志文件上写入一个字符串。

然后,我执行了以下简单测试:运行应用程序并拔下设备的电源。在正确执行 2 或 3 小时后,Service 停止运行线程,并且日志文件中没有写入新字符串。

服务代码:

TestTask的代码:

我希望当显示器关闭时线程也会执行,但查看我的日志文件似乎并非如此。我哪里错了?

0 投票
1 回答
1398 浏览

android - 如何使用 PowerManager.ACQUIRE_CAUSES_WAKEUP

我该如何使用ACQUIRE_CAUSES_WAKEUPACQUIRE_CAUSES_WAKEUP必须与另一个唤醒锁一起使用,否则您可能会出错:

但是,FULL_WAKE_LOCK,SCREEN_DIM_WAKE_LOCKSCREEN_BRIGHT_WAKE_LOCK都已弃用,并且ACQUIRE_CAUSES_WAKEUP不适用于PARTIAL_WAKE_LOCK

“不能与 PARTIAL_WAKE_LOCK 一起使用。”

文档

那么这是否意味着它ACQUIRE_CAUSES_WAKEUP实际上是无用的?