100分求:通过webview的本地html5播放mp3问题。
nanke 2012-09-27 03:23:12 做了个APP,目的是通过webview的本地html页播放mp3.
第一种方法想用html5的<audio>
<audio controls="controls">
<source src="song.ogg" type="audio/ogg">
<source src="song.mp3" type="audio/mpeg">
Your browser does not support the audio element.
</audio>
结果是不播放。
第二种方法想用js调用一个负责mp3播放的类
布局文件main.xml
<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
html文件:index.html
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<script language="javascript">
var count=0;
function play(obj)
{
musicplayer.playMusic(obj.getAttribute("title"));
}
</script>
<a title="http://192.168.1.12/ebook/mp3/song.mp3" onClick="play(this);">播放</a>
</body></html>
Activity文件:
package www.gs.test23;
import www.gs.test23.R;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
private WebView myWebView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myWebView = (WebView) findViewById(R.id.webview);
myWebView.setWebViewClient(new WebViewClient());
myWebView.setVerticalScrollbarOverlay(true);
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
myWebView.getSettings().setAppCacheEnabled(false);
myWebView.getSettings().setSupportZoom(true);
myWebView.getSettings().setBuiltInZoomControls(true);
myWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);//
myWebView.addJavascriptInterface(new PlayMusicInterface(this), "musicplayer");
myWebView.loadUrl("file:///android_asset/index.html");
}
}
播放的java类:
package www.gs.test23;
import java.io.IOException;
import android.content.Context;
import android.media.MediaPlayer;
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();
}
}
}
结果是一点页面中的“播放”链接,就跳出了应用,也不报个错:(
高分求教!!!介是肿么了?