前提
本日Android Studioを触り始めた初心者です。
実現したいこと
リアルタイムで緯度、経度を取得しようとしています。
書籍のサンプルコードを参考にしていますが、エラーとなり、原因がわからないので教えて頂きたいです。
発生している問題・エラーメッセージ
Cannot access '<init>': it is private in 'LocationRequest'
Unresolved reference: interval
Unresolved reference: fastestInterval
Unresolved reference: priority
Unresolved reference: PRIORITY_HIGH_ACCURACY
Unresolved reference: textView
Variable expected
Type mismatch: inferred type is android.location.LocationRequest but com.google.android.gms.location.LocationRequest! was expected
該当のソースコード
kotlin
1package com.example.showtextonmapapp 2 3import android.Manifest 4import android.content.pm.PackageManager 5import android.location.Location 6import androidx.appcompat.app.AppCompatActivity 7import android.os.Bundle 8import android.view.WindowManager.LayoutParams.* 9import android.widget.Toast 10import androidx.core.app.ActivityCompat 11import com.google.android.gms.location.FusedLocationProviderClient 12import com.google.android.gms.location.LocationCallback 13import com.google.android.gms.location.LocationResult 14import com.google.android.gms.location.LocationServices 15 16import com.google.android.gms.maps.CameraUpdateFactory 17import com.google.android.gms.maps.GoogleMap 18import com.google.android.gms.maps.OnMapReadyCallback 19import com.google.android.gms.maps.SupportMapFragment 20import com.google.android.gms.maps.model.LatLng 21import android.location.LocationRequest 22 23class MainActivity : AppCompatActivity(), OnMapReadyCallback { 24 25 private lateinit var mMap: GoogleMap 26 private val MY_PERMISSION_REQUEST_ACCESS_FINE_LOCATION = 1 27 28 private lateinit var fusedLocationProviderClient : FusedLocationProviderClient 29 private lateinit var lastLocation: Location 30 private var locationCallback : LocationCallback? = null 31 32 override fun onCreate(savedInstanceState: Bundle?) { 33 super.onCreate(savedInstanceState) 34 setContentView(R.layout.activity_main) 35 36 //画面をスリープにしない 37 window.addFlags(FLAG_KEEP_SCREEN_ON) 38 39 // Obtain the SupportMapFragment and get notified when the map is ready to be used. 40 val mapFragment = supportFragmentManager 41 .findFragmentById(R.id.map) as SupportMapFragment 42 mapFragment.getMapAsync(this) 43 fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this) 44 } 45 46 override fun onMapReady(googleMap: GoogleMap) { 47 mMap = googleMap 48 49 checkPermission() 50 } 51 52 private fun checkPermission() { 53 if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { 54 myLocationEnable() 55 } else { 56 requestLocationPermission() 57 } 58 } 59 60 private fun requestLocationPermission() { 61 if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_FINE_LOCATION)) { 62 //許可が拒否された場合 63 ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.ACCESS_FINE_LOCATION), MY_PERMISSION_REQUEST_ACCESS_FINE_LOCATION) 64 } else { 65 //許可も求めていない場合 66 ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.ACCESS_FINE_LOCATION), MY_PERMISSION_REQUEST_ACCESS_FINE_LOCATION) 67 } 68 } 69 70 override fun onRequestPermissionsResult( 71 requestCode: Int, 72 permissions: Array<out String>, 73 grantResults: IntArray 74 ) { 75 super.onRequestPermissionsResult(requestCode, permissions, grantResults) 76 when(requestCode) { 77 MY_PERMISSION_REQUEST_ACCESS_FINE_LOCATION->{ 78 if (permissions.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 79 //許可された 80 myLocationEnable() 81 } else { 82 showToast("現在位置は表示できません") 83 } 84 } 85 } 86 } 87 88 private fun myLocationEnable() { 89 if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { 90 mMap.isMyLocationEnabled = true 91 val locationRequest = LocationRequest().apply { 92 interval = 10000 93 fastestInterval = 5000 94 priority = LocationRequest.PRIORITY_HIGH_ACCURACY 95 } 96 locationCallback = object : LocationCallback() { 97 override fun onLocationResult(locationResult: LocationResult?) { 98 if (locationResult?.lastLocation != null) { 99 lastLocation = locationResult.lastLocation 100 val currentLatLng = LatLng(lastLocation.latitude, lastLocation.longitude) 101 mMap.moveCamera(CameraUpdateFactory.newLatLng(currentLatLng)) 102 textView.text = "Lat:${lastLocation.latitude}, Lng:${lastLocation.longitude}" 103 } 104 } 105 } 106 fusedLocationProviderClient.requestLocationUpdates(locationRequest, locationCallback, null) 107 } 108 } 109 110 private fun showToast(msg: String) { 111 val toast = Toast.makeText(this, msg, Toast.LENGTH_LONG) 112 toast.show() 113 } 114 115 override fun onPause() { 116 super.onPause() 117 if (locationCallback != null) { 118 fusedLocationProviderClient.removeLocationUpdates(locationCallback) 119 } 120 } 121 122}
回答1件
あなたの回答
tips
プレビュー