Android演習

3.位置情報を取得する
(エミュレータでは位置情報をDDMSで与える)
Android APIキーを取得しておくこと。
【AndroidManifest.xml】
・・・
</activity>
<uses-library android:name="com.google.android.maps" />
</application>
<uses-permission android:name=
"android.permission.ACCESS_FINE_LOCATION" />
</manifest>>
B.関連クラス
クラス
概
要
android.location.Locationクラス
double getLatitude()
double getLongitude()
android.location.LocationManagerクラス
緯度を取得
経度を取得
requestLocationUpdates(String provider,
プロバイダ、最短更新時間、最短更新距離・
long mint, float mind,LocationListener I) リスなを登録
android.location.LocationListenerクラス
void onLocationChanged(Location location)
void onProviderDisabled(String provider)
void onProviderEnabled(String provider)
void onStatusChanged(String provider,
int status, Bundle ex)
位置情報が変更されたとき呼び出される
プロバイダが無効になったとき呼び出される
プロバイダが有効になったとき呼び出される
プロバイダの状態が変化したとき
呼び出される
C.プログラム例(その1)
package jp.getgp;
import com.google.android.maps.*;
import android.content.*;
import android.location.*;
import android.os.*;
import android.widget.*;
public class GetgpActivity extends MapActivity {
MapView mapV; LocationManager locM;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout LL=new LinearLayout(this);
LL.setOrientation(LinearLayout.VERTICAL);
setContentView(LL);
mapV=new MapView(this,"XXXXXXXXXXXXX");
mapV.setEnabled(true);
mapV.setBuiltInZoomControls(true);
MapController mapC=mapV.getController();
mapC.setZoom(12);
プログラム例(その2)
locM=(LocationManager) getSystemService(Context.LOCATION_SERVICE);
LL.addView(mapV);
}
public void onResume(){
super.onResume();
locM.requestLocationUpdates(LocationManager.GPS_PROVIDER,
0, 50, new getgpLocationListener());
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
class getgpLocationListener implements LocationListener{
public void onLocationChanged(Location arg0) {
// TODO 自動生成されたメソッド・スタブ
int latitude = (int)(arg0.getLatitude() *1000000);
int longitude = (int)(arg0.getLongitude()*1000000);
GeoPoint geoP=new GeoPoint(latitude,longitude);
mapV.getController().animateTo(geoP);
}
プログラム例(その3)
public void
//
}
public void
//
}
public void
//
}
}
}
onProviderDisabled(String arg0) {
TODO 自動生成されたメソッド・スタブ
onProviderEnabled(String arg0) {
TODO 自動生成されたメソッド・スタブ
onStatusChanged(String arg0, int arg1, Bundle arg2) {
TODO 自動生成されたメソッド・スタブ
D. 実行例(その1)
①エミュレータでは、メニューの「ウィンドウ(Window)」、「パースペクティ
ブを開く(Open Perspective)」、「その他(Others)」を選択し、「パース
ペクティブを開く(Open Perspective)」ダイアログから、「DDMS(Dalvic
Debug Monitor Server)」を選択し、「OK」ボタンをクリック。
実行例(その2)
②「Emulator Control」の「location Controls」の「マニュアル(Manual)」タ
ブで「Longitude」に経度を「Latitude」に緯度を入力して「送信」ボタンをク
リックすると、エミュレータの地図が変わっている。