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.setDataSource(url);//url为函数传入的音乐地址 mediaPlayer.prepare(); mediaPlayer.start(); } mediaPlayer.reset();
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技巧
原本打算用标签来实现音乐地址的获取,尝试一下不行,于是用到了
附录 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){ }
public void stopMusic(){ }
public void playMusic(String url){
if(mediaPlayer.isPlaying()){
mediaPlayer.reset(); if(mediaPlayer.isPlaying()){ }
mediaPlayer.stop(); this.context = context;
mediaPlayer = new MediaPlayer();
}
}
} try { }
mediaPlayer.setDataSource(url); mediaPlayer.prepare(); mediaPlayer.start(); e.printStackTrace(); e.printStackTrace(); e.printStackTrace();
} catch (IllegalArgumentException e) { } catch (IllegalStateException e) { } catch (IOException e) {
因篇幅问题不能全部显示,请点此查看更多更全内容