一些三星设备具有超省电模式,可关闭wifi,转动屏幕灰度并限制几个基本应用的使用.
但它确实允许您添加一些可以使用的应用程序.这些应用包括Facebook和WhatsApp.如何让我的应用程序出现在此列表中?我必须对应用程序进行哪些更改才能显示在此列表中?或者此列表是否基于三星维护的白名单?
我计划开发一个可以在基于arm的嵌入式Linux平台上运行的漂亮的小应用程序; 但是,由于该平台将由电池供电,我正在搜索有关如何处理省电的相关信息.
获得合适的电池时间非常重要.
我认为Linux内核对此实现了一些支持,但是我找不到关于这个主题的任何文档.
欢迎任何关于如何设计我的程序和系统的输入.
关于Linux内核如何尝试解决此类问题的任何输入也是受欢迎的.
其他问题:
用户空间中的程序需要做多少?
你需要修改内核吗?
需要了解哪些内核系统调用或API?
更新:
看起来参与"自由电子"网站的人们就这个主题做了一些很好的演示.
但也许其他人有关于这个主题的更多信息?
更新:
看起来Adam Shiemke关于MeeGo项目的想法可能是目前为止最好的提示.
它可能是目前最好的电池供电嵌入式Linux项目.
诺基亚通常善于这类事情.
更新:
人们必须要小心Android,因为它底部有一个"修改过的"Linux内核,谷歌人所做的一些事情并没有使用基线/普通的Linux内核.我认为他们的一些电源管理想法对于其他项目的重用可能很麻烦.
三星设备(好吧,至少其中一些)将所有已安装的应用程序添加到"应用程序省电模式"列表中,该列表会影响后台服务,以便收听应用程序的一些重要信息.
某些应用程序在某种程度上在安装后禁用此模式,无需任何额外步骤.关于在三星线程上以编程方式禁用应用程序省电模式的评论表明Facebook和WhatsApp等应用程序可能在操作系统白名单中,但我看到的应用程序不那么受欢迎.知道怎么做到这一点?
我尝试过使用ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS意图但没有成功.PowerManager#isIgnoringBatteryOptimizations开始返回,true但应用程序没有禁用应用程序节能模式或省电设置设置.
如果您认为唯一的方法是联系三星将应用程序列入白名单,那么最佳位置是哪里?
此外,如果没有办法以编程方式禁用应用程序省电模式,有没有办法检测是否为应用程序启用了它,以便我可以打开应用程序并要求用户禁用它?
在Windows XP上,脚本中的以下命令将阻止在PC上启用任何省电选项(监视器睡眠,HD睡眠等).这对于自助服务终端应用程序非常有用.
powercfg.exe /setactive presentation
Run Code Online (Sandbox Code Playgroud)
Vista上的等价物是什么?
据我所知,有些版本<5.0的设备具有Power Saver选项.
在这个类似的问题中提供的答案是不正确的,并没有解释任何事情.
在Android 5.0+上,我们可以在此处使用此脚本:
PowerManager powerManager = (PowerManager) this.getSystemService(Context.POWER_SERVICE);
if ( powerManager.isPowerSaveMode()) {
//code
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:是否有通用的方法来检查是否存在节电模式,以及它是否在API <21时启用/禁用?
我试图检测我的CPU的当前p状态.我注意到p-state状态MSR(C001_0063)总是在我的ryzen 1700x系统上返回2,即使核心显然不在该状态.我认为它曾经用于我的主板附带的初始BIOS(v0403),但是不能再下载了1.
我的CPU超频2到3.8GHz.我曾经cpufreq-set修复速度并cpufreq-info验证:
analyzing CPU 0:
driver: acpi-cpufreq
CPUs which run at the same hardware frequency: 0
CPUs which need to have their frequency coordinated by software: 0
maximum transition latency: 4294.55 ms.
hardware limits: 2.20 GHz - 3.80 GHz
available frequency steps: 3.80 GHz, 2.20 GHz
available cpufreq governors: ondemand, conservative, performance, schedutil
current policy: frequency should be within 3.80 GHz and 3.80 GHz.
The governor "performance" may decide …Run Code Online (Sandbox Code Playgroud) 我正在为无线网卡编写一个相当低级别的驱动程序,虽然大部分规范都相当简单,但我还没有解决一个问题:
如果我的电台处于省电模式且其接收器在DTIM帧之间长时间(例如10秒)关闭,并且同时重新启动接入点,那么我的关联将丢失,我该如何检测到这一点?
我知道最常见的情况是同步丢失得足够彻底,以至于我会错过一些信标,然后简单地回到AP搜索,但如果幸运的话,我会看到信标,是否有一些找出这是同一个AP的新"实例"的方法?
我能想到
作为一个完美主义者,我想知道是否有一种完全可靠的方法可以检测到AP已重新启动,而不仅仅是整理线索.
我正在研究iOS追踪器.即使应用程序不在前台,它也必须运行和接收位置,即我使用后台模式"位置更新".但是,如果可能的话,安全电池也没关系.特别是,如果设备不移动,则不需要接收位置.
distanceFilteron CLLocationManager实例但它不节省电力,它只是减少了位置更新的数量.pausesLocationUpdatesAutomatically设置为的位置管理器YES(由deafult打开)但如果应用程序处于后台且位置更新暂停,则应用程序将暂停,即使设备再次开始移动也不会唤醒.当我需要在后台获取位置时,有没有办法节省电池?国旗pausesLocationUpdatesAutomatically非常接近我正在寻找的东西,但在后台暂停应用程序对我来说是一个显示阻止.
我有两台显示器(HP EliteDisplay E190i),两台都连接到两台电脑(2x VGA + DP).
这些显示器也支持DVI,因此我不想使用愚蠢的切换按钮,每次我希望在计算机之间切换时,我都需要浏览显示器的菜单.我以前有笨重的显示器和切换真的很容易,但我不能习惯整个导航的东西 - 它经常让人感到困惑......
所以这是交易 - 我希望能够通过执行命令在计算机之间快速切换.显然这不能直接完成(计算机没有以任何方式相互连接),但是当监视器进入省电模式时(或当操作系统关闭它们时),监视器开始扫描可用输入.这样他们就会锁定另一台计算机并解决问题.
虽然足够的介绍,我已经尝试过这个解决方案并且效果很好,但它并不完美:
我尝试在将监视器发送到睡眠状态之前根据此答案禁用输入,然后在5秒后重新启用它,但这也不起作用,因为:
这是我的代码:
[DllImport("user32.dll")]
private static extern int SendMessage(int hWnd, int hMsg, int wParam, int lParam);
[DllImport("user32.dll")]
private static extern int BlockInput(int fBlockIt);
static void Main()
{
SendMessage(0xFFFF, 0x112, 0xF170, 2);
try
{
int result = BlockInput(1);
Console.WriteLine(result);
Thread.Sleep(5000);
}
finally
{
BlockInput(0);
}
}
Run Code Online (Sandbox Code Playgroud)
我在两台计算机上都使用Windows 7 Enterprise x64.
有没有办法让整个仪式上班?
请考虑以下示例:
setInterval(function()
{
console.log(new Date());
});
Run Code Online (Sandbox Code Playgroud)
如果我electron example.js在OS X下运行它,它会在我的停靠栏中打开一个图标并开始在控制台上打印出时间.但是,如果应用程序没有聚焦,一段时间后它会开始限制.
我环顾四周,发现这是由于OS X节电策略造成的.现在,如果我需要它继续在后台工作怎么办?我的应用程序将是一个守护进程,偶尔做一些事情,我不能让我的用户茫然地盯着我的应用程序多年.
我在这里发现我可以做到
electron.powerSaveBlocker.start('prevent-app-suspension');
Run Code Online (Sandbox Code Playgroud)
这实际上解决了我的问题.然而,这是非常具有侵略性的,因为就我的理解而言,它可以防止系统完全沉睡!我不需要这么多,我只需要我的应用程序在计算机处于活动状态和在线状态时执行某些操作而不会强制它永远保持清醒状态.
让我的用户不断地将应用程序保持在前台,让他们的计算机永远失眠之间,中间是不是有什么东西?
我正在尝试编写一个Windows 8平板电脑应用程序,通常可以在接收输入之间多分钟.
问题是,如果我不继续触摸屏幕,节电器将激活,屏幕将自动变黑,这会破坏应用程序的用户.
有没有办法让我的应用程序可以阻止节电器激活,或者至少延长节电器激活所需的时间.
我正在开发一款简单的游戏,UIAccelerometer无需任何屏幕点击交互.在默认模式下,屏幕会定期进入省电模式.如何使屏幕在应用程序处于活动状态的整个时间内保持活动状态?
是否可以通过代码打开/关闭省电模式?
目前,我确实获取和释放唤醒锁,但我认为,那是不一样的。