diadia

興味があることをやってみる。自分のメモを残しておきます。

指定した緯度、経度を地図に表示させる

 

Intentオブジェクトを生成して、地図のURIを渡してやれば地図を表示することができる。uriの構成は、"geo:緯度,経度"であるのでintent=Intent(Intent.ACTION_VIEW, uri)でIntentオブジェクトを生成することができる。

    
//緯度、経度をもとにURI文字列を作成する    
val uriStr = "geo:${_latitude},${_longitude}"
//URIオブジェクトを生成する
val uri = Uri.parse(uriStr)
//Intentオブジェクトを生成
val intent = Intent(Intent.ACTION_VIEW, uri)
//アクティビティを起動する
startActivity(intent)

//LocationManagerオブジェクトを取得する
val locationManager = getSystemService(Context.LOCATION_SERVICE) as LocationManager

val locationListener = GPSLocationListener()

//位置情報の更新
locationManager.requestLocationUpdates(locationManager.GPS_PROVIDER, 0, Of, locationListener)
GPSの機能を利用するために許可を与える

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

https://developer.android.com/reference/kotlin/android/Manifest.permission.html#ACCESS_FINE_LOCATION:kotlin.String

permissonの許可をユーザーに聞かないといけない件

androidのアプリでは、マニフェストファイルにpermisson許可を与える記述に加えて、ユーザーにpermisson許可を得る必要があるようだ。
そこでonCreateメソットでまずアプリの許可がされているかまず確認する。そして許可が得られていない場合には、許可を得るロジックを記述する必要がある。
アプリの許可がされているかどうかを確認する方法はActivityCompat.checkSelfPermisson()メソッドを使う。メソッドの引数は2つある。applicationContextとManifest.permission.ACCESS_FINE_LOCATIONである。ちなみにACCESS_FINE_LOCATIONはマニフェストファイルに記述したキーワードである。
戻り値はPERMISSION_GRANTED又はPERMISSION_DENIEDが返される。