HTML5 <audio>标签在Android Webview中无法工作

6

如果音频文件存储在本地,HTML5音频标签似乎无法在Web视图中正常工作。

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

只有在像src="http://example.com/audio.mp3"这样从服务器访问文件时才能正常工作。

我正在尝试在Android ICS上使用它。

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

是否有任何解决方案或关于为什么会发生这种情况的见解?

谢谢。


尝试给出完整路径。 - magirtopcu
我尝试了给出完整路径,但它仍然不起作用。 - varun1505
文件的位置在哪里? - Vineet1982
将mp3文件放入html文件夹中,然后尝试它是否正常工作... - Vineet1982
没有@Vineet1982。那也不起作用。 我的文件位于“assets”文件夹中,我通过“file:///android_asset/my_file.html”访问它。 - varun1505
2个回答

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代码中调用音频的方法。

这是我最终所做的。使用了JavaScript接口,并从JavaScript中调用了函数。对于视频也是同样的做法。 - varun1505

1
这似乎是 Webview 中的一个非常愚蠢的 bug。目前的一种解决方法是将音频“编码”为 MP4 文件,然后通过视频标签进行链接。
<video width="100%" height="48" controls>
     <source src="audioonly.mp4" type="video/mp4">
</video>

这将显示一个黑色矩形(无视频),并且内部还有控件。这绝不是最好的解决方案,但是最简单的。您可以在Mac和Windows上使用Miro视频转换器创建这样的mp4文件。
祝好运 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接