Я использую API осведомленности, чтобы определять, когда кто-то начинает движение, а когда кто-то прекращает движение. На самом деле я использую TransitionRequests, как показано ниже, где pendingIntent ссылается на широковещательный приемник, обрабатывающий начальную активную деятельность.
val activityTransitionRequest = ActivityTransitionRequest(listOf(ActivityTransition.Builder()
.setActivityType(DetectedActivity.IN_VEHICLE)
.setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_ENTER)
.build()))
ActivityRecognition.getClient(context).requestActivityTransitionUpdates(activityTransitionRequest, pendingIntent)
Мне интересно, есть ли хороший способ для насмешки или использования тестовой реализации некоторых сервисов или с помощью приложения с поддельным местоположением (использовался Lockito, который, похоже, не работал). На данный момент я не могу смоделировать extractResult для части ActivityTransitionResult.extractResult (intent). В приведенном ниже коде вы можете увидеть, чего я хочу достичь, но это на самом деле не имеет значения, я просто хочу иметь возможность имитировать «начало вождения».
AndroidInjection.inject(this, context)
super.onReceive(context, intent)
doAsync {
FenceHelper.askPermissions(context!!)
if (ActivityTransitionResult.hasResult(intent)) {
val location= locationService.getLocation()
if (location != null) {
val result = ActivityTransitionResult.extractResult(intent)
for (event in result!!.transitionEvents) {
doSomeRelatedStuff()
}
}
}
}