Мне удалось вызвать паузу и возобновить функциональность рекордера с использованием 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
Надеется, что это помогает.
Я не думаю, что существует метод 'pauseRecord()', вам, вероятно, придется написать это самостоятельно либо как дополнительный плагин, либо взломать исходный плагин. Вы также можете использовать API Capture, чтобы открыть собственное приложение для записи звука на устройствах, которое, вероятно, будет иметь функцию pauseRecord: https://github.com/apache/cordova-plugin-media-capture/blob/master/doc/ index.md # capturecaptureaudio – MBillau
Мое требование приложения таково, что я не могу использовать собственный рекордер.Я должен использовать пользовательский интерфейс для рекордера, поэтому я использую Media API – madLokesh
. Думаю, вам придется создать свой собственный плагин, а затем расширить медиа-плагин. Хотя быстрый google-fu, по-видимому, указывает на то, что вы не можете приостановить/возобновить запись звука в Android по-своему в любом случае - не уверен в iOS. Возможно, вам нужно будет что-то выяснить, просто запустив/остановив запись. – MBillau