Тег HTML5 не работает в Android Webview

тег HTML5 audio, похоже, не работает в веб-представлении, если исходный файл хранится локально. т. е.

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

он работает, когда файл доступен с сервера, такого как src="http://example.com/audio.mp3"

Я пробую его на Android ICS.

есть несколько обходных путей, как говорится здесь . Но я не понимаю, почему возникает эта проблема.

любые решения или идеи о том, почему это происходит?

спасибо.

2 ответов


это просто альтернативный способ достижения цели воспроизведения звука из html-файла

использовать Mediaplayer (http://developer.android.com/reference/android/media/MediaPlayer.html) Android для воспроизведения звука. вы можете вызвать функцию android из javascript, который вы написали в HTML-файле..

Это пример того, как вы можете вызвать функцию, написанную в файле java из кода 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>

таким образом вы вызываете аудио из Код Android.


это похоже на очень глупую ошибку внутри webview. Одним из обходных путей в настоящее время является "кодирование" аудио в виде файла mp4, а затем связать его с помощью тега видео.

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

при этом появится черный прямоугольник (без видео), а также элементы управления внутри. Это далеко не лучшее решение, но самое простое. Вы можете использовать Miro Video Converter на Mac и Windows, чтобы создать такой mp4.

удачи :)