Informationen über das Gerät sind in manchen Fällen unerlässlich. Gerade zu Testzwecken ist es äußerst ratsam und sinnvoll, sich die Speicherinformationen näher anzusehen.
Windows Phone OS 7.0
Für Windows Phone OS 7.0 wird hier die Klasse DeviceExtendedProperties aus dem Namespace Microsoft.Phone.Info zur Verfügung gestellt. Über deren Methoden GetValue bzw. TryGetValue können die gewünschten Informationen bezogen werden.
Nachfolgend eine Liste der Informationen, die abgerufen werden können.
Eigenschaft | Typ | Beschreibung |
DeviceManufacturer | String (max. 256) | Name des Herstellers |
DeviceName | String (max. 256) | Name des Gerätes |
DeviceUniqueId | Byte[] | Eindeutiger Hash des Geräts |
DeviceFirmwareVersion | String | Firmware Version |
DeviceHardwareVersion | String | Hardware Version |
DeviceTotalMemory | Int64 | Physikalischer RAM in Bytes |
ApplicationCurrentMemoryUsage | Int64 | Speicherverbrauch der aktuellen Anwendung in Bytes |
ApplicationPeakMemoryUsage | Int64 | Speicherverbrauch-Spitze der aktuellen Anwendung in Bytes |
Hier ein klein wenig Code für eine beispielhafte Ausgabe:
string[] properties = new[]
{
"DeviceManufacturer",
"DeviceName",
"DeviceUniqueId",
"DeviceFirmwareVersion",
"DeviceHardwareVersion",
"DeviceTotalMemory",
"ApplicationCurrentMemoryUsage",
"ApplicationPeakMemoryUsage"
};
properties.ToList().ForEach
(
item => Debug.WriteLine
(
string.Format("{0}: {1}", item, DeviceExtendedProperties.GetValue(item))
)
);
Und das ist das Ergebnis, wenn am Emulator ausgeführt:
DeviceManufacturer: Microsoft
DeviceName: XDeviceEmulator
DeviceUniqueId: System.Byte[]
DeviceFirmwareVersion: 0.0.0.0
DeviceHardwareVersion: 0.0.0.0
DeviceTotalMemory: 390012928
ApplicationCurrentMemoryUsage: 13402112
ApplicationPeakMemoryUsage: 23425024
Wichtiger Hinweis: Es ist unbedingt zu prüfen, ob in einer Release-Version auf diese Informationen zugegriffen werden muss, da die Anwendung am Zielgerät ein zusätzliches Recht einfordert und der Benutzer darauf hingewiesen wird. Wenn also nicht unbedingt notwendig, sollte dies nur für Testzwecke verwendet werden.
Windows Phone OS 7.1
Mit Mango ändert sich dies. Die Klasse DeviceExtendedProperties ist nicht mehr zu verwenden. Stattdessen wurde die Klasse DeviceStatus eingeführt. Diese befindet sich ebenfalls im Namespace Microsoft.Phone.Info. Darüber werden die über DeviceExtendedProperties möglichen Abfragewerte als Eigenschaften zur Verfügung gestellt. Die Eigenschaft DeviceUniqueId entfällt. Zusätzlich werden die Eigenschaften
- IsKeyboardDeployed
- IsKeyboardPresent
- PowerSource
angeboten. Ebenso verfügbar sind zwei Ereignisse:
- KeyboardDeployedChanged
- PowerSourceChanged
Weitere Informationen finden sich im MSDN-Eintrag zu DeviceStatus.