#audio #mobile #dart #flutter #background-process
#Аудио #Мобильный #дротик #flutter #фоновый процесс #dart
Вопрос:
Я внедряю приложение в Flutter, для которого мне нужно заранее запланировать (аудио) события. Только после завершения одного события я могу запланировать следующее, поскольку продолжительность события может быть неизвестна ранее. Каждое звуковое событие является звуковым уведомлением для пользователя, поэтому планирование и воспроизведение звука должны работать, когда приложение не сфокусировано или телефон заблокирован.
В настоящее время мне не удается реализовать эти спецификации, и я думаю, что на данный момент я просто не думаю об этом правильно. Поскольку я недавно начал изучать Flutter, с моей стороны также могли возникнуть простые недоразумения. Позвольте мне обобщить то, что я знаю о фоновом выполнении и машинном коде в Flutter, пожалуйста, исправьте все ошибки в этих утверждениях:
- Когда приложение теряет фокус (или телефон блокируется), выполнение кода прекращается.
- Однако внутри «основного» Dart-кода я могу создать изоляцию, которая будет работать даже при заблокированном телефоне или без фокусировки на приложении.
- Разные изолированные устройства вообще не используют общую память; они обмениваются данными через порты.
- Там созданный изолят ничего не знает об экосистеме flutter, поэтому использовать плагины flutter невозможно.
- По тем же причинам я также не могу использовать
MethodChannels
для связи с кодом платформы из изолята.
Из этого я делаю вывод:
- Событие должно быть запланировано из отдельного Dart-isolate, чтобы блокировка телефона не остановила планирование.
- Этот изолированный файл не сможет воспроизводить какой-либо аудиофайл сам по себе и не сможет взаимодействовать с кодом платформы.
- Таким образом, ему необходимо взаимодействовать с основным изолятом, который может воспроизводить аудио. Однако, если приложение не открыто, код не будет отвечать.
- Следовательно, этот подход не может работать?
Прямо сейчас я застрял на этом этапе и не знаю, как продолжить. Я предполагаю, что одним из вариантов может быть прямой вызов java / swift-кода для соответствующих собственных платформ и обработка планирования и звука там. Тем не менее, я надеюсь, что прямо сейчас я просто не вижу более простого варианта.
Комментарии:
1. Вы нашли решение?
2. @PaulSumpner Нет, но я также не использовал Flutter в прошлом году: ‘D В последний раз, когда я его использовал, для этого разрабатывались многообещающие пакеты, но я не знаю текущей ситуации