Android için Yerler SDK'sını kullanarak bu yeri cihazın geçerli olarak bildirilen konumu. Yer örnekleri arasında yerel önemli noktaları ve coğrafi konumları gösterebilirsiniz.
İzinler
Kitaplığı kullanmak için uygulamanızın manifest dosyasında ek izinler beyan etmeniz gerekmez.
izin verdiğinden emin olun. Ancak, uygulamanızda
PlacesClient.findCurrentPlace()
çalışma zamanında konum izinleri istemeniz gerekir.
Uygulamanız PlacesClient.findCurrentPlace()
kullanmıyorsa şunu açıkça kaldırın:
ACCESS_FINE_LOCATION
ve ACCESS_COARSE_LOCATION
izinleri kullanıma sunuldu
aşağıdaki dosyayı manifest dosyanıza ekleyerek kitaplığa göre değerlendirebilirsiniz:
<manifest ... xmlns:tools="http://schemas.android.com/tools"> ... <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" tools:node="remove"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" tools:node="remove"/> ... </manifest>
hakkında daha fazla bilgi edinin izin verin ve Başlamak için EasyPermissions sayfasını ziyaret edin.
Geçerli konumu alma
Yerel işletmeyi veya cihazın şu anda bulunduğu başka bir yeri bulmak için aşağıdaki adımları izleyin:
ContextCompat.checkSelfPermission
numaralı telefonu arayın kullanıcının cihazına erişim izni verip vermediğini kontrol etmek için konum. Uygulamanız ayrıca kullanıcıdan izin isteyecek kod, ve sonucu işlemek için kullanır. Uygulama İzinleri İsteme konusuna bakın inceleyebilirsiniz.- Bir
FindCurrentPlaceRequest
oluşturun,Place.Field
içindenList
geçirerek uygulamanızın istemesi gereken yer veri türlerini gösterir. PlacesClient.findCurrentPlace()
numaralı telefonu arayın, önceki adımda oluşturduğunuzFindCurrentPlaceRequest
gerçekleştiriliyor adımına geçelim.PlaceLikelihood
listesini şuradan al:FindCurrentPlaceResponse
.
Alanlar, Yer Arama sonuçlarına karşılık gelir ve üç faturalandırma kategorisine ayrılır: Basic, Contact ve Atmosfer. Temel alanlar, taban ücretle faturalandırılır ve ek ücret ödemez. anlamına gelir. Kişi ve Atmosfer alanları daha yüksek ücretle faturalandırılır. Okuyucu Gelirleri Yöneticisi'ni Yer verisi isteklerinin nasıl faturalandırıldığı hakkında daha fazla bilgi edinmek için bkz. Kullanım ve Faturalandırma.
API,
FindCurrentPlaceResponse
Task
.
FindCurrentPlaceResponse
,
PlaceLikelihood
cihazın bulunabileceği yerleri temsil eden nesneler. Örneğin,
her yer ziyaret edildiğinde sonuç, çıkarımların yapılıp yapılmadığına dair
doğru yer. Bilinen bir yer yoksa liste boş olabilir
göre değişir.
Şu numarayı arayabilirsiniz:
PlaceLikelihood.getPlace()
almak için
Place
ve
PlaceLikelihood.getLikelihood()
için bir derecelendirme kullanabilirsiniz. Daha yüksek değer,
en iyi eşleşme olma olasılığını ölçer.
Aşağıdaki kod örneğinde, cihazın bulunduğu yerlerin listesini bulunur ve her bir yerin adını ve olasılığını günlüğe kaydeder.
Kotlin
// Use fields to define the data types to return. val placeFields: List<Place.Field> = listOf(Place.Field.NAME) // Use the builder to create a FindCurrentPlaceRequest. val request: FindCurrentPlaceRequest = FindCurrentPlaceRequest.newInstance(placeFields) // Call findCurrentPlace and handle the response (first check that the user has granted permission). if (ContextCompat.checkSelfPermission(this, permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { val placeResponse = placesClient.findCurrentPlace(request) placeResponse.addOnCompleteListener { task -> if (task.isSuccessful) { val response = task.result for (placeLikelihood: PlaceLikelihood in response?.placeLikelihoods ?: emptyList()) { Log.i( TAG, "Place '${placeLikelihood.place.name}' has likelihood: ${placeLikelihood.likelihood}" ) } } else { val exception = task.exception if (exception is ApiException) { Log.e(TAG, "Place not found: ${exception.statusCode}") } } } } else { // A local method to request required permissions; // See https://developer.android.com/training/permissions/requesting getLocationPermission() }
Java
// Use fields to define the data types to return. List<Place.Field> placeFields = Collections.singletonList(Place.Field.NAME); // Use the builder to create a FindCurrentPlaceRequest. FindCurrentPlaceRequest request = FindCurrentPlaceRequest.newInstance(placeFields); // Call findCurrentPlace and handle the response (first check that the user has granted permission). if (ContextCompat.checkSelfPermission(this, ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { Task<FindCurrentPlaceResponse> placeResponse = placesClient.findCurrentPlace(request); placeResponse.addOnCompleteListener(task -> { if (task.isSuccessful()){ FindCurrentPlaceResponse response = task.getResult(); for (PlaceLikelihood placeLikelihood : response.getPlaceLikelihoods()) { Log.i(TAG, String.format("Place '%s' has likelihood: %f", placeLikelihood.getPlace().getName(), placeLikelihood.getLikelihood())); } } else { Exception exception = task.getException(); if (exception instanceof ApiException) { ApiException apiException = (ApiException) exception; Log.e(TAG, "Place not found: " + apiException.getStatusCode()); } } }); } else { // A local method to request required permissions; // See https://developer.android.com/training/permissions/requesting getLocationPermission(); }
Olasılık değerleriyle ilgili notlar:
- Olasılık, göreceli olasılık sağlar bir kullanıcı için döndürülen yerler listesinde en iyi eşleşme olan tek istek. Farklı isteklerin olasılıklarını karşılaştıramazsınız.
- Olasılığın değeri 0,0 ile 1,0 arasında olur.
Örneğin, doğru yerin "Yer" olma ihtimalini% 55 göstermek için yanıtın iki üyeli, %35 olasılıkla B Yer ise A'yı 0,55 olasılığıyla, B yerini ise 0,35 olasılığıyla yerleştirin.
İlişkilendirmeleri uygulamanızda gösterme
Uygulamanız,
PlacesClient.findCurrentPlace()
Uygulama, ilişkilendirmeleri de göstermelidir. Dokümanları görüntüleyin:
ilişkilendirmeler.