Я называю ActivityRecognyClient.RequestActivityUpdates и получаю успех, но мой вещатель никогда не получает никаких намерений. Журналы активности не появляются даже после перемещения с устройством в течение 30–60. 36
[*]Google Play services: installed and up-to-date
[*]Libraries:
- play-services-location: 21.3.0
- play-services-base: 18.5.0
Физическая активность: разрешен < /li>
Уведомления (Android 13+): разрешен < /li>
< /ul>
< /li>
Оптимизация батареи: инвалид для приложения < /li>
. /> журналы < /h3>
Код: Выделить всё
ATS-MainActivity D 🚀 ===== STARTING ACTIVITY TRACKING =====
ATS-MainActivity D 🆕 Starting new BackgroundDetectedActivitiesService
ATS-MainActivity D ✅ Service start command sent
ATS-BackgroundDetectedActivitiesService D Foreground service started successfully
ATS-BackgroundDetectedActivitiesService D 🔍 ===== REQUESTING ACTIVITY UPDATES =====
ATS-BackgroundDetectedActivitiesService D ✅ Google Play Services available - requesting activity updates
ATS-BackgroundDetectedActivitiesService D 📋 requestActivityUpdatesButtonHandler Complete
ATS-BackgroundDetectedActivitiesService D ✅ requestActivityUpdatesButtonHandler Success
ATS-BackgroundDetectedActivitiesService D 🎯 Activity recognition is now active!
ATS-BackgroundDetectedActivitiesService D ⏰ Expecting updates every 3000ms
< /code>
После этого нет журналов из моего приемника. < /p>
Соответствующий код < /h3>
pendingintent + requestActivityUpdates: < /p>
private lateinit var mPendingIntent: PendingIntent
private lateinit var mActivityRecognitionClient: ActivityRecognitionClient
override fun onCreate() {
super.onCreate()
mActivityRecognitionClient = ActivityRecognition.getClient(this)
val intent = Intent(this, ActivityRecognitionReceiver::class.java)
mPendingIntent = PendingIntent.getBroadcast(
this,
1,
intent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_MUTABLE
)
requestActivityUpdates()
}
private fun requestActivityUpdates() {
val task = mActivityRecognitionClient.requestActivityUpdates(
MainActivity.DETECTION_INTERVAL_IN_MILLISECONDS,
mPendingIntent
)
task.addOnCompleteListener { /* logs success as shown above */ }
}
< /code>
Broadcastreceiver: < /p>
class ActivityRecognitionReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
if (ActivityRecognitionResult.hasResult(intent)) {
val result = ActivityRecognitionResult.extractResult(intent)
if (result != null) {
val most = result.mostProbableActivity
// ... log and broadcast to UI ...
} else {
Log.w(TAG, "Result is null")
}
} else {
Log.w(TAG, "ActivityRecognitionResult has no result")
}
}
}
< /code>
manifest (служба + приемник + разрешения): < /p>
< /code>
Служба переднего плана (уведомление создано и Startforeground, успешно называемое): < /p>
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val channel = NotificationChannel(CHANNEL_ID, CHANNEL_ID, IMPORTANCE_LOW)
(getSystemService(NOTIFICATION_SERVICE) as NotificationManager).createNotificationChannel(channel)
startForeground(1, NotificationCompat.Builder(this, CHANNEL_ID)
.setSmallIcon(android.R.drawable.ic_dialog_info)
.setContentTitle("Activity Recognition")
.setContentText("Running")
.build())
}
< /code>
Что я уже пробовал < /h3>
Обеспечить работу по потоку разрешения:
android.permission.Activity_Recognition объявлен и запрошен при выполнении (API 29+). (API 33+). < /Li>
< /ul>
< /li>
Подтвержденная доступность услуг воспроизведения перед запросом обновлений.android:exported="true"[*] Удаленный на уровне приемника Android: разрешение Требуется избежать блокировки. FLAG_MUTABLE .
[*] Инициализация клиента на ActivityRecoggonition.getClient (context) (новый API).
[*] Сервис переднего плана успешно работает с объявлением ForegroundServiceType и опубликовал уведомление. /> Протестировано во время физического движения (ходьба /наклонение) для> 60 -х годов. < /li>
Проверенный вход в систему onReceive < /code> - никогда не стреляет. Дополнительное требование на Android 13/14 для трансляций распознавания деятельности (например, конкретные намерения на приемнике) при использовании Broadcastreceiver PringingIntent от Google Play Services? Повысит ли переключение целевой цели на услугу надежности? com.google.android.gms.permission.activity_recognition на современных устройствах)?
Любые дополнительные пороговые значения движения, датчики или задержки с временем, которые мы должны учитывать перед первой доставкой? Broadcastreceiver PringingIntent будет высоко ценится.
Подробнее здесь: https://stackoverflow.com/questions/797 ... streceiver
Мобильная версия