Android开发之在线播放器
By alephsoul
这节将介绍一个在线播放音乐的小程序,简单的介绍一下这个程序完成了什么,本程序通过访问已事先运行起来的一个web网站,通过该网站能看到几首音乐,点击“播放”就可以在本机上播放网络上的音乐,代码简单的很,不过我觉得这个创意还是不错滴~
为了能做出效果,我把用到的高级技术能裁剪的都裁剪掉了,下面用到的技术是完成这个项目的最小技术集。
1、 android媒体库里MediaPlayer类的使用//核心1
2、 android类库中的WebView的使用
3、 android中java和javascript的交互//核心2
4、 一丁点Web开发的知识(html,javascript)
下面是我做出来的几张效果图
·Tomcat服务器中应用程序的目录结构
·Chrome浏览器中浏览效果图
·android程序结构图
·Android中浏览效果图
注:点击上图中的“播放”就可以听到音乐了~
步骤:
1、 在tomcat中新建一个web项目,用作网络音乐网站
·在/apache-tomcat-6.0.29/webapps/下新建myWebSite目录
·在myWebSite下新建WEB-INF文件
·在WEB-INF下新建web.xml文件,内容与一般的web程序中类似
·在myWebSite下新建index.html文件,并拷如几个mp3文件
·index.html内容见附录,运行tomcat,访问应用,出现2图则成功
2、 在eclipse上新建一个android项目,用于实现播放网站上的音乐
·由于涉及到网络,在AndroidManifest.xml文件添加internet访问权限
·在main.xml文件中添加一个WebView控件
·编写一个用于播放音乐的类,该类将作为javascript接口
·在activity中获取WebView并设置属性
·运行程序….
核心代码:
1、 播放音乐
if(mediaPlayer.isPlaying()){
mediaPlayer.reset();
}
mediaPlayer.setDataSource(url);//url为函数传入的音乐地址
mediaPlayer.prepare();
mediaPlayer.start(); }
2、 WebView属性设置
this.webView = (WebView) this.findViewById(R.id.webView);
this.webView.getSettings().setJavaScriptEnabled(true);
this.webView.getSettings().setAppCacheEnabled(false);
this.webView.getSettings().setSupportZoom(true);
this.webView.getSettings().setBuiltInZoomControls(true);
this.webView.addJavascriptInterface(new PlayMusicInterface(this),
"musicplayer");
this.webView.loadUrl("http://10.16.32.17:8080/myWebSite/index.html");
3、 Html中的table技巧
原本打算用
标签来实现音乐地址的获取,尝试一下不行,于是用到了的title属性,这个属性原本用于鼠标移到上面显示的内容的,正好也可以用于存储音乐地址。
附录
Index.html
歌手 |
歌曲 |
播放 |
班得瑞 |
迷雾水珠 |
播放 |
班得瑞 |
龙的心 |
播放 |
班得瑞 |
其他 |
播放 |
班得瑞 |
遗失的爱 |
播放 |
班得瑞 |
迷雾水珠 |
播放 |
Main.xml
AndroidManifest.xml
OnlineMusic.java
package cn.edu.hfut.activity;
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.webkit.WebView;
import android.widget.MediaController;
import android.widget.VideoView;
public class OnlineMusic extends Activity {
private WebView webView = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getWidget();
}
public void getWidget(){
this.webView = (WebView) this.findViewById(R.id.webView);
this.webView.getSettings().setJavaScriptEnabled(true);
this.webView.getSettings().setAppCacheEnabled(false);
this.webView.getSettings().setSupportZoom(true);
this.webView.getSettings().setBuiltInZoomControls(true);
this.webView.addJavascriptInterface(new PlayMusicInterface(this), "musicplayer");
this.webView.loadUrl("http://10.16.32.17:8080/myWebSite/index.html");
}
}
PlayMusicInterface.java
package cn.edu.hfut.activity;
import java.io.IOException;
import android.content.Context;
import android.media.MediaPlayer;
import android.net.Uri;
import android.webkit.URLUtil;
import android.widget.Toast;
import android.widget.VideoView;
public class PlayMusicInterface {
private Context context = null;
private MediaPlayer mediaPlayer = null;
public PlayMusicInterface( Context context){
this.context = context;
mediaPlayer = new MediaPlayer();
}
public void stopMusic(){
if(mediaPlayer.isPlaying()){
mediaPlayer.stop();
}
}
public void playMusic(String url){
if(mediaPlayer.isPlaying()){
mediaPlayer.reset();
}
try {
mediaPlayer.setDataSource(url);
mediaPlayer.prepare();
mediaPlayer.start();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
进度条问有待解决
本文档为【android开发之在线播放器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
|