Вот ситуация:
Пользователь что-то ищет.
- Звук оповещения воспроизводится, потому что на предмете, который он посмотрел, есть уведомление
- Пользователь закрывает уведомление - приложение продолжает получать информацию
- Пользователю отправлено сообщение, сообщающее, что информация закончила поиск
- Приложение начинает отправку определенных атрибутов в TextToSpeech
- Приложение обнаруживает второе уведомление, внутреннее уведомление о данных и отправляет другое предупреждение (texttospeech приостанавливается, а затем возобновляется после его завершения)
- Текст в речь закончен, воспроизводится еще один «динь», давая понять пользователю, что он прочитал все
В настоящее время мы используем очередь для упорядоченной обработки звуков, чтобы предотвратить наложение звуков. В настоящее время мы воспроизводим звук из очереди только при вызове события SoundAdded. Это пользовательское событие, которое мы создали, чтобы добавить в очередь звук. В настоящее время для каждого вызова мероприятия будет воспроизводиться только один звук. Мы столкнулись с проблемой, когда после воспроизведения определенных звуков они «блокируют» очередь, не позволяя обрабатывать дальнейшие звуки. Мы справились с этим, всегда «разблокируя» очередь, даже если не воспроизводится звук. Тем не менее, это все еще оставляет нас с проблемой того, что очередь будет подкреплена звуками для воспроизведения.
Единственный метод, который я могу придумать, чтобы решить эту проблему, это добавить петлю, чтобы продолжать пытаться воспроизвести звук, если звук все еще ждет воспроизведения. В настоящее время основной поток обработки звуков, возможно, мне нужно было бы перенести обработку звука в отдельный поток, но я не уверен, какой будет лучший способ обработки звука.
Итак ... мой вопрос ... Есть ли хорошая звуковая библиотека, которую мы можем использовать, которая включает событие для завершения звука. Или ... что было бы лучшим способом создать такую вещь?