2010-09-25 341 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