2013-03-19 42 views
6

如果源文件存储在本地,则HTML5音频标签似乎无法在Web视图中使用。 即HTML5 <audio>标记在Android Webview中不起作用

<audio controls="controls"> 
    <source src="my_local_audio_file.mp3" type="audio/mpeg" /> 
</audio> 

当文件从服务器访问像src="http://example.com/audio.mp3"

我想它在Android ICS它的工作原理。

有几个解决方法如here所述。但我不明白为什么会出现这个问题。

任何解决方案或见解为什么发生这种情况?

谢谢。

+0

尝试给完整路径。 – magirtopcu 2013-03-19 09:04:11

+0

我试着给完整路径。它仍然不起作用。 – varun1505 2013-03-19 09:17:27

+0

该文件的位置是什么? – Vineet1982 2013-03-19 10:12:20

回答

2

这只是alternet的方式来实现目标,从Android的HTML文件

使用媒体播放器(http://developer.android.com/reference/android/media/MediaPlayer.html)播放音频播放音频。 你可以调用JavaScript中的Android,你已经写在HTML文件的功能..

这是例子如何从JavaScript代码

WebView webView = (WebView) findViewById(R.id.webview); 
webView.addJavascriptInterface(new WebAppInterface(this), "Android"); 
-------------------------------- 
public class WebAppInterface { 

    Context mContext; 
    /** Instantiate the interface and set the context */ 
    WebAppInterface(Context c) { 
     mContext = c; 
    } 

    /** Show a toast from the web page */ 
    @JavascriptInterface 
    public void showToast(String toast) { 
     Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); 
    } 
} 

--------------------------- 
java sript code 

<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" /> 

<script type="text/javascript"> 
    function showAndroidToast(toast) { 
     Android.showToast(toast); 
    } 
</script> 

调用java写的文件功能这样你调用来自Android代码的音频。

+0

来访问它,这是我最后做的。使用了一个javaScriptInterface并从javascript调用函数。我也为视频做了同样的事情。 – varun1505 2013-04-25 10:07:48

1

这看起来像是一个非常愚蠢的bug在web视图内。目前的一种解决方法是将音频“编码”为mp4文件,然后通过视频标签进行链接。

<video width="100%" height="48" controls> 
    <source src="audioonly.mp4" type="video/mp4"> 
</video> 

这将显示一个黑色矩形(没有视频信号),并且还内侧的控件。这是迄今为止最好的解决方案,但最简单。您可以在Mac和Windows上使用Miro Video Converter创建这样的mp4。

祝你好运:)