酢酸先生が教えてくれたよ!!ありがとう、酢酸先生!!
現在位置が欲しいので、更新が行われたらその時点でgeowatcher
を眠らせます。
Android2.3以降のAPIで、一回だけ位置情報の更新を行うってのがあったと思うけど、そんなイメージ。だって、追跡とか必要ないもんね!!
ただ、屋内なんかで利用した時に取得がうまくいかなかったなーなんて場合は、ユーザが任意で再取得できるようにするんだろうね、多分。
んで、コード。
positionchangerxc
var geoWatcher = new GeoCoordinateWatcher();
Observable.FromEvent<GeoPositionChangedEventArgs<GeoCoordinate>>(geoWatcher, "PositionChanged").ObserveOnDispatcher()
//位置情報だけクレ
.Select(ev => ev.EventArgs.Position.Location)
//場所が変わると呼ばれる
.Subscribe(location => {
//位置情報を使って何かやる
onLocationChanged(location);
//一回だけで良いわ
geoWatcher.Stop(); });
geoWatcher.Start();
Subscribe
が、何回も呼ばれるなんて知らなかった。
一回呼ばれたら、onCompleted
が発動するものと思ってた。
なんだかよくわかんないね!!
Rxに関して詳しく書いてる本があるなら教えて欲しいや・・・