2017-04-06 12 views
1

私のAndroidアプリは機能的に現在の位置と画像をアプリに追加しました。あなたがアプリ内のあなたの追加された場所で100メートルに達すると、今私は警告したいです。手伝って頂けますか。ありがとう私はアラートが必要あなたのアプリに最近追加された場所(100m)に到達すると

+0

ようこそStackOverflow!質問を投稿する前に良い質問をする方法に関するユーザーのガイドラインをお読みください(ありがとう) –

答えて

0

ジオフェンスを作成して監視する必要があります。

ジオフェンスのリストを作成する:

まず、ジオフェンスのために所望の半径、持続時間、および遷移タイプを設定し、ジオフェンスを作成するGeofence.Builderを使用します。

Intent intent = new Intent(this, GeofenceTransitionsIntentService.class); 
// We use FLAG_UPDATE_CURRENT so that we get the same pending intent back when 
// calling addGeofences() and removeGeofences(). 
return PendingIntent.getService(this, 0, intent, PendingIntent. 
     FLAG_UPDATE_CURRENT); 

private GeofencingRequest getGeofencingRequest() { 
    GeofencingRequest.Builder builder = new GeofencingRequest.Builder(); 
    builder.setInitialTrigger(GeofencingRequest.INITIAL_TRIGGER_ENTER); 
    builder.addGeofences(mGeofenceList); 
    return builder.build(); 
} 

は、ジオフェンスの移行のためのテントを定義します。

mGeofenceList.add(new Geofence.Builder() 
    // Set the request ID of the geofence. This is a string to identify this 
    // geofence. 
    .setRequestId(entry.getKey()) 

    .setCircularRegion(
      entry.getValue().latitude, 
      entry.getValue().longitude, 
      Constants.GEOFENCE_RADIUS_IN_METERS 
    ) 
    .setExpirationDuration(Constants.GEOFENCE_EXPIRATION_IN_MILLISECONDS) 
    .setTransitionTypes(Geofence.GEOFENCE_TRANSITION_ENTER | 
      Geofence.GEOFENCE_TRANSITION_EXIT) 
    .build()); 

は、ジオフェンスと初期のトリガーを指定します。たとえば、リストオブジェクトの名前mGeofenceListを移入するにはジオフェンスを追加:

LocationServices.GeofencingApi.addGeofences(
      mGoogleApiClient, 
      getGeofencingRequest(), 
      getGeofencePendingIntent() 
    ).setResultCallback(this); 

ジオフェンス遷移ハンドル:

GeofenceTransitionsIntentServiceが意図からジオフェンシングイベントを取得し、ジオフェンス遷移(複数可)のタイプを決定し、トリガされた定義されたジオフェンスのかを決定します。その後、出力として通知を送信します。

public class GeofenceTransitionsIntentService extends IntentService { 
    ... 
    protected void onHandleIntent(Intent intent) { 
     GeofencingEvent geofencingEvent = GeofencingEvent.fromIntent(intent); 
     if (geofencingEvent.hasError()) { 
      String errorMessage = GeofenceErrorMessages.getErrorString(this, 
        geofencingEvent.getErrorCode()); 
      Log.e(TAG, errorMessage); 
      return; 
     } 

     // Get the transition type. 
     int geofenceTransition = geofencingEvent.getGeofenceTransition(); 

     // Test that the reported transition was of interest. 
     if (geofenceTransition == Geofence.GEOFENCE_TRANSITION_ENTER || 
       geofenceTransition == Geofence.GEOFENCE_TRANSITION_EXIT) { 

      // Get the geofences that were triggered. A single event can trigger 
      // multiple geofences. 
      List triggeringGeofences = geofencingEvent.getTriggeringGeofences(); 

      // Get the transition details as a String. 
      String geofenceTransitionDetails = getGeofenceTransitionDetails(
        this, 
        geofenceTransition, 
        triggeringGeofences 
      ); 

      // Send notification and log the transition details. 
      sendNotification(geofenceTransitionDetails); 
      Log.i(TAG, geofenceTransitionDetails); 
     } else { 
      // Log the error. 
      Log.e(TAG, getString(R.string.geofence_transition_invalid_type, 
        geofenceTransition)); 
     } 
    } 

詳細については、Creating and Monitoring Geofencesをこの公式ドキュメントでチェックしてください。

+0

私に完全なコードを与えることができます。 –

+0

サンプルコードがありません。しかし、その開発者のドキュメントを慎重に読んで、あなたは確かに実装についてのアイデアを得るでしょう。 –

-1

非常に簡単です。 Localistenerクラスを実装し、distanceTo関数を使用して距離を確認してから、notificationmanagerを使用します。私は実際に質問を正しく理解することはできません。場所の距離や他のものだけが必要なのですか...あなたははっきりとわかりますか?

+0

あなたはアプリ内で追加された場所に到達すると警告が欲しいです。例。アーメダバード空港をイメージにするよりも、アプリケーションにストアすることができます。今すぐあなたがポップアップアラート対話を必要とするよりも最も近い(約100メートル)空港アーメダバードに達する。私はあなたが私の質問を理解することを願って –

関連する問題