![](/img/trans.png)
[英]The first transition is always the same - Activity Recognition API - Activity Transition
[英]Testing Activity Recognition Transition API
我目前正在開發一個使用 Activity Recognition Transition API 的應用程序(新的,而不是舊的,請查看下面的鏈接)。 我的問題是,如何測試我的應用程序? 更確切地說,我怎樣才能“手動”觸發轉換事件? 我真的必須將手機和筆記本電腦放入背包並騎自行車去觸發 ON_BYCICLE/ACTIVITY_TRANSITION_ENTER 事件嗎? 必須有一個更簡單的方法:) 也許使用 adb? https://developer.android.com/studio/test/command-line
API 文檔:https ://developer.android.com/guide/topics/location/transitions
您可以使用以下代碼來模擬事件
var intent = Intent()
// Your broadcast receiver action
intent.action = BuildConfig.APPLICATION_ID + "TRANSITIONS_RECEIVER_ACTION"
var events: ArrayList<ActivityTransitionEvent> = arrayListOf()
// You can set desired events with their corresponding state
var transitionEvent = ActivityTransitionEvent(DetectedActivity.IN_VEHICLE, ActivityTransition.ACTIVITY_TRANSITION_ENTER, SystemClock.elapsedRealtimeNanos())
events.add(transitionEvent)
var result = ActivityTransitionResult(events)
SafeParcelableSerializer.serializeToIntentExtra(result, intent, "com.google.android.location.internal.EXTRA_ACTIVITY_TRANSITION_RESULT")
activity?.sendBroadcast(intent)
我在我的應用程序中創建了帶有兩個按鈕的簡單活動,我分別在其中廣播這些事件(開始和停止)。 這有助於我優雅地調試應用程序。
我不知道有什么方法可以從您的應用程序外部模擬轉換事件。 但是在您的應用程序中,您可以構建一個合適的Intent
並將其發送給您的接收器。
將此方法添加到任何Context
(例如Activity
或Service
):(Kotlin)
class MyService: Service() {
fun sendFakeActivityTransitionEvent() {
// name your intended recipient class
val intent = Intent(this, MyReceiver::class.java)
val events: ArrayList<ActivityTransitionEvent> = arrayListOf()
// create fake events
events.add(
ActivityTransitionEvent(
DetectedActivity.ON_BICYCLE,
ActivityTransition.ACTIVITY_TRANSITION_ENTER,
SystemClock.elapsedRealtimeNanos()
)
)
// finally, serialize and send
val result = ActivityTransitionResult(events)
SafeParcelableSerializer.serializeToIntentExtra(
result,
intent,
"com.google.android.location.internal.EXTRA_ACTIVITY_TRANSITION_RESULT"
)
this.sendBroadcast(intent)
}
}
將您想要的接收者替換為MyReceiver
- BroadcastReceiver
的任何子類都應該工作。
然后在需要時調用sendFakeActivityTransitionEvent()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.