Uygulamanızı, kullanıcının ne zaman çalışmaya başladığını veya durduğunu tanımlayacak şekilde tasarlamanız gerekebilir. Yürüyüş, bisiklet veya araba kullanma gibi belirli bir aktivite. Örneğin, kilometre izleme uygulaması, bir kullanıcı araba kullanmaya başladığında mil izlemeye başlayabilir veya Mesajlaşma uygulaması, kullanıcı sürüşü durdurana kadar tüm görüşmelerin sesini kapatabilir.
Activity Recognition Transition API, yapılandırma verilerini içeren kullanıcı etkinliği. Uygulamanız, ilgilendiğiniz etkinliklerdeki geçişe abone oluyor Ayrıca API, uygulamanızı yalnızca gerektiğinde bilgilendirir. Bu sayfada, Activity Recognition Transition API, kısaca Transition API olarak da adlandırılır.
Projenizi oluşturun
Uygulamanızda Transition API'yi kullanmak için
Google Location and Activity Recognition API'si 12.0.0 veya sonraki bir sürüm ve
com.google.android.gms.permission.ACTIVITY_RECOGNITION
iznini belirtin
inceleyebilirsiniz.
- API'ye bağımlılık bildirmek için Google maven uygulamasına referans ekleyin
depolayıp tabloya bir uygulama girişi
Bağımlılıklara
com.google.android.gms:play-services-location:12.0.0
etkisi uygulamabuild.gradle
bölümüne ekleyin. Daha fazla bilgi için bkz. Kurulum Google Play Hizmetleri. com.google.android.gms.permission.ACTIVITY_RECOGNITION
özelliğini belirtmek için bir<uses-permission>
öğesini aşağıda gösterildiği gibi uygulama manifest'inde bulabilirsiniz:<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapp"> <uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" /> … </manifest>
Etkinlik geçişi güncellemelerine kaydolun
Etkinlik geçişleriyle ilgili bildirim almaya başlamak için şu:
-
ActivityTransitionRequest
etkinlik ve geçiş türünü belirten nesnedir. - Uygulamanızın aldığı geri çağırma:
PendingIntent
bildirimleri etkinleştirebilirsiniz. Daha fazla bilgi için Beklemedeki bir amaç ekleyebilirsiniz.
To
ActivityTransitionRequest
her nesne için bir liste oluşturmanız gerekir:
ActivityTransition
bildirim almak istediğiniz geçişi temsil eden nesneler
konu.
ActivityTransition
nesnesi aşağıdaki verileri içerir:
- Etkinlik türü olarak
DetectedActivity
sınıfını kullanır. Transition API aşağıdaki etkinlikleri destekler: - Şu geçiş türü:
ACTIVITY_TRANSITION_ENTER
veyaACTIVITY_TRANSITION_EXIT
. Daha fazla bilgi içinActivityTransition
sınıfını kullanır.
Aşağıdaki kodda ActivityTransition
nesnelerinden oluşan bir listenin nasıl oluşturulacağı gösterilmektedir:
Kotlin
val transitions = mutableListOf<ActivityTransition>() transitions += ActivityTransition.Builder() .setActivityType(DetectedActivity.IN_VEHICLE) .setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_ENTER) .build() transitions += ActivityTransition.Builder() .setActivityType(DetectedActivity.IN_VEHICLE) .setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_EXIT) .build() transitions += ActivityTransition.Builder() .setActivityType(DetectedActivity.WALKING) .setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_EXIT) .build()
Java
List<ActivityTransition> transitions = new ArrayList<>(); transitions.add( new ActivityTransition.Builder() .setActivityType(DetectedActivity.IN_VEHICLE) .setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_ENTER) .build()); transitions.add( new ActivityTransition.Builder() .setActivityType(DetectedActivity.IN_VEHICLE) .setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_EXIT) .build()); transitions.add( new ActivityTransition.Builder() .setActivityType(DetectedActivity.WALKING) .setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_EXIT) .build());
Web sitemiz g.co/newsinitiative/labs
üzerinden
ActivityTransitionRequest
nesnesini oluşturmak için ActivityTransitions
listesini
ActivityTransitionRequest
sınıfı, aşağıdaki örnekte gösterildiği gibi:
Kotlin
val request = ActivityTransitionRequest(transitions)
Java
ActivityTransitionRequest request = new ActivityTransitionRequest(transitions);
Şu örneğinizi ileterek etkinlik geçişi güncellemelerine kaydolabilirsiniz:
ActivityTransitionRequest
ve PendingIntent
nesneniz
requestActivityTransitionUpdates()
yöntemidir. requestActivityTransitionUpdates()
yöntemi,
Task
aşağıdaki kodda gösterildiği gibi başarılı veya başarısız olup olmadığını kontrol edebileceğiniz nesne
örnek:
Kotlin
// myPendingIntent is the instance of PendingIntent where the app receives callbacks. val task = ActivityRecognition.getClient(context) .requestActivityTransitionUpdates(request, myPendingIntent) task.addOnSuccessListener { // Handle success } task.addOnFailureListener { e: Exception -> // Handle error }
Java
// myPendingIntent is the instance of PendingIntent where the app receives callbacks. Task<Void> task = ActivityRecognition.getClient(context) .requestActivityTransitionUpdates(request, myPendingIntent); task.addOnSuccessListener( new OnSuccessListener<Void>() { @Override public void onSuccess(Void result) { // Handle success } } ); task.addOnFailureListener( new OnFailureListener() { @Override public void onFailure(Exception e) { // Handle error } } );
Etkinlik geçişi güncellemelerine başarıyla kaydolduktan sonra, uygulamanız
kayıtlı olan PendingIntent
içinde bildirim alır.
İşlem etkinliği geçiş etkinliklerini
İstenen etkinlik geçişi gerçekleştiğinde uygulamanız Intent
geri çağırması alır.
ActivityTransitionResult
nesne, Intent
öğesinden çıkarılabilir. Bu örnek,
ActivityTransitionEvent
nesneler'i tıklayın. Etkinlikler kronolojik olarak sıralanır (ör. bir uygulama
şunun için talep ediliyor:
IN_VEHICLE
etkinlik türü
ACTIVITY_TRANSITION_ENTER
ve
ACTIVITY_TRANSITION_EXIT
kullanıcı geçişten sonra bir ActivityTransitionEvent
nesnesi alır
kullanıcı başka bir etkinliğe
geçtiğinde başlıyor.
Bir BroadcastReceiver
alt sınıfı oluşturarak ve listeyi almak için onReceive()
yöntemini uygulayarak geri çağırma işleminizi uygulayabilirsiniz.
dönüşüm etkinlikleri anlamına gelir. Daha fazla bilgi için bkz.
Yayınlar. Aşağıdaki örnekte,
onReceive()
yöntemini uygulamak için:
Kotlin
override fun onReceive(context: Context, intent: Intent) { if (ActivityTransitionResult.hasResult(intent)) { val result = ActivityTransitionResult.extractResult(intent)!! for (event in result.transitionEvents) { // chronological sequence of events.... } } }
Java
@Override public void onReceive(Context context, Intent intent) { if (ActivityTransitionResult.hasResult(intent)) { ActivityTransitionResult result = ActivityTransitionResult.extractResult(intent); for (ActivityTransitionEvent event : result.getTransitionEvents()) { // chronological sequence of events.... } } }
Etkinlik geçişi güncellemelerinin kaydını silin
Etkinlik geçişi güncellemelerinin kaydını iptal etmek için
removeActivityTransitionUpdates()
yöntemindeki
ActivityRecognitionClient
ve PendingIntent
nesnenizi parametre olarak iletmek için
aşağıdaki örnekte gösterilmektedir:
Kotlin
// myPendingIntent is the instance of PendingIntent where the app receives callbacks. val task = ActivityRecognition.getClient(context) .removeActivityTransitionUpdates(myPendingIntent) task.addOnSuccessListener { myPendingIntent.cancel() } task.addOnFailureListener { e: Exception -> Log.e("MYCOMPONENT", e.message) }
Java
// myPendingIntent is the instance of PendingIntent where the app receives callbacks. Task<Void> task = ActivityRecognition.getClient(context) .removeActivityTransitionUpdates(myPendingIntent); task.addOnSuccessListener( new OnSuccessListener<Void>() { @Override public void onSuccess(Void result) { myPendingIntent.cancel(); } } ); task.addOnFailureListener( new OnFailureListener() { @Override public void onFailure(Exception e) { Log.e("MYCOMPONENT", e.getMessage()); } } );
Ek kaynaklar
Kullanıcı etkinliği tanıma API'si kullanımı hakkında daha fazla bilgi edinmek için aşağıdakileri görüntüleyin materyaller:
Örnekler
Kullanıcı etkinliğini tanımayla ilgili en iyi uygulamaları gösteren örnek.