您的当前位置:首页正文

android开发之在线播放器

2022-06-01 来源:意榕旅游网
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.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技巧

原本打算用标签来实现音乐地址的获取,尝试一下不行,于是用到了的title属性,这个属性原本用于鼠标移到上面显示的内容的,正好也可以用于存储音乐地址。

附录 Index.html

歌手歌曲播放
班得瑞迷雾水珠播放
班得瑞龙的心播放
班得瑞其他播放
班得瑞遗失的爱 播放
班得瑞迷雾水珠播放

Main.xml

xmlns:android=\"http://schemas.android.com/apk/res/android\" android:orientation=\"vertical\" android:layout_width=\"fill_parent\" android:layout_height=\"fill_parent\" >

android:layout_width=\"fill_parent\" android:layout_height=\"wrap_content\" android:orientation=\"horizontal\" > android:layout_width=\"wrap_content\" android:layout_height=\"wrap_content\" android:text=\"@string/setMedia\"

>

android:layout_width=\"fill_parent\" android:layout_height=\"fill_parent\" android:id=\"@+id/webView\"

>

AndroidManifest.xml

package=\"cn.edu.hfut.activity\" android:versionCode=\"1\" android:versionName=\"1.0\">

android:name=\"android.intent.category.LAUNCHER\" />

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) {