HTML5 <audio>标记在Android Webview </audio>中无效

时间:2013-03-19 08:17:17

标签: android html5 webview html5-audio

如果源文件存储在本地,HTML5音频标记似乎在Web视图中不起作用。 即。

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

src="http://example.com/audio.mp3"

等服务器访问文件时,它可以正常工作

我在Android ICS上尝试它。

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

有关为何发生这种情况的任何解决方案或见解?

谢谢。

2 个答案:

答案 0 :(得分:2)

这只是改变从html文件播放音频的目标的方法

使用Android的Mediaplayer(http://developer.android.com/reference/android/media/MediaPlayer.html)播放音频。 你可以从你在HTML文件中编写的javascript中调用android的功能..

这是如何从javascript代码调用java文件中编写的函数的示例

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>

这样您可以从Android代码调用音频。

答案 1 :(得分:1)

这似乎是webview中一个非常愚蠢的错误。目前的一种解决方法是将音频“编码”为mp4文件,然后通过视频标签将其链接。

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

这将显示黑色矩形(无视频)以及内部控件。到目前为止,它不是最好的解决方案,而是最简单的方案。您可以在Mac和Windows上使用Miro Video Converter来创建这样的mp4。

祝你好运:)