1

我在 windows phone 8 sdk 中看到了 winbase.h (WINAPI) 文件 (kernel32.dll),它具有以下功能:

GetSystemPowerStatus 将返回电池状态(SYSTEM_POWER_STATUS)

. 问题是模拟器上的这个抛出和异常,没有在手机上测试(等待得到一个)

我用过

 [DllImport("Kernel32")]
   private static extern Boolean GetSystemPowerStatus( SystemPowerStatus sps );

代码符合但在运行时抛出异常。

有什么想法可以在手机上使用,还是 Windows Phone 8 根本不支持?

4

3 回答 3

2

正如 AnderZubi 所说,这不是 Windows Phone 8 上受支持的 Win32 API。但是,您可以从本机 C/C++ 代码调用等效的WinRT API 。这与 Martin 发布的 C# API 非常相似。

如果您已经使用 C/C++,使用 WinRT 版本可能会节省您在 C++ 和 C# 之间架桥的需要。如果您正在开始一个只使用 XAML/C# 的新应用程序,那么 Martin 的答案会更简单。

例如:

int WindowsPhoneRuntimeComponent::GetBatteryRemainingPercent()
{
    auto battery = Windows::Phone::Devices::Power::Battery::GetDefault();
    int remainingPercent = battery->RemainingChargePercent;
    return remainingPercent;
}
于 2012-12-03T16:39:41.597 回答
1

如果您只想访问电池信息和 bool 属性,如果手机是否在充电器上,您可以使用以下命令:

using Microsoft.Phone.Info;
using Windows.Phone.Devices.Power;

namespace Core.Helpers
{
    public class BatteryHelper
    {
        public static int BateryLevel
        {
            get
            {
                return Battery.GetDefault().RemainingChargePercent;
            }
        }

        public static bool IsCharging
        {
            get
            {
                return DeviceStatus.PowerSource == PowerSource.External;
            }
        }
    }
}
于 2012-12-03T14:01:58.780 回答
0

GetSystemPowerStatus 不在 Windows Phone 8 支持的 Win32 API 列表中:

http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj662956(v=vs.105).aspx

于 2012-12-03T14:04:17.523 回答