MediaPlayer 使用prepareAsync的正确姿势

    mediaPlayer.reset();
                                        mediaPlayer.setDataSource(url);
//                                mediaPlayer.prepare();
                                        mediaPlayer.prepareAsync();

                                        mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    
    
                                            @Override
                                            public void onPrepared(MediaPlayer mp) {
    
    
                                                Log.e("wy", "onPrepared: ");
                                                mp.start();
                                            }
                                        });

全代码

    private MediaPlayer mediaPlayer = new MediaPlayer();
    if (url.contains("http")) {
    
    
//                             load = soundPool.load(url, 1);
                                    try {
    
    
                                        mediaPlayer.reset();
                                        mediaPlayer.setDataSource(url);
//                                mediaPlayer.prepare();
                                        mediaPlayer.prepareAsync();

                                        mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    
    
                                            @Override
                                            public void onPrepared(MediaPlayer mp) {
    
    
                                                Log.e("wy", "onPrepared: ");
                                                mp.start();
                                            }
                                        });
//                                mediaPlayer.start();

                                        mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
    
    
                                            @Override
                                            public boolean onError(MediaPlayer mp, int what, int extra) {
    
    
                                                Log.e("wy", "onError what: " + what + "  extra: " + extra);
                                                ToastUtils.showShortToast(context, context.getString(R.string.file_dismiss));
                                                animations.stop();
                                                return false;
                                            }
                                        });
                                        mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    
    
                                            @Override
                                            public void onCompletion(MediaPlayer mp) {
    
    
                                                Log.e("wy", "mediaPlayer 播放完成 onCompletion: ");
                                                animations.stop();
                                            }
                                        });
                                    } catch (Exception e) {
    
    
                                        Log.e("wy", "180 onClick: " + e.getMessage());
                                        e.printStackTrace();
                                    }
                                } else {
    
    
//                             load = soundPool.load("https:" + url, 1);
                                    try {
    
    
                                        mediaPlayer.reset();
                                        mediaPlayer.setDataSource(url);
                                        mediaPlayer.prepareAsync();
                                        mediaPlayer.start();
                                    } catch (Exception e) {
    
    
                                        e.printStackTrace();
                                    }
                                }

猜你喜欢

转载自blog.csdn.net/xiyangyang8110/article/details/126345207