2014-04-23 2 views
0

Monaca.mobi를 사용하여 하이브리드 앱을 제작하고 있습니다. IOS 용 앱을 만들면 모든 것이 잘됩니다. 그러나 Android 기기 (Nexus 7) 용으로 제작하면 오디오가 재생됩니다. Monaca 디버거에서; 그러나 오디오는 정상적으로 작동합니다. 안드로이드 장치에 대해 내가 모르는 부분이 있습니까, 아마도 응용 프로그램의 일부 사용 권한?하이브리드 앱 : Android에서 오디오가 재생되지 않습니다.

사운드는 특정 버튼 클릭에서 호출되는 angularJS 기능을 통해 재생됩니다. 이 코드가 정확하다는 것을 알고 있습니다. 그냥 공유 할 수 있다고 생각했습니다.

function DontAsk($scope){ 
$scope.play = function(){ 
    var audio = new Audio(); 
     audio.src = 'sounds/DontEventAsk.mp3'; 
    audio.play(); 
}} 

감사 인사.

답변

1

위의 코드는 iOS에서만 작동합니다. Android의 경우 로컬 오디오 파일의 경로가 인식되지 않습니다. 다음 코드는 두 OS 모두에서 작동합니다. 이미 내장 된 앱으로 이미 테스트를 마쳤습니다.

$scope.play= function(){ 
    var os = navigator.platform; 
    if (os=='iPhone'){ 
     var url = "sounds/DontEventAsk.mp3"; 
    } 
    else{ 
     var url = getPhoneGapPath() + "sounds/DontEventAsk.mp3"; 
    } 
    var my_media = new Media(url, 
     // success callback 
     function() { 
      console.log("playAudio():Audio Success"); 
     }, 
     // error callback 
     function(err) { 
      console.log("playAudio():Audio Error: "+JSON.stringify(err)); 
    }); 

    // Play audio 
    my_media.play(); 
} 
+0

안녕하세요, 저는 이것을 구현했지만 여전히 iPhone에서만 작동하는 것 같습니다. 안드로이드에서이 함수를 호출하면 getPhoneGapPath()가 정의되지 않았기 때문에 Monaca 디버거에서 오류가 발생하지만, 앱을 빌드 할 때 사운드가 출력되지 않습니다. 성공한 구현을 나와 공유 할 수 있습니까? 감사합니다. Ben – benjipelletier

+0

[Here] (http://pastebin.com/W9ymw2UE)는 하나의 함수가 무엇인지 보여줍니다. iPhone에서 잘 작동하기 때문에이 함수에 문제가 있다고 생각하지 않습니다. – benjipelletier

+0

안녕하세요, 다시. 제 생각에는 getPhoneGapPath() 함수를 추가하는 것을 잊어 버렸을 수도 있습니다. 왜냐하면 함수에 내장 된 것처럼 보이지 않기 때문입니다. 이 올바른 기능입니까 : [이 질문에 대한 답변에 명시된] (http://stackoverflow.com/questions/11175489/ios-phonegap-media-object-how-do-i-access-a-resource-in- the-www-folder) – benjipelletier

1

큰 질문은 여기에 어떤 브라우저가 Monaca.mobi 앱에서 내부적으로 사용합니까? 기본 Android 브라우저는 HTML5가 필요한 오디오와 같은 최신 코덱을 지원하지 않는 것으로 유명합니다. 앱이 볼 수있는 일종의 플래그를 설정하는 것이 더 나을 것입니다. 그런 다음 브라우저를 사용하는 대신 사운드를 재생할 때 앱을 사용할 수 있습니다.

관련 문제