Пакеты шагомера StepCountStream, прослушиваемые в службе переднего плана, не запускают onData, когда телефон находится вAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Пакеты шагомера StepCountStream, прослушиваемые в службе переднего плана, не запускают onData, когда телефон находится в

Сообщение Anonymous »

Я разрабатываю приложение Flutter, используя пакет шагомер для отслеживания шагов пользователя. Я также хочу подсчитывать шаги, когда приложение закрыто, поэтому я также использовал пакет flutter_background_service, чтобы использовать службу переднего плана на Android.
По сути, это моя настроить логику инициализации фоновой службы (которая в основном настроена на использование метода onStart, упомянутого ниже):

Код: Выделить всё

    Future initializeBackgroundService() async {
final service = FlutterBackgroundService();
await service.configure(
androidConfiguration: AndroidConfiguration(
onStart: onStart,
autoStart: true,
isForegroundMode: true,
notificationChannelId: 'my_foreground',
initialNotificationTitle: 'AWESOME SERVICE',
initialNotificationContent: 'Initializing',
foregroundServiceNotificationId: 888,
),
iosConfiguration: IosConfiguration(
autoStart: true,
onForeground: onStart,
onBackground: onIosBackground,
),
);
}
onStart метод (метод, вызываемый при запуске службы переднего плана):

Код: Выделить всё

    @pragma('vm:entry-point')
Future onStart(ServiceInstance service) async {
DartPluginRegistrant.ensureInitialized();
if (service is AndroidServiceInstance) {
service.on('setAsForeground').listen((event) {
service.setAsForegroundService();
});
service.on('setAsBackground').listen((event) {
service.setAsBackgroundService();
});
}
service.on('stopService').listen((event) {
service.stopSelf();
});
await activatePedometer(service);
}
И содержимое метода activatePedometer:

Код: Выделить всё

    Future activatePedometer(ServiceInstance service) async {
Stream pedometerStream = Pedometer.stepCountStream;
var subscription = pedometerStream.listen((stepCount) async {
print("STEP DATA LISTENED!!!");
}
Timer.periodic(const Duration(seconds: 1), (timer) async {
print('TIMER: ${DateTime.now()}!!!');
});
}
listen обратный вызов stepCountStream вызывается в следующих сценариях:
  • Когда приложение открыто
  • Когда приложение свернуто
  • Когда приложение закрыто
  • Когда отображается экран блокировки телефона
И, как вы можете видеть в коде, печатается "ШАГОВЫЕ ДАННЫЕ!!!" на консоли отладки.
Но когда телефон заблокирован и экран становится черным, этот обратный вызов не запускается, даже когда пользователь предпринимает шаги. Когда пользователь использует кнопку блокировки для отображения экрана блокировки, она срабатывает снова. Я хочу иметь возможность считывать данные о шагах, даже когда телефон находится в спящем режиме (заблокирован и экран черный).
Кто-нибудь сталкивался с подобной проблемой? Могу ли я что-нибудь сделать, чтобы обратный вызов прослушивания запускался, даже когда телефон находится в спящем режиме (заблокирован и экран черный)?
Устройство: Huawei P9 Lite
ОС: Android 7.0
Мне хотелось узнать, является ли это проблемой службы приоритета, поэтому я добавил следующее:

Код: Выделить всё

    Timer.periodic(const Duration(seconds: 1), (timer) async {
print('TIMER: ${DateTime.now()}!!!');
});
"TIMER: 2024-04-27 21:58:00.657213!!!" печатается каждую секунду, даже когда телефон заблокирован и экран становится черным. Так что это явно не проблема службы переднего плана.
Я также проверил, находится ли pedometerStream (в методе activatePedometer) в режиме Pause, и он не был приостановлен. .

Подробнее здесь: https://stackoverflow.com/questions/783 ... es-not-tri
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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