9201


お世話になっております。  
  
質問：Geofenceの結果を受け取る方法について教えてください。

前回、Geofenceについて教えていただき、下記のサンプルの改良品を動作できておりました。  
参考サイト  
<http://dev.classmethod.jp/smartphone/android/android-google-play-services-
location-api-geofencing/>

最近、次の改良に移ろうと動作確認を行ったところ、携帯の「ホームボタン」を押した際に誤動作を行うことがわかりました。  
「リターンキー」ではアプリは正常に動作しましたが、「ホームボタン」で画面を移動し再度アプリに戻った際、「onNewIntent」が動作し、「Geofence範囲外」でも処理してしまいます。  
原因は、製作時でも気になっていた「Geofence」以外の「Intent」を拾ったものと思っています。  
回避方法として、「onNewIntent」の勉強と「IntentService」の実装を試みています。  
  
現状説明  
「onNewIntent」：  
「GeofenceでのIntent」判定で最適な方法にたどりついておりません。  
最悪「if」で判定できないか？とも考えております。

「IntentService」：  
ReceiveTransitionsIntentService.javaを自動で制作。  
MainActivity.javaのpendingIntentを  
Intent intent = new Intent(self, MainActivity.class);  
から  
Intent intent = new Intent(self, ReceiveTransitionsIntentService.class);  
に変更。  
ReceiveTransitionsIntentService.javaのonHandleIntentで結果を受けようとしま したが動作できておりません。  
AndroidManifest.xmlには、  
android:name=".ReceiveTransitionsIntentService"  
android:exported="false" >  
が自動的に記載されております。

各項目でのアドバイス、または、Geofenceの結果を受け取り、処理するのに適した他の方法がありましたら、ご指摘いただけたら幸いです。


CC BY-SA 3.0
2015-04-15T07:39:29.707
9192
2015-04-15T11:36:00.270
8670
question
android google-maps google-play-service
Geofenceの結果を受け取る方法について教えてください。


`Intent`の`Action`を指定して、それで判断すればいいと思います。

適当な`Action`を作成

[code]

    private static final String ACTION_GEOFENCE_UPDATE = "intent.action.GEOFENCE_UPDATE";
    
[/code]

`Intent`が飛んできたところ

[code]

    if (ACTION_GEOFENCE_UPDATE.equals(intent.getAction())) {
        // Geofenceの処理
    }
    
[/code]

`Intent`を作るところ

[code]

    Intent intent = new Intent(・・・・・・);
    intent.setAction(ACTION_GEOFENCE_UPDATE);
    
[/code]


CC BY-SA 3.0
2015-04-15T11:36:00.270
9201
2015-04-15T11:36:00.270
8216
9192
answer