Android三种路径的音乐播放,视频播放的两种方式

    xiaoxiao2021-03-25  30

    储存在不同路径中音乐有不同的获取方式,过程大同小异,结果当然是一样。但是它们最重要的不同点是什么呢

    一.应用内的音频文件与视频文件

     public void isPlayOrPause(View view){         final ImageButton imageButton= (ImageButton) view         if(mediaPlayer==null){             //实例化MediaPlayer             //播放应用内             //mediaPlayer = MediaPlayer.create(this, R.raw.love); mediaPlayer.start();             //把图标修改为暂停的图标               imageButton.setImageResource(android.R.drawable.ic_media_pause);             //获取音乐的总时长             int duration=mediaPlayer.getDuration();             //设置进度条的最大值为音乐的总时长               seekBar.setMax(duration);               new MyThread().start();                 }             });         }else if(mediaPlayer.isPlaying()){             mediaPlayer.pause();             //把图标修改为播放的图标             imageButton.setImageResource(android.R.drawable.ic_media_play);         }else{             mediaPlayer.start();             //把图标修改为暂停的图标             imageButton.setImageResource(android.R.drawable.ic_media_pause);         }     } 视频播放与音乐播放无甚大异,不过是多一个成像的控件设置,我们给它添加一个SurfaceView控件 mediaPlayer.setDisplay(sfv_main.getHolder());这是播放应用内的文件,内存内的文件也只是改一下它的文件路径 至于另一种播放视频的方式,也比较简单,不过所用布局的控件有所改变,这里用一个VideoView来装载影像 ,代码如下: //设置播放源 vv_video = (VideoView) findViewById(R.id.vv_video); vv_video.setVideoPath("填写储存路径即可"); //实例化媒体控制器 MediaController mediaController=new MediaController(this); vv_video.setMediaController(mediaController); mediaController.setMediaPlayer(vv_video); 二.手机内的音频文件 手机内得在清单文件中配置可阅读文件权限 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>  public void isPlayOrPause(View view){         final ImageButton imageButton= (ImageButton) view;         if(mediaPlayer==null){                       //播放内存卡中音频文件             mediaPlayer=new MediaPlayer();             //设置类型             mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);             //设置音源             try {              mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/Music/f.mp3"));                  //准备一下(内存卡)                mediaPlayer.prepare();             } catch (IOException e) {                 e.printStackTrace();             }                mediaPlayer.start();                     //把图标修改为暂停的图标                     imageButton.setImageResource(android.R.drawable.ic_media_pause);                     //获取音乐的总时长                     int duration=mediaPlayer.getDuration();                     //设置进度条的最大值为音乐的总时长                     seekBar.setMax(duration);                     new MyThread().start();         }else if(mediaPlayer.isPlaying()){             mediaPlayer.pause();             //把图标修改为播放的图标             imageButton.setImageResource(android.R.drawable.ic_media_play);         }else{             mediaPlayer.start();             //把图标修改为暂停的图标             imageButton.setImageResource(android.R.drawable.ic_media_pause);         }     } 三.网络上的音频文件 网络权限 <!-- 联网的权限 --> <uses-permission android:name="android.permission.INTERNET" />  public void isPlayOrPause(View view){         final ImageButton imageButton= (ImageButton) view;         if(mediaPlayer==null){             //实例化MediaPlayer                       //设置类型             mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);             //设置音源             try {           //播放网络音乐                 mediaPlayer.setDataSource(this, Uri.parse("http://192.168.43.135/internet.mp3"));                 //准备(网络)                 mediaPlayer.prepareAsync();             } catch (IOException e) {                 e.printStackTrace();             }             //监听:准备完成的监听             mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {                 @Override                 public void onPrepared(MediaPlayer mediaPlayer) {                     mediaPlayer.start();                     //把图标修改为暂停的图标                     imageButton.setImageResource(android.R.drawable.ic_media_pause);                     //获取音乐的总时长                     int duration=mediaPlayer.getDuration();                     //设置进度条的最大值为音乐的总时长                     seekBar.setMax(duration);                     new MyThread().start();                 }             });         }else if(mediaPlayer.isPlaying()){             mediaPlayer.pause();             //把图标修改为播放的图标             imageButton.setImageResource(android.R.drawable.ic_media_play);         }else{             mediaPlayer.start();             //把图标修改为暂停的图标             imageButton.setImageResource(android.R.drawable.ic_media_pause);         }     } 音乐播放器由一SeekBar作为展示,他的进度随着音乐的播放而前进,当我们对它拖拽时音乐也会相对应 的前进,这时就需要一个线程对它进行操作,同时需要监听到他当前位置   class MyThread extends Thread{         @Override         public void run() {             super.run();             while(seekBar.getProgress()<=seekBar.getMax()){                 //获取当前音乐播放的位置                 int currentPosition=mediaPlayer.getCurrentPosition();                 //让进度条动起来                 seekBar.setProgress(currentPosition);             }         }     }      seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {             @Override             public void onProgressChanged(SeekBar seekBar, int i, boolean b) {             }             @Override             public void onStartTrackingTouch(SeekBar seekBar) {             }             @Override             public void onStopTrackingTouch(SeekBar seekBar) {                 //获取拖动结束之后的位置                 int progress=seekBar.getProgress();                 //跳转到某个位置播放                 mediaPlayer.seekTo(progress);             }         });

    转载请注明原文地址: https://ju.6miu.com/read-200099.html

    最新回复(0)