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 に答える