エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Windows Phone 8 のセンサー

2014/06/18

対象: Windows Phone 8 および Windows Phone Silverlight 8.1 | Windows Phone OS 7.1

 

Windows Phone では、アプリでデバイスの向きや動きを判別できるようにする複数のセンサーをサポートしています。これらのセンサーにより、物理デバイス自体がユーザー入力の手段となるアプリを開発できます。この機能の一般的な用途として、モーション コントロールによるゲームや、拡張現実アプリがあります。これらの用途の多くについて、最も簡単に動きと方向の情報を取得するには、複数のセンサーからの入力を組み合わせて処理する複合モーション API を使用します。Windows Phone には、個々のセンサーからのデータ取得を必要とするアプリ用の API も用意されています。このトピックでは、各センサー API について概要を簡単に説明します。

各センサー API は基本クラス SensorBase<TSensorReading> に基づいて構築されており、同様のパターンに従ってセンサーを起動し、データを取得します。各センサーについて、アプリでのセンサーの使用方法を簡単に説明したトピックが用意されています。

メモメモ:

このトピックで説明した Windows.Devices.Sensors 名前空間の API に加えて、Microsoft.Devices.Sensors 名前空間の同様のクラスを使用して電話のセンサーをプログラミングすることもできます。

注意注意:

センサー API は、アプリがロック画面下で実行されているときには使用できません。詳細については、「Windows Phone 8 のアイドル検出」を参照してください。また、センサー API はバックグラウンド エージェントで使用することもできません。詳細については、「Windows Phone 8 のバックグラウンド エージェント」を参照してください。

加速度計は、ある時点でデバイスに加えられた力を測定します。この力を使用すると、ユーザーがデバイスを動かしている方向を判断できます。加速度値は、X、Y、および Z 軸の加速度成分 (重力単位) を表す 3 次元ベクトルとして表されます。加速度の方向はデバイスに対するもので、デバイスが水平なテーブル上で上向きになっている場合は Z 軸方向に -1g が加わり、デバイスがテーブル面に対して垂直になっている場合は Y 軸方向に -1g が加わります。

Accelerometer センサーは、電話機の動きの結果として発生するすべての力と共に、重力を検出します。Motion クラスを使ってアクセスする複合モーション API は、複数のデバイス センサーを使用して、重力ベクトルとデバイスの加速度を切り離します。この API により、デバイスの現在の姿勢 (ヨー、ピッチ、ロール) を簡単に判断することができます。

Compassセンサー (磁力計) は、地球の磁北極に対するデバイスの回転角度を判断するために使用できます。アプリは生の磁力計の測定値を使用して、デバイス周囲の磁力も検出できます。

コンパス センサーは、一部の Windows Phone デバイスでは必須ではありません。アプリを設計および実装する際には、この点を考慮する必要があります。アプリでは、センサーが使用できるかどうかを常に確認し、使用できない場合は代替の入力メカニズムを提供するか、適切な手順でエラーとする必要があります。

Gyroscope センサーは、各軸のデバイスの回転速度を特定するために使用します。ジャイロスコープ センサーから取得した値を使用して、空間内のデバイスの方向を特定できます。ジャイロスコープは、角度ではなく回転速度を測定するため、ドリフトに関連する問題が生じることがあります。デバイスの姿勢 (ヨー、ピッチ、ロール) に興味がある場合、ジャイロスコープ API の代わりに、Motion を使用する必要があります。

ジャイロスコープ センサーはすべての Windows Phone デバイスに必要であるわけではありません。アプリを設計および実装する際には、この点を考慮する必要があります。アプリでは、センサーが使用できるかどうかを常に確認し、使用できない場合は代替の入力メカニズムを提供するか、適切な手順でエラーとする必要があります。

物理的な制限があるために、Windows Phone で、センサーの Raw データからデバイスの実際の向きや動きを特定することが困難な場合があります。たとえば、加速度計の読み取り値には、デバイスの動きよって生じる力に加えて、デバイスに加わる重力の力が含まれます。ジャイロスコープ センサーは、位置ではなく回転速度を測定するため、ドリフトの影響を受けます。また、これらのセンサーの Raw データをデバイスの実際の向きに変換するために、複雑な幾何学計算を行う必要があります。Motion クラスは、低レベル センサー計算を処理し、アプリで重力やユーザーの動きによるデバイスの姿勢 (ヨー、ピッチ、ロール)、回転加速度、および線形加速度を簡単に取得できるようにします。拡張現実アプリなどのこの種類のデータを使用する一般的なアプリでは、Motion クラスを使用することをお勧めします。センサー データを非定型な形で使用する場合や、モーションや方向の独自の計算を実装する場合は、個別のセンサー クラスを使用して各センサーから Raw データを取得することができます。

モーション API では、2 種類のセンサー構成を使用できます。標準モーションでは、コンパスと加速度計センサーを使用し、コンパス、加速度計、ジャイロスコープを使用する拡張モーションよりも精度が劣ります。アプリで、拡張モーションの精度が必要な場合、アプリが実行しているデバイスでジャイロスコープ センサーをサポートしていることを確認する必要があります。

ユーザーが ストア でアプリを表示したときに、ユーザーのデバイスがそのアプリで使用されているセンサーをサポートしていないと警告が発行されます。加速度計、コンパス、ジャイロスコープの場合、これは単純です。アプリでセンサーを使用しており、ユーザーのデバイスでそれをサポートしていない場合、ユーザーは警告を受け取ります。

先述のように、モーション API は少なくともコンパス センサーを備えたデバイスで機能します。ただし、ジャイロスコープも存在する場合に、より優れたデータが生成されます。現在、ストア は、コンパス センサーを使用して、デバイスでモーション API がサポートされているかどうかを判断します。ユーザーがモーション API を使用するアプリを表示し、ユーザーのデバイスにコンパスがない場合、このアプリにはコンパス センサーが必要であるという警告を受け取ります。

表示:
© 2015 Microsoft