Android WebView使用javascript播放音频

时间:2010-09-25 19:41:05

标签: javascript android audio webview

我正在尝试使用WebView将播放声音(使用soundmanager2)的html应用程序快速移植到本机Android应用程序。根据我的研究,我没有看到任何证据表明可以通过javascript或使用WebView的任何其他方法播放声音,例如mp3。

我现在的目标是快速移植html应用程序,然后最终创建一个真正的原生应用程序而不使用WebViews。

如果有人能够使用WebViews和Javascript成功实现播放音频,或者目前无法做到这一点,请告诉我。

谢谢。

2 个答案:

答案 0 :(得分:2)

这对你有用吗?

    mWebView.setWebViewClient(new WebViewClient(){
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (url.endsWith(".ogg")){
                Log.d(TAG, "Reproducir archivo OGG");
                Uri tempPath = Uri.parse(url);
                MediaPlayer player = MediaPlayer.create(WebViewVideo.this, tempPath);
                player.start();
                return true;
            }else{
                return super.shouldOverrideUrlLoading(view, url);
            }
        }

    });

如果你真的想使用Javascript,你可以尝试使用document.open()或类似的东西,我没有尝试过,但我想它会以同样的方式工作。

顺便说一下,你想在背景上播放音频,如果你想要显示实际的播放器,我认为你必须自己实现View。

如果您正在考虑使用html5音频标签,请忘掉它。 AFAIK Froyo不以任何方式支持它。

我希望这会有所帮助,现在还为时不晚。

问候。

答案 1 :(得分:2)

玩这个:

if(cm.message().contains("play sound")) {
    //String[] temp = cm.message().split("#");
    AudioManager audiomanager= (AudioManager) getSystemService(AUDIO_SERVICE);
    float actualvolume = (float) audiomanager.getStreamVolume (AudioManager.STREAM_MUSIC);
    float maxVolume= (float) audiomanager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
    float volume = actualvolume/maxVolume;

    if (loaded) {
        soundPool.play(soundID, volume, volume, 1, 54, 1f);
        Log.e("Test", "Played sound");
    }
} else if(cm.message().contains("stop sound")) {
    soundPool.stop(1);
    Log.e("Test","stoped");
}

myWebView.loadUrl("file:///android_asset/timer.html");
soundID = soundPool.load(this, R.raw.sound1,1);