Using ionic plugin "name": "cordova-plugin-camera","version": "2.2.0". I am not getting front facing camera but opens back facing camera, also tried with cameraDirection : 1 as described on the link but it results in back facing camera. i have tested on Android 4.4 and 5.1
is there any way to get front facing camera open by switching or any other way or any fix?
Also debugged straight inside camera plugin code as on the link here i also got cameraDirection = 1 which is for front facing camera, but unable to resolve the problem.
$ionicPlatform.ready(function() {
//camera settings
$rootScope.options = {
quality: 50,
destinationType: Camera.DestinationType.DATA_URL,
sourceType: Camera.PictureSourceType.CAMERA,
encodingType: Camera.EncodingType.JPEG,
targetWidth: 100,
targetHeight: 100,
popoverOptions: CameraPopoverOptions,
saveToPhotoAlbum: false,
correctOrientation:true,
cameraDirection : Camera.Direction.FRONT
};
$cordovaCamera.getPicture($rootScope.options).then(function cameraSuccess(imageData) {
$rootScope.imageData = imageData;
},function cameraError(err){
console.log(err);
$rootScope.imageData = '';
})
})
According to Docs you have to pass number in cameraDirection
So in your code write as follow:
$rootScope.options = {
quality: 50,
destinationType: Camera.DestinationType.DATA_URL,
sourceType: Camera.PictureSourceType.CAMERA,
encodingType: Camera.EncodingType.JPEG,
targetWidth: 100,
targetHeight: 100,
popoverOptions: CameraPopoverOptions,
saveToPhotoAlbum: false,
correctOrientation:true,
cameraDirection : 1 // 0 means BACK, 1 means FRONT
};
Related
Cordova version is: 6.3.0
Cordova Android version is: 5.0.0
Camera Plugin version: cordova-plugin-camera 2.2.0 "Camera"
My code works on multiple devices with Android 5.0 and Android 6.0 but it does not working on Android 4.4, Android 4,3 etc.
In Android 4.4 and 4.3 camera plugin triggers both camera and library but it does not get into .then(function(ImageData){..} it goes into error function.
$scope.gallery = function() {
var options = {
quality : 80,
destinationType : Camera.DestinationType.DATA_URL,
sourceType : Camera.PictureSourceType.PHOTOLIBRARY,
allowEdit : false,
encodingType: Camera.EncodingType.JPEG,
popoverOptions: CameraPopoverOptions,
targetWidth: 500,
targetHeight: 500,
saveToPhotoAlbum: true,
correctOrientation: true
};
$cordovaCamera.getPicture(options).then(function(imageData) {
console.log('image');
imaged = imageData;
$scope.statusMessagePhoto = "photo saved ✓";
}, function(error) {
console.log(error.message);
alert(error.message);
});
};
$scope.savephoto = function(){
var options = {
quality : 80,
destinationType : Camera.DestinationType.DATA_URL,
sourceType : Camera.PictureSourceType.CAMERA,
allowEdit : false,
encodingType: Camera.EncodingType.JPEG,
popoverOptions: CameraPopoverOptions,
targetWidth: 500,
targetHeight: 500,
saveToPhotoAlbum: true,
correctOrientation: true
};
$cordovaCamera.getPicture(options).then(function(imageData) {
imaged = imageData;
$scope.statusMessagePhoto = "photo saved ✓";
} , function(error) {
console.log(error.message);
alert(error.message);
});
};
When i press savephoto button camera opens, but in console (log) i get the error "undefined" and the alert too, before even save or choose the photo i want.
Have anyone experienced the same error on Android 4.3 or 4.4. I repeat the code works perfect on Android 5.0 and above.
SOLVED!
remove this line from config.xml
<preference name="AndroidLaunchMode" value="singleInstance"/>
I am using the camera plugin for my Ionic application.
The camera is working fully when I try the browser application on the device, yet when I build and run the APK on my device the getPicture method is not fired.
$scope.takePictureBack = function () {
$ionicPlatform.ready(function () {
var cameraOptions = {
quality: 100,
targetHeight: 1080,
targetWidth: 1920,
destinationType: Camera.DestinationType.DATA_URL
};
var success = function (data) {
$scope.$apply(function () {
/*
remember to set the image ng-src in $apply,
i tried to set it from outside and it doesn't work.
*/
$scope.cameraPicBack = "data:image/jpeg;base64," + data;
});
};
var failure = function (message) {
};
//call the cordova camera plugin to open the device's camera
navigator.camera.getPicture(success, failure, cameraOptions);
})
};
I have tried testing with logs, and it seems that neither the failure callback or the success callback of the methods are reached.
Does anyone know of any complications with the camera plugin.
For the record my cordova and ionic is updated, and I am testing on a Galaxy s6 edge plus, with Android 6.0.1.
Please use this code i had tested it on android device. it working as per your need.Simply you have to increase the camera option . Here are the options.
quality: 75,
destinationType: Camera.DestinationType.DATA_URL,
sourceType: Camera.PictureSourceType.CAMERA,
allowEdit: true,
encodingType: Camera.EncodingType.JPEG,
targetWidth: 300,
targetHeight: 300,
popoverOptions: CameraPopoverOptions,
saveToPhotoAlbum: false
Futher if you have any query please feel free to contact me.
var onSuccess = function(imageUri){
$scope.report.imgUri = imageUri;
};
var onError = function(message){
alert('Failed because: ' + message);
};
$scope.capturePhoto = function(){
navigator.camera.getPicture(onSuccess, onError, {
quality: 40,
destinationType: navigator.camera.DestinationType.FILE_URI,
correctOrientation: true,
saveToPhotoAlbum: true,
encodingType: navigator.camera.EncodingType.PNG,
targetWidth: divWidth
});
};
I am building Cordova 3.5.0 on Samsung S3 with Android 4.3. The camera.capturePhoto function always ignore correctOrientation set, so the pic did not rotate to correct orientation. But it works fine on HTC Butterfly with Android 4.4. BTW, encodingType not work on android either. Any idea?
In some cases, setting navigator.camera.EncodingType.JPEG helped.
encodingType: Camera.EncodingType.JPEG,
mediaType: Camera.MediaType.PICTURE,
correctOrientation: true
In Android 4.4, using Camera API getPicture API will result in a enlarged dialog.
The code is below:
var sourceType = pictureSource.SAVEDPHOTOALBUM;
navigator.camera.getPicture(function(fileURI) {
// Success callback
}, function(message) {
// Fail callback
}, {quality: 50, destinationType: destinationType.FILE_URI, sourceType: sourceType, mediaType: mediaType, correctOrientation: false, saveToPhotoAlbum: true});
Change android:anyDensity property in the AndroidManifest.xml from false to true fix the problem
Trying to create a simple app that saves a photo to the phone's Photo Gallery. The photo doesn't appear to get saved to the Gallery, but I don't have any error messages. Using steroids as well.
Here's my application.js:
function cameraGetPicture() {
navigator.camera.getPicture(imageReceived, cameraFail, {
quality: 50,
destinationType: Camera.DestinationType.FILE_URI,
allowEdit: false,
correctOrientation: true,
targetWidth: 600
});
}
function imageReceived(imageURI) {
var image = document.querySelector('img#myImage');
image.src = imageURI;
imageURI = new steroids.File({
path: "image.png",
relativeTo: steroids.app.userFilesPath
});
}
function cameraFail(message) {
alert("Camera error: " + message);
}
Just add following property to Object which you are passing to navigator.camera.getPicture()
saveToPhotoAlbum: true
Your code will look like:
navigator.camera.getPicture(imageReceived, cameraFail, {
quality: 50,
destinationType: Camera.DestinationType.FILE_URI,
allowEdit: false,
correctOrientation: true,
targetWidth: 600,
saveToPhotoAlbum: true
});
This works for me in both android & iOS. Hopefully this will work for you.