Λάβετε ειδοποιήσεις όταν Geocoder είναι έτοιμο για χρήση

ψήφοι
-1

Είμαι παρατηρώντας τη σύνδεση της συσκευής με τη χρήση ενός BroadcastReceiver. Εάν η συσκευή αλλάζει κατάσταση από την σύνδεση στο διαδίκτυο θα πρέπει να εκτελέσετε κάποια γεωκωδικοποίηση όπως στην παρακάτω κώδικα.

Το πρόβλημα είναι, ότι η γεωκωδικοποίηση αποτυγχάνει με: java.io.IOException: grpc failed.
Εάν η κλήση έχει καθυστερήσει κατά κάποιο τρόπο (π.χ. λόγω σημείο διακοπής) η geocoder φαίνεται να δουλεύουν μια χαρά.

Είναι ένας τρόπος για να ειδοποιηθείτε όταν το εκεί android.location.Geocoderείναι έτοιμο προς χρήση;

// in BroadcastReceiver:

init {
    context.registerReceiver(this, IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION))
}


override fun onReceive(context: Context?, intent: Intent?) {
    context?.let {
        val activeNetworkInfo = (context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager).activeNetworkInfo
        val isConnected = activeNetworkInfo != null && activeNetworkInfo.isConnected

        // if `isConnected` geocoding gets triggered
    }
}

// Geocoding
var coordinate: LatLng? = null

val address = arrayOf(
    location.street, location.streetNumber,
    location.zipCode, location.city,
    location.country
).joinToString( )

try {
    val geocoder = Geocoder(context)
    geocoder.getFromLocationName(address, 1).firstOrNull()?.let { result ->
        coordinate = LatLng(result.latitude, result.longitude)
    }
} catch (a: IOException) {
    coordinate = null
}

// do something with `coordinate`
Δημοσιεύθηκε 29/05/2018 στις 12:26
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

Λάβετε ειδοποιήσεις όταν Geocoder είναι έτοιμο για χρήση

ψήφοι
-1

Είμαι παρατηρώντας τη σύνδεση της συσκευής με τη χρήση ενός BroadcastReceiver. Εάν η συσκευή αλλάζει κατάσταση από την σύνδεση στο διαδίκτυο θα πρέπει να εκτελέσετε κάποια γεωκωδικοποίηση όπως στην παρακάτω κώδικα.

Το πρόβλημα είναι, ότι η γεωκωδικοποίηση αποτυγχάνει με: java.io.IOException: grpc failed.
Εάν η κλήση έχει καθυστερήσει κατά κάποιο τρόπο (π.χ. λόγω σημείο διακοπής) η geocoder φαίνεται να δουλεύουν μια χαρά.

Είναι ένας τρόπος για να ειδοποιηθείτε όταν το εκεί android.location.Geocoderείναι έτοιμο προς χρήση;

// in BroadcastReceiver:

init {
    context.registerReceiver(this, IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION))
}


override fun onReceive(context: Context?, intent: Intent?) {
    context?.let {
        val activeNetworkInfo = (context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager).activeNetworkInfo
        val isConnected = activeNetworkInfo != null && activeNetworkInfo.isConnected

        // if `isConnected` geocoding gets triggered
    }
}

// Geocoding
var coordinate: LatLng? = null

val address = arrayOf(
    location.street, location.streetNumber,
    location.zipCode, location.city,
    location.country
).joinToString(" ")

try {
    val geocoder = Geocoder(context)
    geocoder.getFromLocationName(address, 1).firstOrNull()?.let { result ->
        coordinate = LatLng(result.latitude, result.longitude)
    }
} catch (a: IOException) {
    coordinate = null
}

// do something with `coordinate`
Απαντήθηκε 29/05/2018 στις 12:26
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more