2014-01-27 4 views
4

Я делаю простой рекордер для iOS 5.0+ с использованием Media Media Cordova. Я предоставляю пользователю возможность запускать-приостанавливать-возобновлять запись аудио.Cordova 3.3 Запись паузы и возобновления с использованием Media API

три кнопки, которые я определены следующие

Start Recording

Остановить запись

Пауза/Возобновление записи

Я смог успешно начать & остановить запись. То, что я не могу сделать, это приостановить запись, а затем возобновить ее снова.

Я ссылался на Media API examples из Кордовы и использовал несколько как в моем коде.

Просьба помочь !!!

+0

Я не думаю, что существует метод 'pauseRecord()', вам, вероятно, придется написать это самостоятельно либо как дополнительный плагин, либо взломать исходный плагин. Вы также можете использовать API Capture, чтобы открыть собственное приложение для записи звука на устройствах, которое, вероятно, будет иметь функцию pauseRecord: https://github.com/apache/cordova-plugin-media-capture/blob/master/doc/ index.md # capturecaptureaudio – MBillau

+0

Мое требование приложения таково, что я не могу использовать собственный рекордер.Я должен использовать пользовательский интерфейс для рекордера, поэтому я использую Media API – madLokesh

+1

. Думаю, вам придется создать свой собственный плагин, а затем расширить медиа-плагин. Хотя быстрый google-fu, по-видимому, указывает на то, что вы не можете приостановить/возобновить запись звука в Android по-своему в любом случае - не уверен в iOS. Возможно, вам нужно будет что-то выяснить, просто запустив/остановив запись. – MBillau

ответ

9

Мне удалось вызвать паузу и возобновить функциональность рекордера с использованием Media API, расширив плагин Media API.

Ниже приводится решением того же:

ИСХОДНОЙ ЧАСТЬ MEDIA API PLUGIN

Добавьте следующие методы CDVSound.m

CDVSound.m

- (void)resumeRecordingAudio:(CDVInvokedUrlCommand*)command 
{ 
    NSString* mediaId = [command.arguments objectAtIndex:0]; 

    CDVAudioFile* audioFile = [[self soundCache] objectForKey:mediaId]; 
    NSString* jsString = nil; 

    if ((audioFile != nil) && (audioFile.recorder != nil)) { 
     NSLog(@"Resumed recording audio sample '%@'", audioFile.resourcePath); 
     [audioFile.recorder record]; 
     // no callback - that will happen in audioRecorderDidFinishRecording 
    } 
    // ignore if no media recording 
    if (jsString) { 
     [self.commandDelegate evalJs:jsString]; 
    } 
} 

- (void)pauseRecordingAudio:(CDVInvokedUrlCommand*)command 
{ 
    NSString* mediaId = [command.arguments objectAtIndex:0]; 

    CDVAudioFile* audioFile = [[self soundCache] objectForKey:mediaId]; 
    NSString* jsString = nil; 

    if ((audioFile != nil) && (audioFile.recorder != nil)) { 
     NSLog(@"Paused recording audio sample '%@'", audioFile.resourcePath); 
     [audioFile.recorder pause]; 
     // no callback - that will happen in audioRecorderDidFinishRecording 
    } 
    // ignore if no media recording 
    if (jsString) { 
     [self.commandDelegate evalJs:jsString]; 
    } 
} 

JAVASCRIPT ЧАСТЬ MEDIA API PLUGIN

Добавьте следующий код к Media.js файл под WWW папку org.apache.cordova.media.

не забудьте добавить код ниже Media.prototype.startRecord функция.

/** 
* Pause recording audio file. 
*/ 
Media.prototype.pauseRecord = function() { 
exec(null, this.errorCallback, "Media", "pauseRecordingAudio", [this.id]); 
}; 

/** 
* Resume recording audio file. 
*/ 
Media.prototype.resumeRecord = function() { 
exec(null, this.errorCallback, "Media", "resumeRecordingAudio", [this.id]); 
}; 

После того, как вы продлили плагин, вы просто должны вызвать nameOfRecorder .pauseRecord(); и имяOfRecorder .resumeRecord(); в соответствии с вашими потребностями и требованиями.

PS: Я использую Кордову 3.3 с XCode 5.0.2

Надеется, что это помогает.

+0

Спасибо, что так много. Очень полезно для таких учеников, как мой –

+1

Это действительно полезно для меня. btw есть решение для Android-плагина? –

+0

@WangYinXing Мне очень жаль, но я не пробовал на Android. Кроме того, я не занимаюсь гибридным развитием в течение последних нескольких месяцев. – madLokesh

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