android多媒体音乐(MediaPlayer)播放器制作代码
程序员文章站
2023-12-18 09:08:04
本文实例为大家分享了android多媒体音乐播放器的具体实现代码,供大家参考,具体内容如下
首先,在androidmanifest.xml中配置权限 ...
本文实例为大家分享了android多媒体音乐播放器的具体实现代码,供大家参考,具体内容如下
首先,在androidmanifest.xml中配置权限
<!-- 读取手机中的音乐 --> <uses-permission android:name="android.permission.read_external_storage" />
注释:android多媒体音乐的几种来源
1.在andriod的应用中
mediaplayer.create(this, r.raw.roar); //mnt/sdcard/手机内存卡
2.放在自己的sd卡中(内存卡)
mediaplayer.setdatasource(this, uri.parse("file://mnt/sdcard/1/123.mp3"));
3.在网络上(要知道哪个路径)
mediaplayer.setdatasource(this, uri.parse("http://192.168.43.202:8080/sister.mp3"));
接下来,在java代码中写
在oncreate方法中写全局变量:
private mediaplayer mediaplayer; private seekbar seekbar; private surfaceview sv_main_suffce; public void onplay(view view) throws ioexception { imagebutton = (imagebutton) view; if (mediaplayer==null){ //播放应用的音频文件 // mediaplayer = mediaplayer.create(this, r.raw.roar); //播放内存卡中的音频文件 mediaplayer=new mediaplayer(); //音频流的类型 mediaplayer.setaudiostreamtype(audiomanager.stream_music); //设置音频的来源 // mediaplayer.setdatasource(this, uri.parse("file://mnt/sdcard/1/roar.mp3")); // mediaplayer.prepare();//准备一下 //播放网络音乐 mediaplayer.setdatasource(this, uri.parse("http://192.168.43.202:8080/crickets.mp3")); //一步准备 mediaplayer.prepareasync(); //设置准备完的监听 mediaplayer.setonpreparedlistener(new mediaplayer.onpreparedlistener() { @override public void onprepared(mediaplayer mediaplayer) { //开始播放 mediaplayer.start(); //点击播放改变图标 imagebutton.setimageresource(android.r.drawable.ic_media_pause); //获取音乐的播放最大时间 int durtion=mediaplayer.getduration(); //设置进度条的最大值为音乐的播放最大时间 seekbar.setmax(durtion); new mythred().start(); } }); //给进度条设置一个事件 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); } }); } 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); } }
写了一个子线程 extends thread(seekbar进度条):
class mythrod extends thread{ @override public void run() { super.run(); while (seekbar.getprogress()<=seekbar.getmax()){ //获取音乐的当前播放位置 int currentposition=mediaplayer.getcurrentposition(); seekbar.setprogress(currentposition); } } }
另建一个类soundactivity,通过soundpool例化音频池可以实现多种声音一起播放
//实例化音频池 soundpool = new soundpool(4, audiomanager.stream_music,0); soundpool.setonloadcompletelistener(new soundpool.onloadcompletelistener() { @override public void onloadcomplete(soundpool soundpool, int i, int status) { //播放 soundpool.play(i,1,1,1,-1,1); } }); //写声音按钮的方法 public void playkfc(view view){ //音频池的路径 soundpool.load(this,r.raw.rooster,1); } public void playtwo(view view){ soundpool.load(this,r.raw.chimp,1); } public void playthree(view view){ soundpool.load(this,r.raw.crickets,1); } public void playfour(view view){ soundpool.load(this,r.raw.roar,1); } public void playdog(view view){ soundpool.load(this,r.raw.dogbark,1); } //销毁音频池soundpool @override protected void ondestroy() { super.ondestroy(); if(soundpool!=null){ //释放内存 soundpool.release(); soundpool=null; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。