diff --git a/gulpfile.js b/gulpfile.js
index 1f23bf1e..07bdbbf3 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -37,19 +37,33 @@ gulp.task('lint', function () {
.pipe(jshint.reporter('fail'));
});
-
-gulp.task('browserify', function () {
- return browserify([path.join(__dirname, PKG.main)], {
+gulp.task('browserify-ios', function () {
+ return browserify([path.join(__dirname, 'js/ios/iosrtc.js')], {
standalone: 'iosrtc'
})
.exclude('cordova/exec') // Exclude require('cordova/exec').
.bundle()
- .pipe(vinyl_source_stream(PKG.name + '.js'))
+ .pipe(vinyl_source_stream('cordova-plugin-ios-rtc.js'))
+ .pipe(vinyl_buffer())
+ .pipe(header(banner, banner_options))
+ .pipe(derequire())
+ .pipe(gulp.dest('www/'));
+});
+
+
+gulp.task('browserify-android', function () {
+ return browserify([path.join(__dirname, 'js/android/androidrtc.js')], {
+ standalone: 'androidrtc'
+ })
+ .exclude('cordova/exec') // Exclude require('cordova/exec').
+ .bundle()
+ .pipe(vinyl_source_stream('cordova-plugin-android-rtc.js'))
.pipe(vinyl_buffer())
.pipe(header(banner, banner_options))
.pipe(derequire())
.pipe(gulp.dest('www/'));
});
+gulp.task('browserify', gulp.series('browserify-ios', 'browserify-android'));
gulp.task('default', gulp.series('lint', 'browserify'));
diff --git a/js/android/androidrtc.js b/js/android/androidrtc.js
new file mode 100644
index 00000000..f80b3756
--- /dev/null
+++ b/js/android/androidrtc.js
@@ -0,0 +1,83 @@
+var exec = require('cordova/exec');
+var deviceChangesListenerIsAdded = false;
+
+module.exports = {
+ getEnumerateDevices: getEnumerateDevices,
+};
+
+function getEnumerateDevices(arg0, success, error) {
+
+ if(!deviceChangesListenerIsAdded){
+ console.log("Adding devicechange listener");
+ addDeviceChangeListener();
+ exec(success, error, 'EnumerateDevicesPlugin', 'addDeviceListener', [arg0]);
+ deviceChangesListenerIsAdded = true;
+ }
+
+ var isPromise, callback;
+ if (typeof arguments[0] !== 'function') {
+ isPromise = true;
+ } else {
+ isPromise = false;
+ callback = arguments[0];
+ }
+
+ if (isPromise) {
+ return new Promise(function(resolve) {
+ function onResultOK(devices) {
+ console.info('enumerateDevices() | success');
+ resolve(getMediaDeviceInfos(devices));
+ }
+ exec(onResultOK, error, 'EnumerateDevicesPlugin', 'enumerateDevices', [arg0]);
+ });
+ }
+
+ function onResultOK(devices) {
+ console.info('enumerateDevices() | success');
+ callback(getMediaDeviceInfos(devices));
+ }
+ exec(onResultOK, error, 'EnumerateDevicesPlugin', 'enumerateDevices', [arg0]);
+}
+
+/**
+ * Private API
+ */
+
+function addDeviceChangeListener() {
+ navigator.mediaDevices.addEventListener('devicechange', navigator.mediaDevices.ondevicechange);
+}
+
+function getMediaDeviceInfos(devices) {
+ console.info('getMediaDeviceInfos() ', devices);
+
+ var id,
+ mediaDeviceInfos = [];
+
+ for (id in devices) {
+ if (devices.hasOwnProperty(id)) {
+ mediaDeviceInfos.push(mediaDeviceInfo(devices[id]));
+ }
+ }
+
+ return devices;
+}
+
+function mediaDeviceInfo(data) {
+ data = data || {};
+
+ return {
+ // MediaDeviceInfo spec.
+ deviceId: {
+ value: data.deviceId,
+ },
+ kind: {
+ value: data.kind,
+ },
+ label: {
+ value: data.label,
+ },
+ groupId: {
+ value: data.groupId || '',
+ },
+ };
+}
\ No newline at end of file
diff --git a/js/Errors.js b/js/ios/Errors.js
similarity index 100%
rename from js/Errors.js
rename to js/ios/Errors.js
diff --git a/js/EventTarget.js b/js/ios/EventTarget.js
similarity index 100%
rename from js/EventTarget.js
rename to js/ios/EventTarget.js
diff --git a/js/MediaDeviceInfo.js b/js/ios/MediaDeviceInfo.js
similarity index 100%
rename from js/MediaDeviceInfo.js
rename to js/ios/MediaDeviceInfo.js
diff --git a/js/MediaDevices.js b/js/ios/MediaDevices.js
similarity index 100%
rename from js/MediaDevices.js
rename to js/ios/MediaDevices.js
diff --git a/js/MediaStream.js b/js/ios/MediaStream.js
similarity index 100%
rename from js/MediaStream.js
rename to js/ios/MediaStream.js
diff --git a/js/MediaStreamRenderer.js b/js/ios/MediaStreamRenderer.js
similarity index 100%
rename from js/MediaStreamRenderer.js
rename to js/ios/MediaStreamRenderer.js
diff --git a/js/MediaStreamTrack.js b/js/ios/MediaStreamTrack.js
similarity index 100%
rename from js/MediaStreamTrack.js
rename to js/ios/MediaStreamTrack.js
diff --git a/js/MediaTrackCapabilities.js b/js/ios/MediaTrackCapabilities.js
similarity index 100%
rename from js/MediaTrackCapabilities.js
rename to js/ios/MediaTrackCapabilities.js
diff --git a/js/MediaTrackSettings.js b/js/ios/MediaTrackSettings.js
similarity index 100%
rename from js/MediaTrackSettings.js
rename to js/ios/MediaTrackSettings.js
diff --git a/js/RTCDTMFSender.js b/js/ios/RTCDTMFSender.js
similarity index 100%
rename from js/RTCDTMFSender.js
rename to js/ios/RTCDTMFSender.js
diff --git a/js/RTCDataChannel.js b/js/ios/RTCDataChannel.js
similarity index 100%
rename from js/RTCDataChannel.js
rename to js/ios/RTCDataChannel.js
diff --git a/js/RTCIceCandidate.js b/js/ios/RTCIceCandidate.js
similarity index 100%
rename from js/RTCIceCandidate.js
rename to js/ios/RTCIceCandidate.js
diff --git a/js/RTCPeerConnection.js b/js/ios/RTCPeerConnection.js
similarity index 100%
rename from js/RTCPeerConnection.js
rename to js/ios/RTCPeerConnection.js
diff --git a/js/RTCRtpReceiver.js b/js/ios/RTCRtpReceiver.js
similarity index 100%
rename from js/RTCRtpReceiver.js
rename to js/ios/RTCRtpReceiver.js
diff --git a/js/RTCRtpSender.js b/js/ios/RTCRtpSender.js
similarity index 100%
rename from js/RTCRtpSender.js
rename to js/ios/RTCRtpSender.js
diff --git a/js/RTCRtpTransceiver.js b/js/ios/RTCRtpTransceiver.js
similarity index 100%
rename from js/RTCRtpTransceiver.js
rename to js/ios/RTCRtpTransceiver.js
diff --git a/js/RTCSessionDescription.js b/js/ios/RTCSessionDescription.js
similarity index 100%
rename from js/RTCSessionDescription.js
rename to js/ios/RTCSessionDescription.js
diff --git a/js/RTCStatsReport.js b/js/ios/RTCStatsReport.js
similarity index 100%
rename from js/RTCStatsReport.js
rename to js/ios/RTCStatsReport.js
diff --git a/js/RTCStatsResponse.js b/js/ios/RTCStatsResponse.js
similarity index 100%
rename from js/RTCStatsResponse.js
rename to js/ios/RTCStatsResponse.js
diff --git a/js/enumerateDevices.js b/js/ios/enumerateDevices.js
similarity index 100%
rename from js/enumerateDevices.js
rename to js/ios/enumerateDevices.js
diff --git a/js/getUserMedia.js b/js/ios/getUserMedia.js
similarity index 100%
rename from js/getUserMedia.js
rename to js/ios/getUserMedia.js
diff --git a/js/iosrtc.js b/js/ios/iosrtc.js
similarity index 100%
rename from js/iosrtc.js
rename to js/ios/iosrtc.js
diff --git a/js/videoElementsHandler.js b/js/ios/videoElementsHandler.js
similarity index 100%
rename from js/videoElementsHandler.js
rename to js/ios/videoElementsHandler.js
diff --git a/lib/WebRTC.framework/Headers/RTCAudioSession.h b/lib/ios/WebRTC.framework/Headers/RTCAudioSession.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCAudioSession.h
rename to lib/ios/WebRTC.framework/Headers/RTCAudioSession.h
diff --git a/lib/WebRTC.framework/Headers/RTCAudioSessionConfiguration.h b/lib/ios/WebRTC.framework/Headers/RTCAudioSessionConfiguration.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCAudioSessionConfiguration.h
rename to lib/ios/WebRTC.framework/Headers/RTCAudioSessionConfiguration.h
diff --git a/lib/WebRTC.framework/Headers/RTCAudioSource.h b/lib/ios/WebRTC.framework/Headers/RTCAudioSource.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCAudioSource.h
rename to lib/ios/WebRTC.framework/Headers/RTCAudioSource.h
diff --git a/lib/WebRTC.framework/Headers/RTCAudioTrack.h b/lib/ios/WebRTC.framework/Headers/RTCAudioTrack.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCAudioTrack.h
rename to lib/ios/WebRTC.framework/Headers/RTCAudioTrack.h
diff --git a/lib/WebRTC.framework/Headers/RTCCallbackLogger.h b/lib/ios/WebRTC.framework/Headers/RTCCallbackLogger.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCCallbackLogger.h
rename to lib/ios/WebRTC.framework/Headers/RTCCallbackLogger.h
diff --git a/lib/WebRTC.framework/Headers/RTCCameraPreviewView.h b/lib/ios/WebRTC.framework/Headers/RTCCameraPreviewView.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCCameraPreviewView.h
rename to lib/ios/WebRTC.framework/Headers/RTCCameraPreviewView.h
diff --git a/lib/WebRTC.framework/Headers/RTCCameraVideoCapturer.h b/lib/ios/WebRTC.framework/Headers/RTCCameraVideoCapturer.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCCameraVideoCapturer.h
rename to lib/ios/WebRTC.framework/Headers/RTCCameraVideoCapturer.h
diff --git a/lib/WebRTC.framework/Headers/RTCConfiguration.h b/lib/ios/WebRTC.framework/Headers/RTCConfiguration.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCConfiguration.h
rename to lib/ios/WebRTC.framework/Headers/RTCConfiguration.h
diff --git a/lib/WebRTC.framework/Headers/RTCDataChannel.h b/lib/ios/WebRTC.framework/Headers/RTCDataChannel.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCDataChannel.h
rename to lib/ios/WebRTC.framework/Headers/RTCDataChannel.h
diff --git a/lib/WebRTC.framework/Headers/RTCDataChannelConfiguration.h b/lib/ios/WebRTC.framework/Headers/RTCDataChannelConfiguration.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCDataChannelConfiguration.h
rename to lib/ios/WebRTC.framework/Headers/RTCDataChannelConfiguration.h
diff --git a/lib/WebRTC.framework/Headers/RTCDispatcher.h b/lib/ios/WebRTC.framework/Headers/RTCDispatcher.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCDispatcher.h
rename to lib/ios/WebRTC.framework/Headers/RTCDispatcher.h
diff --git a/lib/WebRTC.framework/Headers/RTCDtmfSender.h b/lib/ios/WebRTC.framework/Headers/RTCDtmfSender.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCDtmfSender.h
rename to lib/ios/WebRTC.framework/Headers/RTCDtmfSender.h
diff --git a/lib/WebRTC.framework/Headers/RTCEAGLVideoView.h b/lib/ios/WebRTC.framework/Headers/RTCEAGLVideoView.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCEAGLVideoView.h
rename to lib/ios/WebRTC.framework/Headers/RTCEAGLVideoView.h
diff --git a/lib/WebRTC.framework/Headers/RTCFieldTrials.h b/lib/ios/WebRTC.framework/Headers/RTCFieldTrials.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCFieldTrials.h
rename to lib/ios/WebRTC.framework/Headers/RTCFieldTrials.h
diff --git a/lib/WebRTC.framework/Headers/RTCFileLogger.h b/lib/ios/WebRTC.framework/Headers/RTCFileLogger.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCFileLogger.h
rename to lib/ios/WebRTC.framework/Headers/RTCFileLogger.h
diff --git a/lib/WebRTC.framework/Headers/RTCFileVideoCapturer.h b/lib/ios/WebRTC.framework/Headers/RTCFileVideoCapturer.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCFileVideoCapturer.h
rename to lib/ios/WebRTC.framework/Headers/RTCFileVideoCapturer.h
diff --git a/lib/WebRTC.framework/Headers/RTCIceCandidate.h b/lib/ios/WebRTC.framework/Headers/RTCIceCandidate.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCIceCandidate.h
rename to lib/ios/WebRTC.framework/Headers/RTCIceCandidate.h
diff --git a/lib/WebRTC.framework/Headers/RTCIceServer.h b/lib/ios/WebRTC.framework/Headers/RTCIceServer.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCIceServer.h
rename to lib/ios/WebRTC.framework/Headers/RTCIceServer.h
diff --git a/lib/WebRTC.framework/Headers/RTCIntervalRange.h b/lib/ios/WebRTC.framework/Headers/RTCIntervalRange.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCIntervalRange.h
rename to lib/ios/WebRTC.framework/Headers/RTCIntervalRange.h
diff --git a/lib/WebRTC.framework/Headers/RTCLegacyStatsReport.h b/lib/ios/WebRTC.framework/Headers/RTCLegacyStatsReport.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCLegacyStatsReport.h
rename to lib/ios/WebRTC.framework/Headers/RTCLegacyStatsReport.h
diff --git a/lib/WebRTC.framework/Headers/RTCLogging.h b/lib/ios/WebRTC.framework/Headers/RTCLogging.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCLogging.h
rename to lib/ios/WebRTC.framework/Headers/RTCLogging.h
diff --git a/lib/WebRTC.framework/Headers/RTCMTLVideoView.h b/lib/ios/WebRTC.framework/Headers/RTCMTLVideoView.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCMTLVideoView.h
rename to lib/ios/WebRTC.framework/Headers/RTCMTLVideoView.h
diff --git a/lib/WebRTC.framework/Headers/RTCMacros.h b/lib/ios/WebRTC.framework/Headers/RTCMacros.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCMacros.h
rename to lib/ios/WebRTC.framework/Headers/RTCMacros.h
diff --git a/lib/WebRTC.framework/Headers/RTCMediaConstraints.h b/lib/ios/WebRTC.framework/Headers/RTCMediaConstraints.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCMediaConstraints.h
rename to lib/ios/WebRTC.framework/Headers/RTCMediaConstraints.h
diff --git a/lib/WebRTC.framework/Headers/RTCMediaSource.h b/lib/ios/WebRTC.framework/Headers/RTCMediaSource.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCMediaSource.h
rename to lib/ios/WebRTC.framework/Headers/RTCMediaSource.h
diff --git a/lib/WebRTC.framework/Headers/RTCMediaStream.h b/lib/ios/WebRTC.framework/Headers/RTCMediaStream.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCMediaStream.h
rename to lib/ios/WebRTC.framework/Headers/RTCMediaStream.h
diff --git a/lib/WebRTC.framework/Headers/RTCMediaStreamTrack.h b/lib/ios/WebRTC.framework/Headers/RTCMediaStreamTrack.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCMediaStreamTrack.h
rename to lib/ios/WebRTC.framework/Headers/RTCMediaStreamTrack.h
diff --git a/lib/WebRTC.framework/Headers/RTCMetrics.h b/lib/ios/WebRTC.framework/Headers/RTCMetrics.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCMetrics.h
rename to lib/ios/WebRTC.framework/Headers/RTCMetrics.h
diff --git a/lib/WebRTC.framework/Headers/RTCMetricsSampleInfo.h b/lib/ios/WebRTC.framework/Headers/RTCMetricsSampleInfo.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCMetricsSampleInfo.h
rename to lib/ios/WebRTC.framework/Headers/RTCMetricsSampleInfo.h
diff --git a/lib/WebRTC.framework/Headers/RTCPeerConnection.h b/lib/ios/WebRTC.framework/Headers/RTCPeerConnection.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCPeerConnection.h
rename to lib/ios/WebRTC.framework/Headers/RTCPeerConnection.h
diff --git a/lib/WebRTC.framework/Headers/RTCPeerConnectionFactory.h b/lib/ios/WebRTC.framework/Headers/RTCPeerConnectionFactory.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCPeerConnectionFactory.h
rename to lib/ios/WebRTC.framework/Headers/RTCPeerConnectionFactory.h
diff --git a/lib/WebRTC.framework/Headers/RTCPeerConnectionFactoryOptions.h b/lib/ios/WebRTC.framework/Headers/RTCPeerConnectionFactoryOptions.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCPeerConnectionFactoryOptions.h
rename to lib/ios/WebRTC.framework/Headers/RTCPeerConnectionFactoryOptions.h
diff --git a/lib/WebRTC.framework/Headers/RTCRtcpParameters.h b/lib/ios/WebRTC.framework/Headers/RTCRtcpParameters.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCRtcpParameters.h
rename to lib/ios/WebRTC.framework/Headers/RTCRtcpParameters.h
diff --git a/lib/WebRTC.framework/Headers/RTCRtpCodecParameters.h b/lib/ios/WebRTC.framework/Headers/RTCRtpCodecParameters.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCRtpCodecParameters.h
rename to lib/ios/WebRTC.framework/Headers/RTCRtpCodecParameters.h
diff --git a/lib/WebRTC.framework/Headers/RTCRtpEncodingParameters.h b/lib/ios/WebRTC.framework/Headers/RTCRtpEncodingParameters.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCRtpEncodingParameters.h
rename to lib/ios/WebRTC.framework/Headers/RTCRtpEncodingParameters.h
diff --git a/lib/WebRTC.framework/Headers/RTCRtpHeaderExtension.h b/lib/ios/WebRTC.framework/Headers/RTCRtpHeaderExtension.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCRtpHeaderExtension.h
rename to lib/ios/WebRTC.framework/Headers/RTCRtpHeaderExtension.h
diff --git a/lib/WebRTC.framework/Headers/RTCRtpParameters.h b/lib/ios/WebRTC.framework/Headers/RTCRtpParameters.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCRtpParameters.h
rename to lib/ios/WebRTC.framework/Headers/RTCRtpParameters.h
diff --git a/lib/WebRTC.framework/Headers/RTCRtpReceiver.h b/lib/ios/WebRTC.framework/Headers/RTCRtpReceiver.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCRtpReceiver.h
rename to lib/ios/WebRTC.framework/Headers/RTCRtpReceiver.h
diff --git a/lib/WebRTC.framework/Headers/RTCRtpSender.h b/lib/ios/WebRTC.framework/Headers/RTCRtpSender.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCRtpSender.h
rename to lib/ios/WebRTC.framework/Headers/RTCRtpSender.h
diff --git a/lib/WebRTC.framework/Headers/RTCRtpTransceiver.h b/lib/ios/WebRTC.framework/Headers/RTCRtpTransceiver.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCRtpTransceiver.h
rename to lib/ios/WebRTC.framework/Headers/RTCRtpTransceiver.h
diff --git a/lib/WebRTC.framework/Headers/RTCSSLAdapter.h b/lib/ios/WebRTC.framework/Headers/RTCSSLAdapter.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCSSLAdapter.h
rename to lib/ios/WebRTC.framework/Headers/RTCSSLAdapter.h
diff --git a/lib/WebRTC.framework/Headers/RTCSessionDescription.h b/lib/ios/WebRTC.framework/Headers/RTCSessionDescription.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCSessionDescription.h
rename to lib/ios/WebRTC.framework/Headers/RTCSessionDescription.h
diff --git a/lib/WebRTC.framework/Headers/RTCTracing.h b/lib/ios/WebRTC.framework/Headers/RTCTracing.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCTracing.h
rename to lib/ios/WebRTC.framework/Headers/RTCTracing.h
diff --git a/lib/WebRTC.framework/Headers/RTCVideoCapturer.h b/lib/ios/WebRTC.framework/Headers/RTCVideoCapturer.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCVideoCapturer.h
rename to lib/ios/WebRTC.framework/Headers/RTCVideoCapturer.h
diff --git a/lib/WebRTC.framework/Headers/RTCVideoCodec.h b/lib/ios/WebRTC.framework/Headers/RTCVideoCodec.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCVideoCodec.h
rename to lib/ios/WebRTC.framework/Headers/RTCVideoCodec.h
diff --git a/lib/WebRTC.framework/Headers/RTCVideoCodecFactory.h b/lib/ios/WebRTC.framework/Headers/RTCVideoCodecFactory.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCVideoCodecFactory.h
rename to lib/ios/WebRTC.framework/Headers/RTCVideoCodecFactory.h
diff --git a/lib/WebRTC.framework/Headers/RTCVideoCodecH264.h b/lib/ios/WebRTC.framework/Headers/RTCVideoCodecH264.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCVideoCodecH264.h
rename to lib/ios/WebRTC.framework/Headers/RTCVideoCodecH264.h
diff --git a/lib/WebRTC.framework/Headers/RTCVideoDecoderVP8.h b/lib/ios/WebRTC.framework/Headers/RTCVideoDecoderVP8.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCVideoDecoderVP8.h
rename to lib/ios/WebRTC.framework/Headers/RTCVideoDecoderVP8.h
diff --git a/lib/WebRTC.framework/Headers/RTCVideoDecoderVP9.h b/lib/ios/WebRTC.framework/Headers/RTCVideoDecoderVP9.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCVideoDecoderVP9.h
rename to lib/ios/WebRTC.framework/Headers/RTCVideoDecoderVP9.h
diff --git a/lib/WebRTC.framework/Headers/RTCVideoEncoderVP8.h b/lib/ios/WebRTC.framework/Headers/RTCVideoEncoderVP8.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCVideoEncoderVP8.h
rename to lib/ios/WebRTC.framework/Headers/RTCVideoEncoderVP8.h
diff --git a/lib/WebRTC.framework/Headers/RTCVideoEncoderVP9.h b/lib/ios/WebRTC.framework/Headers/RTCVideoEncoderVP9.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCVideoEncoderVP9.h
rename to lib/ios/WebRTC.framework/Headers/RTCVideoEncoderVP9.h
diff --git a/lib/WebRTC.framework/Headers/RTCVideoFrame.h b/lib/ios/WebRTC.framework/Headers/RTCVideoFrame.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCVideoFrame.h
rename to lib/ios/WebRTC.framework/Headers/RTCVideoFrame.h
diff --git a/lib/WebRTC.framework/Headers/RTCVideoFrameBuffer.h b/lib/ios/WebRTC.framework/Headers/RTCVideoFrameBuffer.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCVideoFrameBuffer.h
rename to lib/ios/WebRTC.framework/Headers/RTCVideoFrameBuffer.h
diff --git a/lib/WebRTC.framework/Headers/RTCVideoRenderer.h b/lib/ios/WebRTC.framework/Headers/RTCVideoRenderer.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCVideoRenderer.h
rename to lib/ios/WebRTC.framework/Headers/RTCVideoRenderer.h
diff --git a/lib/WebRTC.framework/Headers/RTCVideoSource.h b/lib/ios/WebRTC.framework/Headers/RTCVideoSource.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCVideoSource.h
rename to lib/ios/WebRTC.framework/Headers/RTCVideoSource.h
diff --git a/lib/WebRTC.framework/Headers/RTCVideoTrack.h b/lib/ios/WebRTC.framework/Headers/RTCVideoTrack.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCVideoTrack.h
rename to lib/ios/WebRTC.framework/Headers/RTCVideoTrack.h
diff --git a/lib/WebRTC.framework/Headers/RTCVideoViewShading.h b/lib/ios/WebRTC.framework/Headers/RTCVideoViewShading.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/RTCVideoViewShading.h
rename to lib/ios/WebRTC.framework/Headers/RTCVideoViewShading.h
diff --git a/lib/WebRTC.framework/Headers/UIDevice+RTCDevice.h b/lib/ios/WebRTC.framework/Headers/UIDevice+RTCDevice.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/UIDevice+RTCDevice.h
rename to lib/ios/WebRTC.framework/Headers/UIDevice+RTCDevice.h
diff --git a/lib/WebRTC.framework/Headers/WebRTC.h b/lib/ios/WebRTC.framework/Headers/WebRTC.h
similarity index 100%
rename from lib/WebRTC.framework/Headers/WebRTC.h
rename to lib/ios/WebRTC.framework/Headers/WebRTC.h
diff --git a/lib/WebRTC.framework/Info.plist b/lib/ios/WebRTC.framework/Info.plist
similarity index 100%
rename from lib/WebRTC.framework/Info.plist
rename to lib/ios/WebRTC.framework/Info.plist
diff --git a/lib/WebRTC.framework/Modules/module.modulemap b/lib/ios/WebRTC.framework/Modules/module.modulemap
similarity index 100%
rename from lib/WebRTC.framework/Modules/module.modulemap
rename to lib/ios/WebRTC.framework/Modules/module.modulemap
diff --git a/lib/WebRTC.framework/WebRTC b/lib/ios/WebRTC.framework/WebRTC
similarity index 100%
rename from lib/WebRTC.framework/WebRTC
rename to lib/ios/WebRTC.framework/WebRTC
diff --git a/plugin.xml b/plugin.xml
index b2fe27e2..9886bbcf 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -18,6 +18,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -54,24 +71,24 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -92,7 +109,7 @@
-
+
diff --git a/src/android/EnumerateDevicesPlugin.java b/src/android/EnumerateDevicesPlugin.java
new file mode 100644
index 00000000..b15cd940
--- /dev/null
+++ b/src/android/EnumerateDevicesPlugin.java
@@ -0,0 +1,235 @@
+package cordova.plugin.iosrtc.enumeratedevices;
+
+import org.apache.cordova.CordovaPlugin;
+import org.apache.cordova.CallbackContext;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import android.annotation.TargetApi;
+import android.hardware.camera2.CameraManager;
+import android.hardware.camera2.CameraAccessException;
+import android.hardware.camera2.CameraCharacteristics;
+
+import android.media.AudioManager;
+import android.media.AudioDeviceInfo;
+import android.content.BroadcastReceiver;
+import android.content.Intent;
+import android.bluetooth.BluetoothDevice;
+import android.os.Build;
+import android.support.annotation.RequiresApi;
+import android.widget.Toast;
+import android.content.IntentFilter;
+
+import android.app.Activity;
+import android.content.Context;
+
+/**
+ * This class echoes a string called from JavaScript.
+ */
+public class EnumerateDevicesPlugin extends CordovaPlugin {
+
+ static final String FRONT_CAM = "Front Camera";
+ static final String BACK_CAM = "Back Camera";
+ static final String EXTERNAL_CAM = "External Camera";
+ static final String UNKNOWN_CAM = "Unknown Camera";
+
+ static final String BUILTIN_MIC = "Built-in Microphone";
+ static final String BLUETOOTH_MIC = "Bluetooth";
+ static final String WIRED_MIC = "Wired Microphone";
+ static final String USB_MIC = "USB Microphone";
+ static final String UNKNOWN_MIC = "Unknown Microphone";
+
+ private Context context;
+ private Activity activity;
+ AudioManager audioManager;
+ JSONArray devicesArray;
+
+
+ @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
+ @Override
+ public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
+ this.context = cordova.getActivity().getApplicationContext();
+ this.activity = cordova.getActivity();
+ this.audioManager = (AudioManager) this.activity.getSystemService(this.context.AUDIO_SERVICE);
+
+ if (action.equals("enumerateDevices")) {
+
+ this.enumerateDevices(args, callbackContext);
+ return true;
+
+ } else if (action.equals("addDeviceListener")) {
+ IntentFilter filter = new IntentFilter();
+ filter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED);
+ filter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED);
+ filter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED);
+ filter.addAction(Intent.ACTION_HEADSET_PLUG);
+ context.registerReceiver(BTReceiver, filter);
+ return true;
+ }
+ return false;
+ }
+
+ // The BroadcastReceiver that listens for bluetooth broadcasts
+ private final BroadcastReceiver BTReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+
+ if (BluetoothDevice.ACTION_ACL_CONNECTED.equals(action)) {
+ Toast.makeText(context, "Bluetooth connected", Toast.LENGTH_SHORT).show();
+ } else if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)) {
+ Toast.makeText(context, "Bluetooth disconnected", Toast.LENGTH_SHORT).show();
+ } else if (Intent.ACTION_HEADSET_PLUG.equals(action)) {
+ int state = intent.getIntExtra("state", -1);
+ switch (state) {
+ case 0:
+ Toast.makeText(context, "Wired device disconnected", Toast.LENGTH_SHORT).show();
+ break;
+ case 1:
+ Toast.makeText(context, "Wired device connected", Toast.LENGTH_SHORT).show();
+ break;
+ default:
+ break;
+ }
+ }
+ fireEvent("devicechange");
+ }
+ };
+
+ @TargetApi(Build.VERSION_CODES.M)
+ @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
+ private void enumerateDevices(JSONArray args, CallbackContext callback) {
+
+ this.devicesArray = new JSONArray();
+
+ this.getMics();
+ this.getCams();
+ callback.success(this.devicesArray);
+ }
+
+ @RequiresApi(api = Build.VERSION_CODES.M)
+ private void getMics() {
+ AudioDeviceInfo[] mics = this.audioManager.getDevices(AudioManager.GET_DEVICES_ALL);
+ String label = "";
+
+ for (int i = 0; i < mics.length; i++) {
+ Integer type = mics[i].getType();
+ if ((type == AudioDeviceInfo.TYPE_BLUETOOTH_SCO || type == AudioDeviceInfo.TYPE_BUILTIN_MIC
+ || type == AudioDeviceInfo.TYPE_WIRED_HEADSET || type == AudioDeviceInfo.TYPE_USB_DEVICE)
+ ) {
+ JSONObject device = new JSONObject();
+
+ label = this.getAudioType(mics[i]);
+ try {
+ device.put("deviceId", Integer.toString(mics[i].getId()));
+ device.put("groupId", "");
+ device.put("kind", "audioinput");
+ device.put("label", label);
+ this.devicesArray.put(device);
+ } catch (JSONException e) {
+ System.out.println("ERROR JSONException " + e.toString());
+ }
+ }
+ }
+ }
+
+ @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
+ private void getCams() {
+ // Video inputs
+ CameraManager camera = (CameraManager) this.activity.getSystemService(this.context.CAMERA_SERVICE);
+
+ try {
+ String[] cameraId = camera.getCameraIdList();
+ CameraCharacteristics characteristics;
+ String label = "";
+
+ for (int i = 0; i < cameraId.length; i++) {
+ JSONObject device = new JSONObject();
+ characteristics = camera.getCameraCharacteristics(cameraId[i]);
+ label = this.getVideoType(characteristics);
+ device.put("deviceId", cameraId[i]);
+ device.put("groupId", "");
+ device.put("kind", "videoinput");
+ device.put("label", label);
+ this.devicesArray.put(device);
+ }
+
+ } catch (CameraAccessException e) {
+ System.out.println("ERROR IOException " + e.toString());
+
+ } catch (JSONException e) {
+ System.out.println("ERROR IOException " + e.toString());
+ }
+ }
+
+ @RequiresApi(api = Build.VERSION_CODES.M)
+ private String getAudioType(AudioDeviceInfo input) {
+ String deviceType = "";
+
+ switch (input.getType()) {
+ case AudioDeviceInfo.TYPE_BLUETOOTH_SCO:
+ deviceType = input.getProductName().toString() + " " + BLUETOOTH_MIC;
+ break;
+ case AudioDeviceInfo.TYPE_BUILTIN_MIC:
+ deviceType = input.getProductName().toString() + " " + BUILTIN_MIC;
+ break;
+ case AudioDeviceInfo.TYPE_WIRED_HEADSET:
+ deviceType = input.getProductName().toString() + " " + WIRED_MIC;
+ break;
+ case AudioDeviceInfo.TYPE_USB_DEVICE:
+ deviceType = input.getProductName().toString() + " " + USB_MIC;
+ break;
+ default:
+ deviceType = UNKNOWN_MIC;
+ break;
+ }
+
+ return deviceType;
+ }
+
+ @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
+ private String getVideoType(CameraCharacteristics input) {
+ String deviceType = "";
+ String num = "";
+
+ try {
+ for (int i = 0; i < this.devicesArray.length(); ++i) {
+ JSONObject obj = this.devicesArray.getJSONObject(i);
+ String id = obj.getString("label");
+ if (id.contains(EXTERNAL_CAM)) {
+ num = Integer.toString(Integer.parseInt(num) + 1);
+ }
+ }
+ } catch (JSONException e) {
+ System.out.println("ERROR JSONException " + e.toString());
+ }
+
+ switch (input.get(CameraCharacteristics.LENS_FACING)) {
+ case CameraCharacteristics.LENS_FACING_FRONT:
+ deviceType = FRONT_CAM;
+ break;
+ case CameraCharacteristics.LENS_FACING_BACK:
+ deviceType = BACK_CAM;
+ break;
+ case CameraCharacteristics.LENS_FACING_EXTERNAL:
+ deviceType = EXTERNAL_CAM + " " + num;
+ break;
+ default:
+ deviceType = UNKNOWN_CAM;
+ }
+
+ return deviceType;
+ }
+
+ public void fireEvent(String eventName) {
+
+ final String js = "javascript:(function(){" +
+ "var event = new CustomEvent('" + eventName + "');" +
+ "setTimeout(() => { navigator.mediaDevices.dispatchEvent(event); }, 500);" +
+ "})()";
+
+ this.activity.runOnUiThread(() -> webView.loadUrl(js));
+ }
+}
\ No newline at end of file
diff --git a/src/PluginEnumerateDevices.swift b/src/ios/PluginEnumerateDevices.swift
similarity index 100%
rename from src/PluginEnumerateDevices.swift
rename to src/ios/PluginEnumerateDevices.swift
diff --git a/src/PluginGetUserMedia.swift b/src/ios/PluginGetUserMedia.swift
similarity index 100%
rename from src/PluginGetUserMedia.swift
rename to src/ios/PluginGetUserMedia.swift
diff --git a/src/PluginMediaStream.swift b/src/ios/PluginMediaStream.swift
similarity index 100%
rename from src/PluginMediaStream.swift
rename to src/ios/PluginMediaStream.swift
diff --git a/src/PluginMediaStreamRenderer.swift b/src/ios/PluginMediaStreamRenderer.swift
similarity index 100%
rename from src/PluginMediaStreamRenderer.swift
rename to src/ios/PluginMediaStreamRenderer.swift
diff --git a/src/PluginMediaStreamTrack.swift b/src/ios/PluginMediaStreamTrack.swift
similarity index 100%
rename from src/PluginMediaStreamTrack.swift
rename to src/ios/PluginMediaStreamTrack.swift
diff --git a/src/PluginRTCAudioController.swift b/src/ios/PluginRTCAudioController.swift
similarity index 100%
rename from src/PluginRTCAudioController.swift
rename to src/ios/PluginRTCAudioController.swift
diff --git a/src/PluginRTCDTMFSender.swift b/src/ios/PluginRTCDTMFSender.swift
similarity index 100%
rename from src/PluginRTCDTMFSender.swift
rename to src/ios/PluginRTCDTMFSender.swift
diff --git a/src/PluginRTCDataChannel.swift b/src/ios/PluginRTCDataChannel.swift
similarity index 100%
rename from src/PluginRTCDataChannel.swift
rename to src/ios/PluginRTCDataChannel.swift
diff --git a/src/PluginRTCPeerConnection.swift b/src/ios/PluginRTCPeerConnection.swift
similarity index 100%
rename from src/PluginRTCPeerConnection.swift
rename to src/ios/PluginRTCPeerConnection.swift
diff --git a/src/PluginRTCPeerConnectionConfig.swift b/src/ios/PluginRTCPeerConnectionConfig.swift
similarity index 100%
rename from src/PluginRTCPeerConnectionConfig.swift
rename to src/ios/PluginRTCPeerConnectionConfig.swift
diff --git a/src/PluginRTCPeerConnectionConstraints.swift b/src/ios/PluginRTCPeerConnectionConstraints.swift
similarity index 100%
rename from src/PluginRTCPeerConnectionConstraints.swift
rename to src/ios/PluginRTCPeerConnectionConstraints.swift
diff --git a/src/PluginRTCTypes.swift b/src/ios/PluginRTCTypes.swift
similarity index 100%
rename from src/PluginRTCTypes.swift
rename to src/ios/PluginRTCTypes.swift
diff --git a/src/PluginRTCVideoCaptureController.swift b/src/ios/PluginRTCVideoCaptureController.swift
similarity index 100%
rename from src/PluginRTCVideoCaptureController.swift
rename to src/ios/PluginRTCVideoCaptureController.swift
diff --git a/src/PluginUtils.swift b/src/ios/PluginUtils.swift
similarity index 100%
rename from src/PluginUtils.swift
rename to src/ios/PluginUtils.swift
diff --git a/src/cordova-plugin-iosrtc-Bridging-Header.h b/src/ios/cordova-plugin-iosrtc-Bridging-Header.h
similarity index 100%
rename from src/cordova-plugin-iosrtc-Bridging-Header.h
rename to src/ios/cordova-plugin-iosrtc-Bridging-Header.h
diff --git a/src/iosrtcPlugin.swift b/src/ios/iosrtcPlugin.swift
similarity index 100%
rename from src/iosrtcPlugin.swift
rename to src/ios/iosrtcPlugin.swift
diff --git a/www/cordova-plugin-android-rtc.js b/www/cordova-plugin-android-rtc.js
new file mode 100644
index 00000000..c1493a25
--- /dev/null
+++ b/www/cordova-plugin-android-rtc.js
@@ -0,0 +1,95 @@
+/*
+ * cordova-plugin-iosrtc v6.0.16
+ * Cordova iOS plugin exposing the full WebRTC W3C JavaScript APIs
+ * Copyright 2015-2017 eFace2Face, Inc. (https://eface2face.com)
+ * Copyright 2015-2019 BasqueVoIPMafia (https://github.com/BasqueVoIPMafia)
+ * Copyright 2017-2020 Cordova-RTC (https://github.com/cordova-rtc)
+ * License MIT
+ */
+
+(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.androidrtc = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i