首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WinRT -如何判断设备是电池供电还是墙上供电?

问WinRT -如何判断设备是电池供电还是墙上供电?
EN

Stack Overflow用户
提问于 2013-10-07 07:36:53
回答 2查看 731关注 0票数 1

比方说,我想让我的应用程序在靠电池供电时限制吞吐量,但当它插到墙上的插座上时就会全力以赴。

是否有可插入的事件来检测何时发生这些事情,如检测到internet连接时?

EN

回答 2

Stack Overflow用户

发布于 2013-10-08 22:45:49

显然,你可以插入这个trigger。它只在设备插入时才会触发。

票数 0
EN

Stack Overflow用户

发布于 2014-02-13 22:53:47

IE和WebView http://ie.microsoft.com/testdrive/HTML5/PowerMeter/Default.html可以轮询cpu的电源状态,例如:http://apps.microsoft.com/windows/app/plugged-in/2b91b1e1-9e30-4a96-bc95-b196e46bef9d In c#/xaml try:

XAML

代码语言:javascript
复制
<WebView x:Name="BatteryCheck_WV" Source="ms-appx-web:///Assets/JSBatteryCheck.html" Height="50" Width="50" Visibility="Collapsed"    />

c#

代码语言:javascript
复制
var PeriodicTimer = ThreadPoolTimer.CreatePeriodicTimer(async (timer) =>
            {
                await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Low,
                async () =>
                {
                    if (Window.Current.Visible) BatteryStatus.IsOn= Convert.ToBoolean(await BatteryCheck_WV.InvokeScriptAsync("IsPluggedIn", null));

                });
            }, new TimeSpan(0, 0, 0, 1, 0));

html/js

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
    <title>JSBatteryCheck</title>
    <script type="text/javascript">

        var batterytimeOut;
        var timeOutGo = true;
        var lastDisplayUpdateTime = new Date();
        var MilliSeconds = 1000;
        var displayUpdateInterval = 200;
        var values = [];
        var maxValues = displayUpdateInterval;

        var PluggedIn = true;
        var currentTicksPerMilliSecond = 0;

        function GetTicksPerSecond() {
            if ((new Date() - lastDisplayUpdateTime) >= displayUpdateInterval) {
                lastDisplayUpdateTime = new Date;
                currentTicksPerMilliSecond = Avg();
                values = [];
                if (!isNaN(currentTicksPerMilliSecond)) {

                    PluggedIn = (currentTicksPerMilliSecond > 9) ? false : true;
                }
            }
            else Tick();

            if (timeOutGo) batterytimeOut = setTimeout(function () { GetTicksPerSecond() }, 1);
        }

        function StartTimer() {
            timeOutGo = true;
            GetTicksPerSecond();
            return "";
        }

        function Tick() {
            if (values.length > maxValues) values.shift();
            else values.push(new Date());
        }

        function Avg() {
            if (values.length > 1) {
                var earliest = values[0];
                var latest = values[values.length - 1];
                var elapsed = latest - earliest;
                var elapsedSeconds = elapsed / MilliSeconds;
                var avg = MilliSeconds / ((values.length - 1) / elapsedSeconds);
                return parseInt(avg);
            }
            else return NaN;
        }

        function StopTimeOut() {
            clearTimeout(batterytimeOut);
            batterytimeOut = null;
            timeOutGo = false;
        }


        function IsPluggedIn() {
            return String(PluggedIn);
        }

    </script>
</head>
<body onload="GetTicksPerSecond()">
    <div id="PowerStatus"></div>
    <button onclick="StopTimeOut()">Stop timeout</button>
</body>
</html>

对于后台任务,最好使用SystemTriggerType.BackgroundWorkCostChange事件,但需要锁定屏幕访问权限

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

https://stackoverflow.com/questions/19215214

复制
相关文章

相似问题

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