diff --git a/config.xml b/config.xml
index 800051a32..fe4e37ebe 100644
--- a/config.xml
+++ b/config.xml
@@ -196,11 +196,6 @@
-
-
-
-
-
diff --git a/package-lock.json b/package-lock.json
index b0bb0809c..71817b7fc 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -4167,21 +4167,6 @@
}
}
},
- "@ionic-native/media": {
- "version": "5.36.0",
- "resolved": "https://registry.npmjs.org/@ionic-native/media/-/media-5.36.0.tgz",
- "integrity": "sha512-WIDCeUlX7bCbse/x2Rr7mAIQJnLo18ZWcmsVgSTTBVS7ObU2DBl4ieqRx6y9PAAV+3tNZqMV4JAWDfMiFokpJg==",
- "requires": {
- "@types/cordova": "^0.0.34"
- },
- "dependencies": {
- "@types/cordova": {
- "version": "0.0.34",
- "resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz",
- "integrity": "sha512-rkiiTuf/z2wTd4RxFOb+clE7PF4AEJU0hsczbUdkHHBtkUmpWQpEddynNfJYKYtZFJKbq4F+brfekt1kx85IZA=="
- }
- }
- },
"@ionic-native/media-capture": {
"version": "5.36.0",
"resolved": "https://registry.npmjs.org/@ionic-native/media-capture/-/media-capture-5.36.0.tgz",
@@ -14340,11 +14325,6 @@
"resolved": "https://registry.npmjs.org/cordova-plugin-ionic-keyboard/-/cordova-plugin-ionic-keyboard-2.2.0.tgz",
"integrity": "sha512-yDUG+9ieKVRitq5mGlNxjaZh/MgEhFFIgTIPhqSbUaQ8UuZbawy5mhJAVClqY97q8/rcQtL6dCDa7x2sEtCLcA=="
},
- "cordova-plugin-media": {
- "version": "5.0.4",
- "resolved": "https://registry.npmjs.org/cordova-plugin-media/-/cordova-plugin-media-5.0.4.tgz",
- "integrity": "sha512-mAqincYqOT5gu5LWyfgJu3qmOq+lhLAKhnOZULpG622FvYiHjjfsoJ/fkI55WwI3FIcHeeyhToGvHXBCNJePZg=="
- },
"cordova-plugin-media-capture": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/cordova-plugin-media-capture/-/cordova-plugin-media-capture-3.0.3.tgz",
diff --git a/package.json b/package.json
index 2fb7ad968..815c1605b 100644
--- a/package.json
+++ b/package.json
@@ -63,7 +63,6 @@
"@ionic-native/ionic-webview": "5.36.0",
"@ionic-native/keyboard": "5.36.0",
"@ionic-native/local-notifications": "5.36.0",
- "@ionic-native/media": "5.36.0",
"@ionic-native/media-capture": "5.36.0",
"@ionic-native/network": "5.36.0",
"@ionic-native/push": "5.36.0",
@@ -104,7 +103,6 @@
"cordova-plugin-file": "6.0.2",
"cordova-plugin-geolocation": "4.1.0",
"cordova-plugin-ionic-keyboard": "2.2.0",
- "cordova-plugin-media": "5.0.4",
"cordova-plugin-media-capture": "3.0.3",
"cordova-plugin-network-information": "3.0.0",
"cordova-plugin-prevent-override": "1.0.1",
@@ -225,9 +223,6 @@
"ANDROID_SUPPORT_V4_VERSION": "26.+"
},
"cordova-plugin-media-capture": {},
- "cordova-plugin-media": {
- "KEEP_AVAUDIOSESSION_ALWAYS_ACTIVE": "NO"
- },
"cordova-plugin-network-information": {},
"@moodlehq/cordova-plugin-qrscanner": {},
"cordova-plugin-splashscreen": {},
diff --git a/src/core/features/emulator/components/capture-media/capture-media.html b/src/core/features/emulator/components/capture-media/capture-media.html
index f85e62a51..a33ca161c 100644
--- a/src/core/features/emulator/components/capture-media/capture-media.html
+++ b/src/core/features/emulator/components/capture-media/capture-media.html
@@ -14,7 +14,7 @@
-
+
@@ -48,8 +33,7 @@
-
-
+
diff --git a/src/core/features/emulator/components/capture-media/capture-media.scss b/src/core/features/emulator/components/capture-media/capture-media.scss
index 57d6b0351..f128e9629 100644
--- a/src/core/features/emulator/components/capture-media/capture-media.scss
+++ b/src/core/features/emulator/components/capture-media/capture-media.scss
@@ -21,30 +21,6 @@
width: 100%;
}
- .button {
- position: absolute;
- top: 0;
- left: 0;
- bottom: 0;
- right: 0;
- margin: auto;
- height: 120px;
- width: 120px;
-
- .icon {
- font-size: 120px;
- width: auto;
- }
- }
-
- audio {
- position: absolute;
- top: 0;
- left: 0;
- bottom: 0;
- right: 0;
- margin: auto;
- }
}
video, img {
diff --git a/src/core/features/emulator/components/capture-media/capture-media.ts b/src/core/features/emulator/components/capture-media/capture-media.ts
index 520d28099..34f9390e9 100644
--- a/src/core/features/emulator/components/capture-media/capture-media.ts
+++ b/src/core/features/emulator/components/capture-media/capture-media.ts
@@ -13,23 +13,20 @@
// limitations under the License.
import { Component, OnInit, OnDestroy, ViewChild, ElementRef, ChangeDetectorRef, Input } from '@angular/core';
-import { MediaObject } from '@ionic-native/media/ngx';
-import { FileEntry } from '@ionic-native/file/ngx';
import { MediaFile } from '@ionic-native/media-capture/ngx';
import { CoreFile, CoreFileProvider } from '@services/file';
import { CoreDomUtils } from '@services/utils/dom';
import { CoreMimetypeUtils } from '@services/utils/mimetype';
import { CoreTimeUtils } from '@services/utils/time';
-import { ModalController, Media, Translate } from '@singletons';
+import { ModalController, Translate } from '@singletons';
import { CoreError } from '@classes/errors/error';
import { CoreCaptureError } from '@classes/errors/captureerror';
import { CoreCanceledError } from '@classes/errors/cancelederror';
import { CorePath } from '@singletons/path';
-import { CorePlatform } from '@services/platform';
/**
- * Page to capture media in browser, or to capture audio in mobile devices.
+ * Page to capture media in browser.
*/
@Component({
selector: 'core-emulator-capture-media',
@@ -38,7 +35,7 @@ import { CorePlatform } from '@services/platform';
})
export class CoreEmulatorCaptureMediaComponent implements OnInit, OnDestroy {
- @Input() type?: 'audio' | 'video' | 'image' | 'captureimage';
+ @Input() type?: 'video' | 'image' | 'captureimage';
@Input() maxTime?: number; // Max time to capture.
@Input() facingMode?: string; // Camera facing mode.
@Input() mimetype?: string;
@@ -50,30 +47,20 @@ export class CoreEmulatorCaptureMediaComponent implements OnInit, OnDestroy {
@ViewChild('previewVideo') previewVideo?: ElementRef;
@ViewChild('imgCanvas') imgCanvas?: ElementRef;
@ViewChild('previewImage') previewImage?: ElementRef;
- @ViewChild('streamAudio') streamAudio?: ElementRef;
- @ViewChild('previewAudio') previewAudio?: ElementRef;
title?: string; // The title of the page.
- isAudio?: boolean; // Whether it should capture audio.
isVideo?: boolean; // Whether it should capture video.
isImage?: boolean; // Whether it should capture image.
readyToCapture?: boolean; // Whether it's ready to capture.
hasCaptured?: boolean; // Whether it has captured something.
isCapturing?: boolean; // Whether it's capturing.
resetChrono?: boolean; // Boolean to reset the chrono.
- isCordovaAudioCapture?: boolean; // Whether it's capturing audio using Cordova plugin.
protected isCaptureImage?: boolean; // To identify if it's capturing an image using media capture plugin (instead of camera).
- protected mediaRecorder?: MediaRecorder; // To record video/audio.
- protected previewMedia?: HTMLAudioElement | HTMLVideoElement; // The element to preview the audio/video captured.
+ protected mediaRecorder?: MediaRecorder; // To record video.
+ protected previewMedia?: HTMLVideoElement; // The element to preview the video captured.
protected mediaBlob?: Blob; // A Blob where the captured data is stored.
protected localMediaStream?: MediaStream;
- protected audioDrawer?: {start: () => void; stop: () => void }; // To start/stop the display of audio sound.
-
- // Variables for Cordova Media capture.
- protected mediaFile?: MediaObject;
- protected filePath?: string;
- protected fileEntry?: FileEntry;
constructor(
protected changeDetectorRef: ChangeDetectorRef,
@@ -84,12 +71,7 @@ export class CoreEmulatorCaptureMediaComponent implements OnInit, OnDestroy {
*/
ngOnInit(): void {
this.initVariables();
-
- if (this.isCordovaAudioCapture) {
- this.initCordovaMediaPlugin();
- } else {
- this.initHtmlCapture();
- }
+ this.initHtmlCapture();
}
/**
@@ -108,71 +90,10 @@ export class CoreEmulatorCaptureMediaComponent implements OnInit, OnDestroy {
if (this.type == 'video') {
this.isVideo = true;
this.title = 'core.capturevideo';
- } else if (this.type == 'audio') {
- this.isAudio = true;
- this.title = 'core.captureaudio';
} else if (this.type == 'image') {
this.isImage = true;
this.title = 'core.captureimage';
}
-
- this.isCordovaAudioCapture = CorePlatform.isMobile() && this.isAudio;
-
- if (this.isCordovaAudioCapture) {
- this.extension = CorePlatform.is('ios') ? 'wav' : 'aac';
- this.returnDataUrl = false;
- }
- }
-
- /**
- * Init recording with Cordova media plugin.
- *
- * @returns Promise resolved when ready.
- */
- protected async initCordovaMediaPlugin(): Promise {
-
- try {
- await this.createFileAndMediaInstance();
-
- this.readyToCapture = true;
- this.previewMedia = this.previewAudio?.nativeElement;
- } catch (error) {
- this.dismissWithError(-1, error.message || error);
- }
- }
-
- /**
- * Create a file entry and the cordova media instance.
- */
- protected async createFileAndMediaInstance(): Promise {
- this.filePath = this.getFilePath();
-
- // First create the file.
- this.fileEntry = await CoreFile.createFile(this.filePath);
-
- // Now create the media instance.
- let absolutePath = CorePath.concatenatePaths(CoreFile.getBasePathInstant(), this.filePath);
-
- if (CorePlatform.is('ios')) {
- // In iOS we need to remove the file:// part.
- absolutePath = absolutePath.replace(/^file:\/\//, '');
- }
-
- this.mediaFile = Media.create(absolutePath);
- }
-
- /**
- * Reset the file and the cordova media instance.
- */
- protected async resetCordovaMediaCapture(): Promise {
- if (this.filePath) {
- // Remove old file, don't block the user for this.
- CoreFile.removeFile(this.filePath);
- }
-
- this.mediaFile?.release();
-
- await this.createFileAndMediaInstance();
}
/**
@@ -183,8 +104,7 @@ export class CoreEmulatorCaptureMediaComponent implements OnInit, OnDestroy {
*/
protected async initHtmlCapture(): Promise {
const constraints = {
- video: this.isAudio ? false : { facingMode: this.facingMode },
- audio: !this.isImage,
+ video: { facingMode: this.facingMode },
};
try {
@@ -196,22 +116,18 @@ export class CoreEmulatorCaptureMediaComponent implements OnInit, OnDestroy {
if (!this.isImage) {
if (this.isVideo) {
this.previewMedia = this.previewVideo?.nativeElement;
- } else {
- this.previewMedia = this.previewAudio?.nativeElement;
- this.initAudioDrawer(this.localMediaStream);
- this.audioDrawer?.start();
}
this.mediaRecorder = new MediaRecorder(this.localMediaStream, { mimeType: this.mimetype });
- // When video or audio is recorded, add it to the list of chunks.
+ // When video is recorded, add it to the list of chunks.
this.mediaRecorder.ondataavailable = (e): void => {
if (e.data.size > 0) {
chunks.push(e.data);
}
};
- // When recording stops, create a Blob element with the recording and set it to the video or audio.
+ // When recording stops, create a Blob element with the recording and set it to the video.
this.mediaRecorder.onstop = (): void => {
this.mediaBlob = new Blob(chunks);
chunks = [];
@@ -267,91 +183,6 @@ export class CoreEmulatorCaptureMediaComponent implements OnInit, OnDestroy {
}
}
- /**
- * Initialize the audio drawer. This code has been extracted from MDN's example on MediaStream Recording:
- * https://github.com/mdn/web-dictaphone
- *
- * @param stream Stream returned by getUserMedia.
- */
- protected initAudioDrawer(stream: MediaStream): void {
- if (!this.streamAudio) {
- return;
- }
-
- let skip = true;
- let running = false;
-
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- const audioCtx = new (window.AudioContext || ( window).webkitAudioContext)();
- const canvasCtx = this.streamAudio.nativeElement.getContext('2d');
- const source = audioCtx.createMediaStreamSource(stream);
- const analyser = audioCtx.createAnalyser();
- const bufferLength = analyser.frequencyBinCount;
- const dataArray = new Uint8Array(bufferLength);
- const width = this.streamAudio.nativeElement.width;
- const height = this.streamAudio.nativeElement.height;
- const drawAudio = (): void => {
- if (!running) {
- return;
- }
-
- // Update the draw every animation frame.
- requestAnimationFrame(drawAudio);
-
- // Skip half of the frames to improve performance, shouldn't affect the smoothness.
- skip = !skip;
- if (skip) {
- return;
- }
-
- const sliceWidth = width / bufferLength;
- let x = 0;
-
- analyser.getByteTimeDomainData(dataArray);
-
- canvasCtx.fillStyle = 'rgb(200, 200, 200)';
- canvasCtx.fillRect(0, 0, width, height);
-
- canvasCtx.lineWidth = 1;
- canvasCtx.strokeStyle = 'rgb(0, 0, 0)';
-
- canvasCtx.beginPath();
-
- for (let i = 0; i < bufferLength; i++) {
- const v = dataArray[i] / 128.0;
- const y = v * height / 2;
-
- if (i === 0) {
- canvasCtx.moveTo(x, y);
- } else {
- canvasCtx.lineTo(x, y);
- }
-
- x += sliceWidth;
- }
-
- canvasCtx.lineTo(width, height / 2);
- canvasCtx.stroke();
- };
-
- analyser.fftSize = 2048;
- source.connect(analyser);
-
- this.audioDrawer = {
- start: (): void => {
- if (running) {
- return;
- }
-
- running = true;
- drawAudio();
- },
- stop: (): void => {
- running = false;
- },
- };
- }
-
/**
* Main action clicked: record or stop recording.
*/
@@ -369,15 +200,7 @@ export class CoreEmulatorCaptureMediaComponent implements OnInit, OnDestroy {
this.isCapturing = true;
this.resetChrono = false;
- if (this.isCordovaAudioCapture) {
- this.mediaFile?.startRecord();
- if (this.previewMedia) {
- this.previewMedia.src = '';
- }
- } else {
- this.mediaRecorder?.start();
- }
-
+ this.mediaRecorder?.start();
this.changeDetectorRef.detectChanges();
} else {
if (!this.imgCanvas) {
@@ -419,11 +242,6 @@ export class CoreEmulatorCaptureMediaComponent implements OnInit, OnDestroy {
// Send a "cancelled" error like the Cordova plugin does.
this.dismissWithCanceledError('Canceled.', 'Camera cancelled');
-
- if (this.isCordovaAudioCapture && this.filePath) {
- // Delete the tmp file.
- CoreFile.removeFile(this.filePath);
- }
}
/**
@@ -432,11 +250,6 @@ export class CoreEmulatorCaptureMediaComponent implements OnInit, OnDestroy {
async discard(): Promise {
this.previewMedia?.pause();
this.streamVideo?.nativeElement.play();
- this.audioDrawer?.start();
-
- if (this.isCordovaAudioCapture) {
- await this.resetCordovaMediaCapture();
- }
this.hasCaptured = false;
this.isCapturing = false;
@@ -492,30 +305,23 @@ export class CoreEmulatorCaptureMediaComponent implements OnInit, OnDestroy {
return;
}
- if (!this.mediaBlob && !this.isCordovaAudioCapture) {
+ if (!this.mediaBlob) {
// Shouldn't happen.
CoreDomUtils.showErrorModal('Please capture the media first.');
return;
}
- let fileEntry = this.fileEntry;
const loadingModal = await CoreDomUtils.showModalLoading();
try {
- if (!this.isCordovaAudioCapture) {
- // Capturing in browser. Write the blob in a file.
- if (!this.mediaBlob) {
- // Shouldn't happen.
- throw new Error('Please capture the media first.');
- }
-
- fileEntry = await CoreFile.writeFile(this.getFilePath(), this.mediaBlob);
+ // Capturing in browser. Write the blob in a file.
+ if (!this.mediaBlob) {
+ // Shouldn't happen.
+ throw new Error('Please capture the media first.');
}
- if (!fileEntry) {
- throw new CoreError('File not found.');
- }
+ const fileEntry = await CoreFile.writeFile(this.getFilePath(), this.mediaBlob);
if (this.isImage && !this.isCaptureImage) {
this.dismissWithData(fileEntry.toURL());
@@ -560,30 +366,20 @@ export class CoreEmulatorCaptureMediaComponent implements OnInit, OnDestroy {
}
/**
- * Stop capturing. Only for video and audio.
+ * Stop capturing. Only for video.
*/
stopCapturing(): void {
this.isCapturing = false;
this.hasCaptured = true;
- if (this.isCordovaAudioCapture) {
- this.mediaFile?.stopRecord();
- if (this.previewMedia && this.fileEntry) {
- this.previewMedia.src = CoreFile.convertFileSrc(this.fileEntry.toURL());
- }
- } else {
- this.streamVideo && this.streamVideo.nativeElement.pause();
- this.audioDrawer && this.audioDrawer.stop();
- this.mediaRecorder && this.mediaRecorder.stop();
- }
+ this.streamVideo && this.streamVideo.nativeElement.pause();
+ this.mediaRecorder && this.mediaRecorder.stop();
}
/**
* Page destroyed.
*/
ngOnDestroy(): void {
- this.mediaFile?.release();
-
if (this.localMediaStream) {
const tracks = this.localMediaStream.getTracks();
tracks.forEach((track) => {
@@ -592,14 +388,13 @@ export class CoreEmulatorCaptureMediaComponent implements OnInit, OnDestroy {
}
this.streamVideo?.nativeElement.pause();
this.previewMedia?.pause();
- this.audioDrawer?.stop();
delete this.mediaBlob;
}
}
export type CaptureMediaComponentInputs = {
- type: 'audio' | 'video' | 'image' | 'captureimage';
+ type: 'video' | 'image' | 'captureimage';
maxTime?: number; // Max time to capture.
facingMode?: string; // Camera facing mode.
mimetype?: string;
diff --git a/src/core/features/emulator/services/capture-helper.ts b/src/core/features/emulator/services/capture-helper.ts
index 17432f912..54885b622 100644
--- a/src/core/features/emulator/services/capture-helper.ts
+++ b/src/core/features/emulator/services/capture-helper.ts
@@ -14,23 +14,18 @@
import { Injectable } from '@angular/core';
import { CameraOptions } from '@ionic-native/camera/ngx';
-import { CaptureAudioOptions, CaptureImageOptions, CaptureVideoOptions, MediaFile } from '@ionic-native/media-capture/ngx';
+import { CaptureImageOptions, CaptureVideoOptions, MediaFile } from '@ionic-native/media-capture/ngx';
import { CoreMimetypeUtils } from '@services/utils/mimetype';
import { makeSingleton, ModalController } from '@singletons';
import { CaptureMediaComponentInputs, CoreEmulatorCaptureMediaComponent } from '../components/capture-media/capture-media';
/**
- * Helper service with some features to capture media (image, audio, video).
+ * Helper service with some features to capture media (image, video).
*/
@Injectable({ providedIn: 'root' })
export class CoreEmulatorCaptureHelperProvider {
- protected possibleAudioMimeTypes = {
- 'audio/webm': 'weba',
- 'audio/ogg': 'ogg',
- };
-
protected possibleVideoMimeTypes = {
'video/webm;codecs=vp9': 'webm',
'video/webm;codecs=vp8': 'webm',
@@ -38,22 +33,20 @@ export class CoreEmulatorCaptureHelperProvider {
};
videoMimeType?: string;
- audioMimeType?: string;
/**
- * Capture media (image, audio, video).
+ * Capture media (image, video).
*
- * @param type Type of media: image, audio, video.
+ * @param type Type of media: image, video.
* @param options Optional options.
* @returns Promise resolved when captured, rejected if error.
*/
captureMedia(type: 'image', options?: MockCameraOptions): Promise;
captureMedia(type: 'captureimage', options?: MockCaptureImageOptions): Promise;
- captureMedia(type: 'audio', options?: MockCaptureAudioOptions): Promise;
captureMedia(type: 'video', options?: MockCaptureVideoOptions): Promise;
async captureMedia(
- type: 'image' | 'captureimage' | 'audio' | 'video',
- options?: MockCameraOptions | MockCaptureImageOptions | MockCaptureAudioOptions | MockCaptureVideoOptions,
+ type: 'image' | 'captureimage' | 'video',
+ options?: MockCameraOptions | MockCaptureImageOptions | MockCaptureVideoOptions,
): Promise {
options = options || {};
@@ -67,10 +60,6 @@ export class CoreEmulatorCaptureHelperProvider {
const mimeAndExt = this.getMimeTypeAndExtension(type, options.mimetypes);
params.mimetype = mimeAndExt.mimetype;
params.extension = mimeAndExt.extension;
- } else if (type == 'audio') {
- const mimeAndExt = this.getMimeTypeAndExtension(type, options.mimetypes);
- params.mimetype = mimeAndExt.mimetype;
- params.extension = mimeAndExt.extension;
} else if (type == 'image') {
if ('sourceType' in options && options.sourceType !== undefined && options.sourceType != 1) {
return Promise.reject('This source type is not supported in browser.');
@@ -121,7 +110,7 @@ export class CoreEmulatorCaptureHelperProvider {
/**
* Get the mimetype and extension to capture media.
*
- * @param type Type of media: image, audio, video.
+ * @param type Type of media: image, video.
* @param mimetypes List of supported mimetypes. If undefined, all mimetypes supported.
* @returns An object with mimetype and extension to use.
*/
@@ -148,10 +137,6 @@ export class CoreEmulatorCaptureHelperProvider {
// No mimetype found, use default extension.
result.mimetype = this.videoMimeType;
result.extension = this.possibleVideoMimeTypes[result.mimetype!];
- } else if (type == 'audio') {
- // No mimetype found, use default extension.
- result.mimetype = this.audioMimeType;
- result.extension = this.possibleAudioMimeTypes[result.mimetype!];
}
return result;
@@ -170,20 +155,12 @@ export class CoreEmulatorCaptureHelperProvider {
* Initialize the mimetypes to use when capturing.
*/
protected initMimeTypes(): void {
- // Determine video and audio mimetype to use.
for (const mimeType in this.possibleVideoMimeTypes) {
if (window.MediaRecorder.isTypeSupported(mimeType)) {
this.videoMimeType = mimeType;
break;
}
}
-
- for (const mimeType in this.possibleAudioMimeTypes) {
- if (window.MediaRecorder.isTypeSupported(mimeType)) {
- this.audioMimeType = mimeType;
- break;
- }
- }
}
/**
@@ -209,9 +186,6 @@ export interface MockCameraOptions extends CameraOptions {
export interface MockCaptureImageOptions extends CaptureImageOptions {
mimetypes?: string[]; // Allowed mimetypes.
}
-export interface MockCaptureAudioOptions extends CaptureAudioOptions {
- mimetypes?: string[]; // Allowed mimetypes.
-}
export interface MockCaptureVideoOptions extends CaptureVideoOptions {
mimetypes?: string[]; // Allowed mimetypes.
}
diff --git a/src/core/features/emulator/services/media-capture.ts b/src/core/features/emulator/services/media-capture.ts
index c9f3e02a0..8c8985fbd 100644
--- a/src/core/features/emulator/services/media-capture.ts
+++ b/src/core/features/emulator/services/media-capture.ts
@@ -15,7 +15,6 @@
import { Injectable } from '@angular/core';
import {
MediaCapture,
- CaptureAudioOptions,
CaptureImageOptions,
CaptureVideoOptions,
MediaFile,
@@ -29,16 +28,6 @@ import { CoreEmulatorCaptureHelper } from './capture-helper';
@Injectable()
export class MediaCaptureMock extends MediaCapture {
- /**
- * Start the audio recorder application and return information about captured audio clip files.
- *
- * @param options Options.
- * @returns Promise resolved when captured.
- */
- captureAudio(options: CaptureAudioOptions): Promise {
- return CoreEmulatorCaptureHelper.captureMedia('audio', options);
- }
-
/**
* Start the camera application and return information about captured image files.
*
diff --git a/src/core/features/native/native.module.ts b/src/core/features/native/native.module.ts
index 3a8887ca0..c0a82490f 100644
--- a/src/core/features/native/native.module.ts
+++ b/src/core/features/native/native.module.ts
@@ -29,7 +29,6 @@ import { InAppBrowser } from '@ionic-native/in-app-browser/ngx';
import { WebView } from '@ionic-native/ionic-webview/ngx';
import { Keyboard } from '@ionic-native/keyboard/ngx';
import { LocalNotifications } from '@ionic-native/local-notifications/ngx';
-import { Media } from '@ionic-native/media/ngx';
import { MediaCapture } from '@ionic-native/media-capture/ngx';
import { Push } from '@ionic-native/push/ngx';
import { QRScanner } from '@ionic-native/qr-scanner/ngx';
@@ -54,7 +53,6 @@ export const CORE_NATIVE_SERVICES = [
InAppBrowser,
Keyboard,
LocalNotifications,
- Media,
MediaCapture,
Push,
QRScanner,
@@ -82,7 +80,6 @@ export const CORE_NATIVE_SERVICES = [
InAppBrowser,
Keyboard,
LocalNotifications,
- Media,
MediaCapture,
Push,
QRScanner,
diff --git a/src/core/singletons/index.ts b/src/core/singletons/index.ts
index acc10439c..60b71d369 100644
--- a/src/core/singletons/index.ts
+++ b/src/core/singletons/index.ts
@@ -52,7 +52,6 @@ import { InAppBrowser as InAppBrowserService } from '@ionic-native/in-app-browse
import { WebView as WebViewService } from '@ionic-native/ionic-webview/ngx';
import { Keyboard as KeyboardService } from '@ionic-native/keyboard/ngx';
import { LocalNotifications as LocalNotificationsService } from '@ionic-native/local-notifications/ngx';
-import { Media as MediaService } from '@ionic-native/media/ngx';
import { MediaCapture as MediaCaptureService } from '@ionic-native/media-capture/ngx';
import { Push as PushService } from '@ionic-native/push/ngx';
import { QRScanner as QRScannerService } from '@ionic-native/qr-scanner/ngx';
@@ -184,7 +183,6 @@ export const Geolocation = makeSingleton(GeolocationService);
export const InAppBrowser = makeSingleton(InAppBrowserService);
export const Keyboard = makeSingleton(KeyboardService);
export const LocalNotifications = makeSingleton(LocalNotificationsService);
-export const Media = makeSingleton(MediaService);
export const MediaCapture = makeSingleton(MediaCaptureService);
export const NativeHttp = makeSingleton(HTTP);
export const Push = makeSingleton(PushService);