2012年6月6日水曜日

位置情報の取得

現在位置を取得するサンプル


//起動時、画面復帰時に位置確認
//画面復帰時にも位置確認をするため、onCreateでなく、onResumeに書く
@Override
    public void onResume(){
    super.onResume();

         //ロケーションマネージャの設定
        LocationManager lm=(LocationManager)getSystemService(Context.LOCATION_SERVICE);
        //10秒ごとに10m変化を通知
        //GPSとネットワーク どちらでも可能。GPSの方が精度が高い
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,10000,10,this);
//     lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,10000,10,this);
//最新の位置情報を取得
        Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
getLoc(location,);
   }




//位置が変わったら再取得する
public void onLocationChanged(Location location) {
getLoc(location);
}

//位置情報取得有効化
public void onProviderEnabled(String provider) {

}
//位置情報取得無効化
public void onProviderDisabled(String provider) {
   showDialog(Activity.this,"Map","位置情報取得 無効");
       }

//位置情報状態変更
public void onStatusChanged(String provider,
   int status,Bundle extras) {

}



//位置確認
private void getLoc(Location location){

          if (location !=null){
      //緯度と経度の取得
double cLat = location.getLatitude();
double cLong = location.getLongitude();
          }else {
errDialog("現在位置が取得できませんでした。");
          }

}


@Override
public void onStart() {
   super.onStart();
}

@Override
public void onStop() {
   super.onStop();
   //ロケーションマネージャー停止
   lm.removeUpdates(this);
}

protected boolean isRouteDisplayed() {
   return false;
}


Manifestの設定


    //ネットワーク許可
  <uses-permission android:name="android.permission.INTERNET" />
  //GPS
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
  //エミュレータ用  
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>





0 件のコメント:

コメントを投稿