2010-09-25 4 views
4

J'essaie de très rapidement le port sur une application html avec le son de jeux (avec soundmanager2) à une application Android native en utilisant WebView. De mes recherches, je n'ai vu aucune preuve que le son, tel que les mp3, peut être joué via javascript ou toute autre méthode utilisant WebView.Android WebView lecture de l'audio avec javascript

Mon objectif est maintenant de transférer rapidement sur l'application html, puis éventuellement créer une application vraiment native sans utiliser WebViews. S'il vous plaît laissez-moi savoir si quelqu'un a été en mesure d'implémenter avec succès la lecture audio en utilisant WebViews et Javascript ou si ce n'est tout simplement pas possible en ce moment.

Merci.

+0

Je pense qu'une trouvé une solution agréable pour elle. Check this out: http://stackoverflow.com/a/40634355/3866399 –

Répondre

2

Jouez avec ceci:

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

Cela fonctionnerait-il pour vous?

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); 
      } 
     } 

    }); 

Si vous voulez vraiment utiliser Javascript, vous pouvez essayer avec document.open() ou quelque chose comme ça, je n'ai pas essayé, mais je suppose que cela fonctionnerait de la même façon. A propos, c'est le cas que vous voulez jouer cet audio en arrière-plan, si vous voulez montrer le joueur actuel, je pense que vous devez implémenter la vue par vous-même.

Et si vous envisagiez d'étiqueter html5, oubliez-le. AFAIK Froyo ne le supporte pas du tout. J'espère que cela aidera et il n'est pas trop tard.

Cordialement.

+0

J'essaie d'utiliser cela, mais je ne suis pas sûr de savoir quoi utiliser à la place de "WebViewVideo.this" – NassimPHP