Android TimerTask отключается, когда я открываю приложение - PullRequest
0 голосов
/ 06 мая 2020

Я пишу программу, надеюсь, она сможет захватить продолжительность удаленного mp3-плеера
и продолжительность может работать в таймере. Расписание, после mp3 Fini sh, она может перейти на другую песню и следующий просмотрщик.
это мой код:

TimerTask t4=new TimerTask() {
    @Override
    public void run() {
       int duration=0;
        url = "http://demo.akkyschool.com/mp3/"+filename[tmp];//filename[tmp] is st02_01.mp3
        mediaplayer.reset();
        try {
            mediaplayer.setDataSource(url);
            mediaplayer.getDuration();
            mediaplayer.prepare();
            duration=  mediaplayer.getDuration();

        } catch (IOException e) { }
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);

                        mediaplayer.reset();

                        try {viewflipper.addView(getImageView(draw[tmp]),tmp+1,params);
                            mediaplayer.setDataSource(url);
                            mediaplayer.prepare();
                            mediaplayer.start();
                        } catch (IOException e) { }
                        tmp++;
                        viewflipper.startFlipping();
                        if(tmp==5){tmp=0;}

                    }
                });
            }
        }, duration);
    }
};

Я не знаю, почему он отключился.

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nihon.aki2/com.nihon.aki2.Childstory}: java.lang.IllegalArgumentException
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: java.lang.IllegalArgumentException

спасибо.

1 Ответ

1 голос
/ 06 мая 2020

Первый
Если вы хотите продолжительность, вам нужно будет загрузить аудио, затем загрузите его в MediaPlayer

Второй
установить OnPreparedListener затем start звук в нем и getDuration тоже

 mediaplayer.setOnPreparedListener(new 
    MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
             // mp.start();
                duration = mp.getDuration();
            }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...