2010-09-25 342 views
4

我试图非常快速地通过播放声音(使用soundmanager2)将html应用程序移植到使用WebView的原生android应用程序。从我的研究中,我还没有看到任何证据表明可以通过JavaScript或使用WebView的任何其他方法播放诸如mp3之类的声音。使用javascript播放音频的Android WebView

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

请让我知道是否有人能够使用WebViews和Javascript成功实现播放音频,或者目前这是不可能的。

谢谢。

+0

我想为它找到一个很好的解决方法。检查了这一点: http://stackoverflow.com/a/40634355/3866399 – 2016-11-16 14:19:09

回答

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); 
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尝试()或类似的东西,我还没有试过这样,但我想它的工作方式相同。顺便说一下,这是你想要在背景上播放该音频的情况,如果你想展示真正的播放器,我认为你必须自己实现视图。

如果你正在考虑HTML5音频标签,忘记它。 AFAIK Froyo不以任何方式支持它。

我希望这可以帮助,而且还不算太晚。

问候。

+0

我想使用这个,但我不知道该怎么用,而不是“WebViewVideo.this” – NassimPHP 2017-08-21 16:17:16