打开应用程序时,Android TimerTask关闭

时间:2020-05-06 07:01:08

标签: java android

我编写了一个程序,希望它可以抓住远程mp3媒体播放器的持续时间
和持续时间可以在timer.schedule中运行,mp3完成后,它可以更改为另一首歌曲和下一个viewflipper。
这是我的代码:

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 个答案:

答案 0 :(得分:1)

第一
如果需要持续时间,则需要下载音频,然后将其加载到MediaPlayer

第二
设置OnPreparedListener,然后start设置音频,也设置getDuration

 mediaplayer.setOnPreparedListener(new 
    MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
             // mp.start();
                duration = mp.getDuration();
            }
        });
相关问题