0

あなたの援助をお勧めします。

Silverlight 8.1 を使用して GPS ベースのアラーム アプリをプログラムしています (Microsoft.Phone.Scheduler.Alarm API が WP 8.1 でブロックされているため)。今、GeofenceMonitor によってトリガーされる BackgroundTask を作成しようとしています。

私の問題は、BackgroundTask を「Windows ランタイム コンポーネント」プロジェクトに配置する必要があり、コンパイル ターゲットを Silverlight 8.1 に設定できないため、そこにアラームを作成できないことです。

回避策はありますか、または BackgroundTask からアラームを起動することは不可能ですか? すべての解決策に感謝します。

4

1 に答える 1

1

残念ながら、WinRT と WP8.1 Silverlight を混在させることはできません。

あなたが言及したように、Alarm API は WP では機能せず (「ユニバーサル」ではそれほど多くありません)、Silverlight ランタイムには GeofenceMonitor がありません。WinRT バックグラウンド タスクを使用して Silverlight プロジェクトを作成することはできますが、それではうまくいきません。

これらのアラームを場所に永続的に関連付けるか、短命にするかはわかりませんが、おそらくこれが解決策になるでしょう。

バックグラウンドで実行し続けるようにアプリを構成します。バックグラウンドで GPS 位置を追跡するアプリに使用できる専用の「LocationTracking」実行タイプがあります (詳細については、このサイトを参照してください)。

次に、PositionChangedイベントを使用しGeolocatorて、フェンス内にいるかどうかを確認し、(ほぼ) 即時のアラームを追加できます。

const string id = "whateverYourIdIs";
var existing = ScheduledActionService.Find(id);
if(existing != null)
   ScheduledActionService.Remove(id);

Alarm alarm = new Alarm(id)
{
   BeginTime = DateTime.Now.AddSeconds(1),
   Content = "You have reached your location!",
};

ScheduledActionService.Add(alarm);

アプリを実行し続けたくない場合は、(おそらく) ジオフェンシング バックグラウンド タスク (WinRT) 内から別のバックグラウンド タスク (SL) を起動できます。

于 2015-05-30T22:29:34.007 に答える