今天给大家介绍三种音乐多媒体播放的三种方式 ,虽然三种方式都可以播放音乐以及拖动进度条播放音乐,但是同时也表达了三种不同的技术。
第一种方式:还是详细的介绍下吧
直接上代码
布局代码(一般不提供的)
<SeekBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/seeBar"
android:layout_weight="1"
/>
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_media_play"
android:onClick="isPlayOrPause"
/>
写好以后再写onClick的方法
public void isPlayOrPause(View view){
final ImageButton imageButton= (ImageButton) view;
if(mediaPlayer==null){
//实例化Meadiaplay
//播放应用内
mediaPlayer = MediaPlayer.create(this, R.raw.love)
}
//监听:准备完成的监听
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
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{
//把图标修改为暂停的图标
imageButton.setImageResource(android.R.drawable.ic_media_pause);
}
}
写完这个以后再写一个Mythread类为了获取音乐播放的位置
class Mythread extends Thread{
@Override
public void run() {
super.run();
while(seekBar.getProgress()<=seekBar.getMax()){
//获取当前音乐播放的位置
int currentPosition= mediaPlayer.getCurrentPosition();
//让进度条动起来
seekBar.setProgress(currentPosition);
}
}
}
然后从布局文件中找到sessBar
seekBar = (SeekBar) findViewById(R.id.seeBar);
再设置它的拖动监听事件
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
//改变
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
@Override
//开始触摸
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
//结束触摸
public void onStopTrackingTouch(SeekBar seekBar) {
//获取拖动结束之后的位置
int progress=seekBar.getProgress();
//跳转到某个位置
mediaPlayer.seekTo(progress);
}
});
就这样第一种方式就写完了 可以实现从raw文件夹中读取音频文件了
第二种,其实第二种和第一种时候差不多的就是引音频路径不一样接下来我们需要做的就是把
mediaPlayer = MediaPlayer.create(this, R.raw.love);
用这种方式替换就可以了(这里注意文件路径要找对要不然给播放不起来了)
//播放内存卡中的音频文件
mediaPlayer=new MediaPlayer();
//设置类似
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
//设置音频
try {
mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/Music/a.mp3"));
//准备一下(内存卡)
mediaPlayer.prepare();
} catch (IOException e) {
e.printStackTrace();
然后记得配置清单文件
<!--读取内存卡的权限-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
第二种就完成了也可以拖动播放 只是音频位置不一样也是可以一样的实现
第三种用到的是网络音乐(其实网络音乐不麻烦麻烦的配置网络环境)
也是一样把
mediaPlayer = MediaPlayer.create(this, R.raw.love);
用这种方式替换(首先启动tomcat中的startup.bat,不能关闭这个窗口)打开cmd输入ipconfig找到局域网确保手机和电脑用的是同一网络
找到无线局域网中的IPv4地址 后面的数字(红色数字)放入对应的路劲中
//播放网络音乐
mediaPlayer.setDataSource(this, Uri.parse("http://192.168.43.135/a.mp3"));
//准备(网络)
mediaPlayer.prepareAsync();
然后就可以实现网络音乐了,主要是网络环境搭配麻烦其他的比较容易
同时也要记得配置清单文件
<!--联网的权限-->
<uses-permission android:name="android.permission.INTERNET"/>
PS: 三种都是播放音乐的三种方式,看个人喜欢就看哪种把总之就是用到了MediaPlayer实现的, 然后
final ImageButton imageButton= (ImageButton) view;
这个是用到了view相当于布局文件中的ImageButton小伙伴们看明白了,就讲到这里了,
走过路过不要忘记顶一下。