前提
本日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
package com.example.showtextonmapapp import android.Manifest import android.content.pm.PackageManager import android.location.Location import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.WindowManager.LayoutParams.* import android.widget.Toast import androidx.core.app.ActivityCompat import com.google.android.gms.location.FusedLocationProviderClient import com.google.android.gms.location.LocationCallback import com.google.android.gms.location.LocationResult import com.google.android.gms.location.LocationServices import com.google.android.gms.maps.CameraUpdateFactory import com.google.android.gms.maps.GoogleMap import com.google.android.gms.maps.OnMapReadyCallback import com.google.android.gms.maps.SupportMapFragment import com.google.android.gms.maps.model.LatLng import android.location.LocationRequest class MainActivity : AppCompatActivity(), OnMapReadyCallback { private lateinit var mMap: GoogleMap private val MY_PERMISSION_REQUEST_ACCESS_FINE_LOCATION = 1 private lateinit var fusedLocationProviderClient : FusedLocationProviderClient private lateinit var lastLocation: Location private var locationCallback : LocationCallback? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) //画面をスリープにしない window.addFlags(FLAG_KEEP_SCREEN_ON) // Obtain the SupportMapFragment and get notified when the map is ready to be used. val mapFragment = supportFragmentManager .findFragmentById(R.id.map) as SupportMapFragment mapFragment.getMapAsync(this) fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this) } override fun onMapReady(googleMap: GoogleMap) { mMap = googleMap checkPermission() } private fun checkPermission() { if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { myLocationEnable() } else { requestLocationPermission() } } private fun requestLocationPermission() { if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_FINE_LOCATION)) { //許可が拒否された場合 ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.ACCESS_FINE_LOCATION), MY_PERMISSION_REQUEST_ACCESS_FINE_LOCATION) } else { //許可も求めていない場合 ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.ACCESS_FINE_LOCATION), MY_PERMISSION_REQUEST_ACCESS_FINE_LOCATION) } } override fun onRequestPermissionsResult( requestCode: Int, permissions: Array<out String>, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) when(requestCode) { MY_PERMISSION_REQUEST_ACCESS_FINE_LOCATION->{ if (permissions.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) { //許可された myLocationEnable() } else { showToast("現在位置は表示できません") } } } } private fun myLocationEnable() { if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { mMap.isMyLocationEnabled = true val locationRequest = LocationRequest().apply { interval = 10000 fastestInterval = 5000 priority = LocationRequest.PRIORITY_HIGH_ACCURACY } locationCallback = object : LocationCallback() { override fun onLocationResult(locationResult: LocationResult?) { if (locationResult?.lastLocation != null) { lastLocation = locationResult.lastLocation val currentLatLng = LatLng(lastLocation.latitude, lastLocation.longitude) mMap.moveCamera(CameraUpdateFactory.newLatLng(currentLatLng)) textView.text = "Lat:${lastLocation.latitude}, Lng:${lastLocation.longitude}" } } } fusedLocationProviderClient.requestLocationUpdates(locationRequest, locationCallback, null) } } private fun showToast(msg: String) { val toast = Toast.makeText(this, msg, Toast.LENGTH_LONG) toast.show() } override fun onPause() { super.onPause() if (locationCallback != null) { fusedLocationProviderClient.removeLocationUpdates(locationCallback) } } }
まだ回答がついていません
会員登録して回答してみよう