I am trying to get the satellite information from the android and wrote this following code which is not giving any results, could any one point out why is it so?
GpsStatus.Listener is deprecated. You should use LocationListener and GnssStatus.Callback instead. Here following code:
import android.content.Context.LOCATION_SERVICE
import android.content.pm.PackageManager
import android.location.GnssStatus
import android.location.Location
import android.location.LocationListener
import android.location.LocationManager
...
class YourFragment : LocationListener {
private var mGnssStatusCallback : GnssStatus.Callback? = null
private lateinit var mLocationManager: LocationManager
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
mLocationManager = requireActivity().getSystemService(LOCATION_SERVICE) as LocationManager
mGnssStatusCallback = object : GnssStatus.Callback() {
override fun onStarted() {
Log.e(TAG, "GnssStatus.Callback onStarted")
super.onStarted()
}
override fun onSatelliteStatusChanged(status: GnssStatus?) {
Log.e(TAG, "GnssStatus.Callback Status: ${status?.toString()}")
super.onSatelliteStatusChanged(status)
}
override fun onStopped() {
Log.e(TAG, "GnssStatus.Callback onStopped")
super.onStopped()
}
override fun onFirstFix(ttffMillis: Int) {
Log.e(TAG, "GnssStatus.Callback onFirstFix $ttffMillis")
super.onFirstFix(ttffMillis)
}
}
if (ActivityCompat.checkSelfPermission(
requireContext(),
Manifest.permission.ACCESS_FINE_LOCATION
) != PackageManager.PERMISSION_GRANTED
) {
return
}
mGnssStatusCallback?.let {
mLocationManager.registerGnssStatusCallback(it)
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 30000, 0F, this)
}
}
override fun onDestroyView() {
mLocationManager.removeUpdates(this)
mGnssStatusCallback?.let {
mLocationManager.unregisterGnssStatusCallback(it)
}
super.onDestroyView()
}
override fun onLocationChanged(location: Location?) {
Log.e(TAG, "onLocationChanged new Location: ${location.toString()}")
}
override fun onStatusChanged(p0: String?, p1: Int, p2: Bundle?) {
Log.e(TAG, "onStatusChanged p0 ${p0 ?: "null"} - p1 ${p1}")
}
override fun onProviderEnabled(p0: String?) {
Log.e(TAG, "onProviderEnabled p0 ${p0 ?: "null"}")
}
override fun onProviderDisabled(p0: String?) {
Log.e(TAG, "onProviderDisabled p0 ${p0 ?: "null"}")
}
}
Note: I have observed that the GnssCallback may arrive in some minutes after you request for Location update.