繁体   English   中英

无法在Android中使用htts协议的网址播放mp3文件

[英]Cannot play a mp3 file from a url with htts protocol in android

我正在从包含https协议扩展名的URL播放mp3文件,我得到了Mediaplayer无法准备异常的信息,但是当我使用http协议时,代码运行良好

/ * *

                            import com.erkutaras.media.audio.url.R;

                            import android.app.Activity;
                            import android.media.MediaPlayer;
                            import android.media.MediaPlayer.OnBufferingUpdateListener;
                            import android.media.MediaPlayer.OnCompletionListener;
                            import android.media.MediaPlayer.OnPreparedListener;
                            import android.os.Bundle;
                            import android.os.Handler;
                            import android.util.Log;
                            import android.view.MotionEvent;
                            import android.view.View;
                            import android.view.View.OnClickListener;
                            import android.view.View.OnTouchListener;
                            import android.widget.Button;
                            import android.widget.SeekBar;

                            public class StreamAudioFromUrlSampleActivity extends Activity implements OnClickListener, OnTouchListener, OnCompletionListener, OnBufferingUpdateListener{
                                private Button btn_play,
                                btn_pause,
                                btn_stop;
                            private SeekBar seekBar;
                            private MediaPlayer mediaPlayer;
                            private int lengthOfAudio;
                            //  private final String URL = "http://android.erkutaras.com/media/audio.mp3";
                            private final String URL = "https://icanbeanything.com/en/Fearless/afraid-of-change.mp3";
                                private final Handler handler = new Handler();
                            private final Runnable r = new Runnable() { 
                            @Override
                            public void run() {
                            updateSeekProgress();   
                            }
                            };
                            /** Called when the activity is first created. */
                                @Override
                                public void onCreate(Bundle savedInstanceState) {
                                    super.onCreate(savedInstanceState);
                                    setContentView(R.layout.main);
                                    init();
                                }

                            private void init() {
                            btn_play = (Button)findViewById(R.id.btn_play);
                            btn_play.setOnClickListener(this);
                            btn_pause = (Button)findViewById(R.id.btn_pause);
                            btn_pause.setOnClickListener(this);
                            btn_pause.setEnabled(false);
                            btn_stop = (Button)findViewById(R.id.btn_stop);
                            btn_stop.setOnClickListener(this);
                            btn_stop.setEnabled(false);
                            seekBar = (SeekBar)findViewById(R.id.seekBar);
                            seekBar.setOnTouchListener(this);
                            mediaPlayer = new MediaPlayer();
                            mediaPlayer.setOnBufferingUpdateListener(this);
                            mediaPlayer.setOnCompletionListener(this);
                            }

                            @Override
                            public void onBufferingUpdate(MediaPlayer mediaPlayer, int percent) {
                            seekBar.setSecondaryProgress(percent);
                            }

                            @Override
                            public void onCompletion(MediaPlayer mp) {
                            btn_play.setEnabled(true);
                            btn_pause.setEnabled(false);
                            btn_stop.setEnabled(false);
                            }

                            @Override
                            public boolean onTouch(View v, MotionEvent event) {
                            if (mediaPlayer.isPlaying()) {
                            SeekBar tmpSeekBar = (SeekBar)v;
                            mediaPlayer.seekTo((lengthOfAudio / 100) * tmpSeekBar.getProgress() );
                            }
                            return false;
                            }

                            @Override
                            public void onClick(View view) {

                            try {
                            mediaPlayer.setDataSource(URL);
                            mediaPlayer.prepare();
                            lengthOfAudio = mediaPlayer.getDuration();
                            } catch (Exception e) {
                            Log.e("Error", e.getMessage());
                            }
                            switch (view.getId()) {
                            case R.id.btn_play:
                            playAudio();
                            break;
                            case R.id.btn_pause:
                            pauseAudio();
                            break;
                            case R.id.btn_stop:
                            stopAudio();
                            break;
                            default:
                            break;
                            }
                            updateSeekProgress();
                            }

                            private void updateSeekProgress() {
                            if (mediaPlayer.isPlaying()) {
                            seekBar.setProgress((int)(((float)mediaPlayer.getCurrentPosition() / lengthOfAudio) * 100));
                            handler.postDelayed(r, 1000);
                            }
                            }

                            private void stopAudio() {
                            mediaPlayer.stop();
                            btn_play.setEnabled(true);
                            btn_pause.setEnabled(false);
                            btn_stop.setEnabled(false);
                            seekBar.setProgress(0);
                            }

                            private void pauseAudio() {
                            mediaPlayer.pause();
                            btn_play.setEnabled(true);
                            btn_pause.setEnabled(false);
                            }

                            private void playAudio() {
                            mediaPlayer.start();
                            btn_play.setEnabled(false);
                            btn_pause.setEnabled(true);
                            btn_stop.setEnabled(true);
                            }


                            }

                                                    /////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////// /////////////////////////////

* /

如果您在Android 3.1之前的版本上进行开发

Android 3.1之前不支持HTTPS。

看到这个链接

Android支持的媒体格式

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM