我在windows 8 sdk中看到了winbase.h (WINAPI)文件(kernel32.dll),它具有以下功能:
GetSystemPowerStatus,它将返回电池状态(SYSTEM_POWER_STATUS)
。问题是这在模拟器上抛出和异常,而不是在手机上测试(等待得到一个)。
我用过
[DllImport("Kernel32")]
private static extern Boolean GetSystemPowerStatus( SystemPowerStatus sps );代码符合,但在运行时抛出异常。
任何想法,这将工作在手机上,或这是根本不支持windows phone 8?
发布于 2012-12-03 16:39:41
正如AnderZubi所说,这不是Windows 8上支持的Win32 API,但是您可以从本地C/C++代码中调用一个等价的WinRT API。这与马丁发布的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-03 14:01:58
如果您只想访问电池信息和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-03 14:04:17
GetSystemPowerStatus不在Windows 8支持的Win32 API列表中:
http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj662956(v=vs.105).aspx
https://stackoverflow.com/questions/13684562
复制相似问题