2012-05-11 18 views
9

Hi ile çalışan ben bunu yapmak için aphoneGap kodu kullanılmaz:ses benim oyuna ses eklemeyi deneyin PhoneGap

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
         "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
    <head> 
    <title>Media Example</title> 

    <script type="text/javascript" charset="utf-8" src="js/phonegap-1.4.1.js"></script> 
    <script type="text/javascript" charset="utf-8"> 

    // Wait for PhoneGap to load 
    // 
    document.addEventListener("deviceready", onDeviceReady, false); 

    // PhoneGap is ready 
    // 
    function onDeviceReady() { 
     playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3"); 
    } 

    // Audio player 
    // 
    var my_media = null; 
    var mediaTimer = null; 

    // Play audio 
    // 
    function playAudio(src) { 
     // Create Media object from src 
     my_media = new Media(src, onSuccess, onError); 

     // Play audio 
     my_media.play(); 

     // Update my_media position every second 
     if (mediaTimer == null) { 
      mediaTimer = setInterval(function() { 
       // get my_media position 
       my_media.getCurrentPosition(
        // success callback 
        function(position) { 
         if (position > -1) { 
          setAudioPosition((position) + " sec"); 
         } 
        }, 
        // error callback 
        function(e) { 
         console.log("Error getting pos=" + e); 
         setAudioPosition("Error: " + e); 
        } 
       ); 
      }, 1000); 
     } 
    } 

    // Pause audio 
    // 
    function pauseAudio() { 
     if (my_media) { 
      my_media.pause(); 
     } 
    } 

    // Stop audio 
    // 
    function stopAudio() { 
     if (my_media) { 
      my_media.stop(); 
     } 
     clearInterval(mediaTimer); 
     mediaTimer = null; 
    } 

    // onSuccess Callback 
    // 
    function onSuccess() { 
     console.log("playAudio():Audio Success"); 
    } 

    // onError Callback 
    // 
    function onError(error) { 
     alert('code: ' + error.code + '\n' + 
       'message: ' + error.message + '\n'); 
    } 

    // Set audio position 
    // 
    function setAudioPosition(position) { 
     document.getElementById('audio_position').innerHTML = position; 
    } 

    </script> 
    </head> 
    <body> 
    <a href="#" class="btn large" 

    onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_- 
     _rockGuitar.mp3');">Play Audio</a> 
    <a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a> 
    <a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a> 
    <p id="audio_position"></p> 
    </body> 
    </html> 

iyi çalışıyor, ama sesin kaynağını değiştirdiğinizde burada olduğunu işe yaramadı kod:

playAudio("file:///android_asset/www/sounds/introDino.mp3"); 

herhangi bir fikir, peşin

cevap

7

teşekkür ederiz lütfen "/android_asset/www/sounds/introDino.mp3" için yolunu değiştirin ve her şey yoluna girecektir. Android için benim mini öğretici Oku:

http://simonmacdonald.blogspot.com/2011/05/using-media-class-in-phonegap.html

+0

Teşekkür ederim gerçekten benim günümüzü yaptım :)) –

+1

@ simon-macdonald: Göreli bir yol çalışması yapamadı, "./sounds/introDino.mp3" 'dan www/index.html ' – Hugolpz

2

Bu fonksiyon PhoneGap Medya API değilse fallback'e ile HTML5 Ses API varsa kullanarak ses çıkarır:

function playAudio(src) { 

    // HTML5 Audio 
    if (typeof Audio != "undefined") { 
     new Audio(src).play() ; 

    // Phonegap media 
    } else if (typeof device != "undefined") { 

     // Android needs the search path explicitly specified 
     if (device.platform == 'Android') { 
      src = '/android_asset/www/' + src; 
     } 

     var mediaRes = new Media(src, 
      function onSuccess() { 
       // release the media resource once finished playing 
       mediaRes.release(); 
      }, 
      function onError(e){ 
       console.log("error playing sound: " + JSON.stringify(e)); 
      }); 
     mediaRes.play(); 

    } else { 
     console.log("no sound API to play: " + src); 
    } 
} 
+1

Bu benim için çalışmıyor Android 4.2.2, 'typeof Audio! =" Undefined "' '' true' düzelir ve 'dosya açılamadı' ile oynayamaz '/android_asset/www/ticktock.mp3 '' Ancak, ses dosyası yolu doğru olsa bile hala başarısız olur. –

+0

@DavidHancock: Bir düzeltme tespit ettiniz ve çözümünüzü paylaşır mısınız? – Hugolpz

0

nedeniyle aslında o Ses Yeni Android sürümlerinde nesne (diğer platformlarda olabilir) kullanılabilir ve 'tanımsız' değil, önceki cevaplar işe yaramaz. Tüm önce 'medya' eklentileri aksi hiç bir şey çalışmaz cordova yapı 'cihaz' ve eklemek gerektiğini söylemeliyim Ayrıca

function playSound(src){ 
var devicePlatform = (typeof device !== 'undefined' && device.platform)? device.platform: null; 
if (typeof Audio !== "undefined" && devicePlatform === null) {   // HTML5 Audio 
    new Audio(src).play() ; 
} else if (devicePlatform) {    // Phonegap media 
if (devicePlatform === 'Android') {  // Android needs the search path explicitly specified 
    src = '/android_asset/www/' + src; 
} 
var media = new Media(src, 
function onSuccess() { 
    media.release();    // Release the media resource once finished playing 
}, 
function onError(e){ 
    console.log("error playing sound: " + JSON.stringify(e)); 
} 
); 
media.play({numberOfLoops: 1}); 
} else { 
    console.log("no sound API to play: " + src); 
} 
} 

: Ben kodu yükseltti. Eklentiler kullanılabilir here