Android Media Player: отображать слова в текстовом представлении из массива с интервалом в 1 секунду - PullRequest
0 голосов
/ 24 марта 2011

Я пытаюсь отобразить слова из массива с интервалом в 1 секунду. У меня есть следующие коды:

    final TextView tv = new TextView(this);

    setContentView(tv);

    final MediaPlayer mPlayer = MediaPlayer.create(this, R.raw.nicholas);

    try {
        mPlayer.prepare();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }






    mPlayer.start();
    tv.setText("Playing...");


    Thread thread = new Thread()
    {
        @Override
        public void run() {

            try {

                String words[] = {
                        "Nicholas ",// 0
                        "was ", // 1
                        "older ",// 2
                        "than ",// 3
                        "sin ",// 4
                        "and ",// 5
                        "his ",// 6
                        "beard ",// 7
                        "could ",// 8
                        "go ",// 9
                        "no ",// 10
                        "whiter. "// 11
                };

                int x = 0;
                while(x <= 11) {

                    sleep(1000);
                    tv.append(words[x]);
        x++;
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    };

    thread.start();

}

Но когда я запускаю его, я получаю это сообщение: Извините! Приложение ** неожиданно остановилось. Пожалуйста, попробуйте еще раз.

А также, как отобразить его текущую позицию воспроизведения.

Я новичок в Android Dev. Большое спасибо!

1 Ответ

0 голосов
/ 24 марта 2011

Вы не можете обновить пользовательский интерфейс (tv.append ()) из неосновного потока.Пожалуйста, используйте Обработчик , чтобы уведомить основной поток, чтобы обновить его.

EX,

mHandler.post(new Runnable(){
    public void run(){
        tv.append(words[x]);            
    }    
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...