ActivityRecognyClient.RequestActivityUpdates добивается успеха, но Broadcastreceiver никогда не получает обновления (AndAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 ActivityRecognyClient.RequestActivityUpdates добивается успеха, но Broadcastreceiver никогда не получает обновления (And

Сообщение Anonymous »

Проблема < /h3>
Я называю 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
[*]Permissions granted in Настройки:

Физическая активность: разрешен < /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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»