2016-03-07 3 views
0

Я очень новый с Cordova, и я пытаюсь создать очень простое приложение для записи звука с смартфона.Запись звука с смартфона с помощью Cordova

Поэтому я добавил плагин cordova-plugin-media-capture с помощью VS 2015.
Затем скопировать/вставить this full example из док:

<head> 
<title>Capture Audio</title> 

<script type="text/javascript" charset="utf-8" src="cordova.js"></script> 
//I just remove the following line in MY code, I don't know what it corresponds 
<script type="text/javascript" charset="utf-8" src="json2.js"></script> 

<script type="text/javascript" charset="utf-8"> 
    // Called when capture operation is finished 
    function captureSuccess(mediaFiles) { 
     var i, len; 
     for (i = 0, len = mediaFiles.length; i < len; i += 1) { 
      uploadFile(mediaFiles[i]); 
     } 
    } 

    // Called if something bad happens. 
    function captureError(error) { 
     var msg = 'An error occurred during capture: ' + error.code; 
     navigator.notification.alert(msg, null, 'Uh oh!'); 
    } 

    // A button will call this function 
    function captureAudio() { 
     // Launch device audio recording application, 
     // allowing user to capture up to 2 audio clips 
     navigator.device.capture.captureAudio(captureSuccess, captureError, {limit: 2}); 
    } 

    // Upload files to server 
    function uploadFile(mediaFile) { 
     var ft = new FileTransfer(), 
      path = mediaFile.fullPath, 
      name = mediaFile.name; 

     ft.upload(path, 
      "http://my.domain.com/upload.php", 
      function(result) { 
       console.log('Upload success: ' + result.responseCode); 
       console.log(result.bytesSent + ' bytes sent'); 
      }, 
      function(error) { 
       console.log('Error uploading file ' + path + ': ' + error.code); 
      }, 
      { fileName: name }); 
    } 
</script> 
</head> 
<body> 
    <button onclick="captureAudio();">Capture Audio</button> <br> 
</body> 

Однако, когда я запускаю этот код и нажмите на кнопку "Capture Audio", у меня есть следующий результат:

capture.captureAudio fail

Я также следующее сообщение об ошибке в консоли:

missing exec:Capture.captureAudio

TypeError: emulator[service][action] is not a function
at module.exports.exec (ripple.js:41)
at _capture (capture.js:52)
at Capture.captureAudio (capture.js:71)
at captureAudio (index.html:60)
at HTMLButtonElement.onclick (index.html:91)

Я не очень понимаю, где проблема ...

Спасибо!

ответ

2

Вы пытаетесь протестировать свое приложение с эмулятором пульсаций, который является просто эмулятором и не имитирует все возможности устройства, такие как запись аудиофайла. См. Также this answer.

Попробуйте использовать реальное устройство для тестирования вашего приложения.

Редактировать: Я не уверен, может ли какой-либо эмулятор действительно захватывать звуки через ваше ПК-оборудование. Например, эмулятор Android не может.

The Android Emulator does not have the ability to capture audio, but actual devices are likely to provide these capabilities.

Взятые из adroid.developer.com MediaRecorder documentation

+1

Спасибо за ваш ответ. Знаете ли вы, может ли другой эмулятор (и какой?) Подключиться к микрофону моего ПК для имитации записи аудиофайла? – user2687153

+0

Я не совсем уверен, как я не пробовал ... Вам нужно будет проверить некоторые сообщения, например [это] (http://stackoverflow.com/questions/20090128/is-it-possible-to-record -actual-sound-on-the-simulator-using-mic) здесь на SO или даже лучше документация эмулятора, которую вы хотели бы использовать – Phonolog

Смежные вопросы