MediaPlayer 'prepare();' problem

2020-07-29 15:47发布

When I use prepare(); on my mediaplayer, a black layout pops up till the mediaplayer is prepared.. I want to change that black screens layout, is that possible?

2条回答
混吃等死
2楼-- · 2020-07-29 16:05

prepare(); is a blocking operation, if you dont want to block your UI Thread use prepareAsync();. Or use prepare in another Thread

查看更多
\"骚年 ilove
3楼-- · 2020-07-29 16:23

Do all these thing in background thread until media player instance prepared the resource to play and show progress bar upto that time

 //progressDialog
    Thread th=new Thread(new Runnable() {
        @Override
        public void run() {
            MediaPlayer md=new MediaPlayer();
            try {
                md.setDataSource("Path");
                md.prepareAsync();
                md.start();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            //send message to handler
        }
    });
    th.start();
    //and then dissmiss dialog in handler class

Update

To know when media player will prepare

    md.setOnPreparedListener(new OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
        //Now your media player is ready to play    
        }
    });
查看更多
登录 后发表回答