Синхронизация индикатора выполнения с таймером - PullRequest
1 голос
/ 06 декабря 2010

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

Я настроил таймер, и он приятно увеличивается в зависимости от длины аудиофайла, но мой ProgressBar не работает. Это дает мне NumberFormatException.

Мой код: класс MyCount расширяет CountDownTimer { private int mycount;

        public MyCount(long millisInFuture, long countDownInterval) 
        {
          super(millisInFuture, countDownInterval);
        }

        public void onFinish() 
        {
          //timeDisplay.setText("done!");
        }
        public void onTick(long millsIncreasing) 
        {

        mycount++;
        mystring = formatTime(mycount*1000);
        myText.setText(mystring); 
        pBar.setProgress(Integer.parseInt(mystring));  (*****)
        pBar.setProgress(1000 * pBar.getProgress());
        /*String myString1 = mystring.substring(0, mystring.lastIndexOf(":")).trim();
        String myString2 = mystring.substring(mystring.lastIndexOf(":")+1, mystring.length()).trim();*/

Я получаю Исключение на линии, где я показал Звезды на КРОНШТЕЙНЕ. Кто-нибудь, пожалуйста, помогите мне, Спасибо Дэвид

1 Ответ

2 голосов
/ 06 декабря 2010

Поскольку ваша функция возвращает строку «12:34» (с: в середине), которая не является числовым форматом, который может анализировать Integer.parse.

Вы должны сохранить переменную, которая будет содержать значение продолжительности файла (в секундах)

int fileLength

тогда в вашей функции:

public void onTick(long millsIncreasing) 
{
    int progress = (int)Math.round(millsIncreasing / fileLength) * 100;
    Bar.setProgress(progress);

это предполагает, что параметром millsIncreasing является мс. обработано до сих пор.

...