У меня есть библиотека, которая записывает аудио в реальном времени и вычисляет данные FFT реального времени для аудио. Клиент должен вызвать метод запуска для начала записи и метод остановки для завершения записи.Дизайн библиотеки аудио/FFT
Мой вопрос дизайна касается наилучшего способа вернуть эти данные клиенту. Я рассмотрел следующие подходы:
- Имейте метод под названием , который клиент будет вызывать периодически после начала записи. Он вернется к размерным образцам аудио, или столько же данных, сколько доступно. Моя мысль заключается в том, что клиент будет запускать
AsyncTask
для периодического вызова дополнительных данных. Проблемы с этим подходом - это гораздо менее эффективный и более сложный для клиента, но он позволяет им больше контролировать, когда и сколько данных они получают. - Попросите клиента передать поток вывода в мой метод запуска, на который я просто отправлю данные, как только у меня получится. Это проще, но более ограничительно.
- Аналогично, вместо потока вывода, клиент переходит в какую-то структуру, такую как
ArrayList
, которая будет просто разделяться между нами и что я буду вводить данные. - Наконец, я подумал о том, что мой метод запуска возвращает выходной поток (или
ArrayList
аналогичным образом), который клиент только что прочитал.
С точки зрения клиента, который вы бы предпочли и почему? Или есть другие альтернативы, которые я полностью игнорирую? Любой вход был бы оценен, спасибо!