すべての人に良い日
今日はLumia SensorCore SDKについてお話します 。これは、モーションセンサーと位置から情報を収集して処理するためのツールのコレクションを開発者に提供します 。 このデータは、主にフィットネスアプリケーションおよびユーザーの位置に関する情報を処理する必要があるアプリケーションの開発に役立ちます。
このSDKの主な利点は、エネルギー消費プロセスを最適化するバックグラウンドで動作できることです。
はじめに
Lumia SensorCore SDKを使用すると、プロセッサの負荷が大幅に軽減されるため、デバイスのバッテリー寿命が長くなります。 これは、アプリケーションがバックグラウンドでハングしている間、SDKがセンサーからデータを個別にキャプチャするという事実によって実現されます。
情報の保存と処理では、ユーザーのプライバシー設定が考慮されます。 ユーザーは、ユーザーの移動と位置に関する情報を収集するプロセスの接続/切断、および既に収集されたデータの破棄について、独自に決定します。 情報を収集するプロセスでは、クラウドストレージサービスは使用されず、すべてのデータはデバイスにローカルに保存されます。
SensorCore APIのいずれかが機能するためには、デバイスでモーションデータと位置データの両方の設定を有効にする必要があります。 したがって、このSDKを使用してアプリケーションを開発する場合、これらの設定を無効にできるシナリオ、またはデバイスがハードウェアレベルでSensorCore機能をサポートしていないシナリオを提供する必要があります。
SensorCore SDKは、Nokia Lumia:630、635、930、730、830(Nokia Lumia 1520など)など、Windows Phone 8.1オペレーティングシステムを搭載した次世代デバイスでのみ使用できることに注意することが重要です。
主な機能
Lumia SensorCore SDKには、次のセンサーを操作するためのAPIが含まれています。
- 歩数計
- アクティビティモニター;
- 位置センサー;
- トラッカールート。
すべてのAPIのLumia SensorCore SDKは以下をサポートします。
// StepCounter stepCounter = await StepCounter.GetDefaultAsync(); // if (await StepCounter.IsSupportedAsync()) … // switch (SenseHelper.GetSenseError(failure.HResult)) // stepCounter.ActivateAsync(); stepCounter.DeactivateAsync();
これらのシナリオで利用可能な新しいAPIを詳しく見てみましょう。
ステップカウンターAPI
歩数をカウントするための一連のツールは 、ユーザーが踏んだ歩数、歩んだ時間、走った方法に関する情報を提供します。
違いは速度だけでなく、動きの強さによっても決まるため、ユーザーが同じ速度で走って歩いていたとしても、動きのタイプが識別されます。
主な方法:
// StepCounterReading currentSteps = await stepCounter.GetCurrentReadingAsync(); // IList<StepCounterReading> steps = await stepCounter.GetStepCountHistoryAsync ( DateTime.Now.AddHours( -1 ), TimeSpan.FromHours( 1 ) );
Bing Health and Fitnessアプリケーションで使用される ステップ カウンター API の例 :
アクティビティモニターAPI
このツールは、ユーザーの身体活動の変化に関する情報をキャプチャし、たとえば、いつ歩行が開始され、いつ歩行が完了したかを判断します。
不正確なデータを除外するために、ユーザーアクティビティの種類の変化を判断するのに5〜10秒のわずかな遅延があります。
APIを使用すると、次のタイプのアクティビティを区別できます。
- デバイスはスタンバイモードです(ユーザーなし)。
- デバイスはユーザーと共にありますが、ユーザーは移動しません。
- ユーザーは歩いています。
- ユーザーは実行中です。
- ユーザーは移動しますが、Active Monitorは移動のタイプを識別できません。その場合、アクティビティのタイプはMoveに分類されます。
主な方法:
// ActivityMonitorReading reading = await activityMonitor.GetCurrentReadingAsync(); // <i>ReadingChanged</I> activityMonitor.ReadingChanged += activityMonitor_ReadingChanged; // IList<ActivityMonitorReading> activities = await activityMonitor.GetActivityHistoryAsync( DateTime.Now.AddDays( -1 ), TimeSpan.FromDays( 1 ) );
Place Monitor API
このAPIを使用すると、ユーザーが時間を費やした場所の座標のリストを取得できます。購入した場所、夕食を食べた場所、渋滞に立った場所などです。 このツールの主な機能は、ユーザーが頻繁に訪れる場所を識別し、 既知の場所を識別することです。
「 Places」 アプリケーションで使用される Place Monitor API の例 :
場所を既知として分類してリストに追加するには、デバイスを少なくとも10分間1つの場所に置いておく必要があります。 原則として、1つの場所とは、半径が200メートル未満の円形エリアを意味します。 ユーザーがこの場所を移動している間、半径が大きくなる可能性があります。
2つの有名な場所の間の距離は500メートル以上でなければなりません。 つまり、2つ以上の異なる場所が互いに500メートル以内にある場合でも、Place Monitor APIはそれらを1つの既知の場所に結合しようとします。
すべての既知の場所は、次の属性を持つPlaceクラスによって定義されます。
- ID-場所の一意の識別子。
- 種類 : 有名な 、家、仕事。
- 位置 -場所の地理的位置。
- 半径 -目的の場所の周りの円形ゾーン。
主な方法:
// Place place = await placeMonitor.GetCurrentPlaceAsync(); // PlaceChanged placeMonitor.PlaceChanged += placeMonitor_PlaceChanged; // IList<Place> places = await placeMonitor.GetPlaceHistoryAsync (DateTime.Now.AddHours( -1 ), TimeSpan.FromHours( 1 )
Place Monitor APIは、 既知の場所の簡単なリストを作成することに加えて、「自宅」や「職場」などの場所を個別に識別します。
「自宅」と「職場」は、次の基準によって決定されます。
- デバイスがどのくらいの頻度で移動し、ユーザーがどのようなアクティビティを示したか。
- デバイスの使用頻度。
- 電話は充電器に接続しましたか。
通常、分類には2〜3日かかります。 「自宅」と「職場」は、これら2つの場所の論理的なショートカットにすぎないことに注意してください。 たとえば、プレイスモニターは、学校が場所「仕事」を決定する基準に従って出席している場合、学校を「仕事」として検出します。
デバイスの所有者が新しい住所に移動するか、仕事を変更すると、Place Monitorは10日以内にこれを検出します。
APIで「自宅」と「職場」として提案された場所の分類を使用するためのさまざまなシナリオがあります。たとえば、
- より重要なUXのアプリケーションでの作成。 たとえば、ナビゲーションアプリケーションはこれらの「ホーム」ラベルの値を使用して、自宅から職場までのルートを自動的に作成できます 。
- また、ホーム分類を使用してこの場所の周囲にジオゾーンを作成し、このジオフェンスを使用して、デバイスが自宅にいた時間またはデバイスが家を出た回数を計算することもできます。
- アプリケーションは「ホーム」を使用して家の周りにジオゾーンを作成し、このジオゾーンを使用してデバイスの一部の機能を引き出すことができます。 または、アプリケーションは、子供が家に到着したというメッセージを親に送信する場合があります。
アプリケーションがホームまたは職場の場所に出入りする瞬間を追跡したい場合、アプリケーションはジオフェンシングを使用する必要があります。 PlaceMonitorを使用すると、アプリケーションは既知の場所のリストを取得し、 Placeクラスの記述された属性(地理座標と半径)を使用して、この場所の周りに地理ゾーンを構築できます。
APIは、最小限のエネルギーでバックグラウンドで実行されるデータを収集するように設計されています。 したがって、デバイスの場所を特定するために、APIロジックはモバイルオペレーターの塔とWi-Fiアクセスポイントを使用します。
トラックポイントモニターAPI
Track Point Monitor APIは、ユーザーの移動情報を収集します。 Place Monitor APIツールに似ていますが、頻繁にアクセスする特定の場所ではなく、 ウェイポイントを修正します。 Track Point Monitor APIは、セルタワーとWi-Fiアクセスポイントを使用して、デバイスの場所を特定します。
「 Tracks」 アプリケーションで使用される Track Monitor API の例 :
トラックのポイントは5分間隔で記録され(APIはトラックの最後のポイントから5分間待機してから、新しいポイントを記録します)、トラックの現在のポイントと最後のポイントの間の最小距離が少なくとも500メートルの場合のみです 。 たとえば、ユーザーが500メートル以内に長時間留まる場合、トラックポイントモニターはこのエリアのトラックポイントを1つだけ記録します。
Track Point Monitor APIは、 Placeクラスに次のパラメーターを提供します。
- LengthOfStay-デバイスがこの場所にいた時間を示します。
- 位置 -トラックポイントの地理的位置。
- 半径は、場所の周りの円形領域の推定半径です。 この値の精度は、デバイスの使用方法や、セルタワーやWi-Fiアクセスポイントの存在などの環境要因など、さまざまな要因に依存します。
- タイムスタンプ -トラックポイントを修正する時間(5分の精度で提供)。
主な方法:
// RoutePoint routePoint = await routeTracker.GetPointAtAsync( DateTime.Now.AddHours( -1 ) ); // IList<RoutePoint> routePoints = await routeTracker.GetRouteAsync(DateTime.Now.AddHours( -1 ), TimeSpan.FromHours( 1 ) );
SensorCore SDKを使用する機能
SensorCore SDKの一部の機能は、他のデバイスサブシステムに依存しています。 また、デバイス内の対応する機器が利用できない場合、機能が利用できない場合があります。 また、情報を取得するあらゆる種類の方法が利用できる場合、機能が向上します。
次の表に依存関係を示します。
表からわかるように、加速度計は、ステップカウンターAPIとアクティビティモニターAPIの操作に不可欠です。
位置を決定する精度は、モバイルオペレーターの塔の数やWi-Fiアクセスポイントなどの環境要因にも依存します 。 特定の場所の中心は、500メートル以内の実際の場所からわずかにオフセットできます。これは、既知の場所が、場所を特定するために使用されたセルタワーに関連付けられているためです。
APIがナビゲーションアプリケーションに使用される場合、 GPSセンサーからのデータを使用して精度を向上させることができます。
おわりに
Lumia SensorCore SDKに関するこの記事では、実際に機能するアプリケーションでのAPIの主な機能と例をリストしました。
次のパートでは、デバイスの場所に応じて通知を送信するアプリケーションを開発します。新しいSDKの使用に関する推奨事項を考慮し、ダミーデータとAPIシミュレーターの生成と使用方法を説明します。
便利なリンク
Lumia SensorCore SDK:
Microsoft Virtual Academy(MVA)トレーニングコース
Windows開発センター
無料または試用版のVisual Studio 2013をダウンロードする