Возвращает длину в секундах трека, который будет воспроизведен с помощью AudioTrack - PullRequest
1 голос
/ 17 января 2011

Я пытаюсь повлиять на то, что есть у большинства медиаплееров, на способ отображения общего времени для звуковой дорожки, а также времени, в котором она находится в данный момент (которая увеличивается каждую секунду).Я уверен, что должен использовать темы, но я не уверен, как.У меня есть звуковая дорожка, сохраненная на SD-карте, и когда дело доходит до воспроизведения, все данные помещаются в короткий массив.

В идеале я также хотел бы иметь возможность показывать прогресс с помощью progressBar.Не думаю, что было бы огромным шагом от отображения его в TextViews до индикатора выполнения.Я осмотрелся в Интернете, и все примеры (как бы расплывчатые) я обнаружил, что использовал MediaPlayer, но, поскольку я использую audioTrack, мне кажется, это намного сложнее.В моем приложении нет никакого способа, которым я могу использовать MediaPlayer, чтобы делать то, что я хочу делать со звуком.

Кто-нибудь может мне помочь или указать мне правильное направление?

Ответы [ 2 ]

2 голосов
/ 20 января 2011

Поскольку никто не ответил, я использовал грубый метод, чтобы найти время в секундах звуковой дорожки. Зная, что я сам записал трек с настройками, которые я задал, я знал битрейт и тоже мог получить размер файла.

Итак, создайте объект File, а затем установите этот объект как файл в хранилище, чтобы получить время в секундах:

float time = (float)file.length()/22050/2;

Где, я думаю, 22050 - это частота дискретизации записи, а 2 - потому что она записана в стерео.

В любом случае, надеюсь, это поможет кому-нибудь в будущем, и поправьте меня, если я ошибаюсь, пожалуйста.

0 голосов
/ 11 февраля 2014

float time = (float) file.length () / Playsamplerate / 2;

2 для коротких байтов частота дискретизации должна быть той величиной, которую вы установили для воспроизведения на вашем объекте звуковой дорожки

...