0

2 つの緯度と経度に基づいて Google マップに道順を表示できるように、アプリのユーザーの場所を取得する必要があります。

ユーザーの GPS がオフになっている場合、GPS をオンにするかどうかをユーザーに尋ね、オンにするための設定をユーザーに提供できるようにする必要があります。

私は次のことを試みていますが、設定に直接移動します。ユーザーに連れ去られたいかどうかを尋ねる方法を知りたいです。

これを効率的に行うライブラリはありますか?ユーザーの緯度と経度を取得するためにそれを使用することをお勧めします。

4

2 に答える 2

2

位置情報サービスをオンにするために、設定ページに移動することに興味があるかどうかをユーザーに尋ねる方法を尋ねている場合は、単にダイアログを表示することをお勧めします。これが私のプロジェクトの例です:

// Presents dialog screen - location services
private void askLocationDialog(){
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);

    alertDialogBuilder.setTitle(R.string.snoox_use_location_services_dialog);

    // set dialog message
    alertDialogBuilder.setMessage(R.string.would_you_like_to_turn_your_location_services_on_)
    .setCancelable(false)
    .setPositiveButton(R.string.ok,new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog,int id) {
            // opens the setting android screen
            Intent settingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
            startActivity(settingsIntent);
        }
    })
    .setNegativeButton(R.string.no,new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog,int id) {
            dialog.cancel();
        }
    });

    // create alert dialog
    alertDialogBuilder.create().show();
}

完全な例に興味がある場合は、この投稿が役に立ちました: AndroidデバイスのGPSが有効になっているかどうかを確認するにはどうすればよいですか?

于 2013-01-24T19:40:53.950 に答える
1

いくつかのことを行う必要があります。

まず、Google マップを組み込むには、完全なリファレンスをここで入手できます。

簡単な手順:

1ここの手順に従ってください: これにより、簡単な Google マップが画面に追加されます。

2 自分の位置を取得できるようにするには、Android で LocationListener と LocationManager を使用する必要があります。これを行うには、最初に LocationListener をアクティビティに実装します。

public class LocationActivity extends Activity implements LocationListener

3 次に、onCreate() メソッドでいくつかの設定をインスタンス化する必要があります

     @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // Get the location manager
    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    // Define the criteria how to select the provider
    Criteria criteria = new Criteria();
    criteria.setAccuracy(Criteria.ACCURACY_FINE);
    provider = locationManager.getBestProvider(criteria, false);
    Location location = locationManager.getLastKnownLocation(provider);

    // Initialize the location fields
    if (location != null) {
      System.out.println("Provider " + provider + " has been selected.");
      onLocationChanged(location);
    } 
  }

4 定期的な位置情報の更新をリクエストできる必要があります。これを onResume() メソッドに含めます。

@Override
  protected void onResume() {
    super.onResume();
    locationManager.requestLocationUpdates(provider, 400, 1, this);
  }

5 アプリが一時停止サイクルに陥った場合、これらの更新を行う必要はありません。

@Override
  protected void onPause() {
    super.onPause();
    locationManager.removeUpdates(this);
  }

6 ステップ 2 のロケーション リスナーの実装では、onLocationChanged リスナーが必要です。実装します。

@Override   
public void onLocationChanged(Location location) {
int lat = (int) (location.getLatitude());
int lng = (int) (location.getLongitude());
}

7 GPS またはネットワークの 2 つの方法を追加して、位置設定のプロバイダーに通知します。

public void onProviderDisabled(String arg0) {
    Toast.makeText(this, "Disabled provider " + provider,
                Toast.LENGTH_SHORT).show();
}

public void onProviderEnabled(String arg0) {
    Toast.makeText(this, "Enabled new provider " + provider,
                Toast.LENGTH_SHORT).show();
}

8 次に、これを Google マップにリンクする必要があります。Google マップ API を使用して市場を生成し、現在地を表示できるようにする 1 つの例を紹介します。その他の使用法は、API から推測できます。

まず、コードにプライベート フィールドを作成します。

private GoogleMap mMap;
Marker m;

9 これらを onCreate メソッドに追加します。これにより、デフォルトのマーカー位置が緯度と経度 0,0 としてインスタンス化されます。

mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
                .getMap();
m = mMap.addMarker(new MarkerOptions().position(new LatLng(0, 0))
                .title("Position"));

10 onLocationChanged メソッドでは、場所が変更されたときにこのマーカーを更新する必要があります。したがって、次を追加します。

m.setPosition(new LatLng(lat, lng));
m.setTitle("Your Position");

// Move the camera instantly to marker with a zoom
// of 15.
                            mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(lat, lng), 15));

これは、マーカーを自分の位置で更新する簡単な方法であり、Android での Google マップと位置情報 API の良い紹介になるはずです。

GPS がオンになっているかどうかを検出するには、@Dror が提供する回答を使用できます:)

于 2013-01-24T19:54:23.817 に答える