新しいDeviceStatusクラスは、従来のDeviceExtendedPropertiesと同じMicrosoft.Phone.Info名前空間に属します。 新しいプロパティ名を覚えておく必要がないのは非常に便利です。 それらは同じままです-構文が変更されました。 たとえば、古いバージョンでは次のとおりでした。
textBlockGetManufacture.Text = DeviceExtendedProperties.GetValue( "DeviceManufacturer")。ToString();
次のようになりました:
textBlockGetManufacture.Text = Microsoft.Phone.Info.DeviceStatus.DeviceManufacturer;
さらに、新しい便利なキーボードおよび電源関連のプロパティがDeviceStatusクラスに追加されました。
すべての変更を確認するために、Windows Phone 7デバイスのハードウェア特性の古い例を基に、処理を開始しました。
まず、Windows Phone 7用に作成された古いプロジェクトを開始しました。次に、[プロジェクト]メニューで[プロパティ]を選択し、開いたウィンドウで[ ターゲットWindows Phoneバージョン]リストでWindows Phone 7.1を選択しました
現在では、廃止されたプロパティを新しいプロパティで置き換える必要があります。
public MainPage() { InitializeComponent(); timer = new DispatcherTimer(); timer.Interval = new TimeSpan(0, 0, 10); timer.Tick += new EventHandler(timer_Tick); } DispatcherTimer timer; private void butGetInfo_Click(object sender, RoutedEventArgs e) { // // // textBlockGetManufacture.Text = DeviceExtendedProperties.GetValue("DeviceManufacturer").ToString(); // Windows Phone 7.1 Mango textBlockGetManufacture.Text = Microsoft.Phone.Info.DeviceStatus.DeviceManufacturer; // // // textBlockGetName.Text = DeviceExtendedProperties.GetValue("DeviceName").ToString(); // Windows Phone 7.1 Mango textBlockGetName.Text = Microsoft.Phone.Info.DeviceStatus.DeviceName; // byte[] id = (byte[])DeviceExtendedProperties.GetValue("DeviceUniqueId"); textBlockGetID.Text = BitConverter.ToString(id); // // // textBlockGetFirmware.Text = DeviceExtendedProperties.GetValue("DeviceFirmwareVersion").ToString(); // Windows Phone 7.1 Mango textBlockGetFirmware.Text = Microsoft.Phone.Info.DeviceStatus.DeviceFirmwareVersion; // // // textBlockGetHardware.Text = DeviceExtendedProperties.GetValue("DeviceHardwareVersion").ToString(); // Windows Phone 7.1 Mango textBlockGetHardware.Text = Microsoft.Phone.Info.DeviceStatus.DeviceHardwareVersion; // // //var maxmem = (long)DeviceExtendedProperties.GetValue("DeviceTotalMemory"); // maxmem /= 1024 * 1024; //textBlockGetTotalMemory.Text = maxmem.ToString(); // Windows 7.1. Mango var totalmem = Microsoft.Phone.Info.DeviceStatus.DeviceTotalMemory; totalmem /= 1024 * 1024; textBlockGetTotalMemory.Text = totalmem.ToString(); // Windows 7.1 Mango // textBlockGetKeyboardDeploy.Text = Microsoft.Phone.Info.DeviceStatus.IsKeyboardDeployed.ToString(); // textBlockGetPresentKeyboard.Text = Microsoft.Phone.Info.DeviceStatus.IsKeyboardPresent.ToString(); // textBlockGetPowerSource.Text = Microsoft.Phone.Info.DeviceStatus.PowerSource.ToString(); } private void buttonMemory_Click(object sender, RoutedEventArgs e) { timer.Start(); } void timer_Tick(object sender, EventArgs e) { try { // // textBlockGetCurrentMemory.Text = DeviceExtendedProperties.GetValue("ApplicationCurrentMemoryUsage").ToString(); // textBlockGetPeakMemory.Text = DeviceExtendedProperties.GetValue("ApplicationPeakMemoryUsage").ToString(); // Windows 7.1. Mango textBlockGetCurrentMemory.Text = Microsoft.Phone.Info.DeviceStatus.ApplicationCurrentMemoryUsage.ToString(); textBlockGetPeakMemory.Text = Microsoft.Phone.Info.DeviceStatus.ApplicationPeakMemoryUsage.ToString(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
便宜上、コードロジックを2つの部分に分割しました。 最初の部分では、定数プロパティの値を表示します:製造元の名前、ファームウェア番号、合計メモリ。 廃止されたクラスDeviceExtendedPropertiesでは、 DeviceUniqueIdプロパティを介して一意のデバイス番号を取得できたことに注意してください 。 新しいクラスにはアナログがありませんでした。 また、以前は共有メモリ用に371が返されていましたが、マンゴーでは435 MBになりました。
新しいマンゴー機能
次に、ニュースについて少し説明します。 デバイス上のハードウェアキーボードの存在を決定する新しいプロパティIsKeyboardPresentがあります。 エミュレータはデスクトップキーボードを認識するため、エミュレータでは常にTrueが返されます。 Windows Mobileエミュレーターにも同じ動作があったことを思い出します。 システムユニットからキーボードワイヤを引き出して結果を確認することもできますが、この問題の調査はあなたに任せることにしました。
また、新しいIsKeyboardDeployedプロパティが登場しました 。これは、以前のプロパティと連動します。 これにより、ユーザーが仕事のためにキーボードを進めたかどうかを確認できます。 このプロパティを使用する前に、IsKeyboardPresentを使用してハードウェアキーボードがあることを確認してください。
別の便利な機能はPowerSourcesです。 これにより、デバイスがバッテリー電源で実行されているか、外部電源(コンセントまたはコンピューターに接続されている)から実行されているかを確認できます。
Android、アイ
Habréに関する私の最後の出版物の 1つで、記述されたプログラムの類似物を書くためにAndroid用のアプリケーションを書くプログラマに提案しました。 伝統を継続し、Androidスマートフォンのハードウェア特性をどのように得ることができるかを提案する
また、iPhone開発者からの連絡も嬉しいです。