mirror of
https://github.com/apache/cordova-plugin-camera.git
synced 2025-01-19 03:42:52 +08:00
CB-4003 - Add config option to not use location information in Camera plugin (and default to not use it)
This commit is contained in:
parent
fa30a56760
commit
ae22820046
@ -85,6 +85,13 @@ than `DATA_URL`.
|
|||||||
- Windows Phone 7 and 8
|
- Windows Phone 7 and 8
|
||||||
- Windows 8
|
- Windows 8
|
||||||
|
|
||||||
|
### Preferences (iOS)
|
||||||
|
|
||||||
|
- __CameraUsesGeolocation__ (boolean, defaults to false). For capturing JPEGs, set to true to get geolocation data in the EXIF header. This will trigger a request for geolocation permissions if set to true.
|
||||||
|
|
||||||
|
<preference name="CameraUsesGeolocation" value="false" />
|
||||||
|
|
||||||
|
|
||||||
### Amazon Fire OS Quirks
|
### Amazon Fire OS Quirks
|
||||||
|
|
||||||
Amazon Fire OS uses intents to launch the camera activity on the device to capture
|
Amazon Fire OS uses intents to launch the camera activity on the device to capture
|
||||||
@ -226,7 +233,7 @@ Optional parameters to customize the camera settings.
|
|||||||
FRONT : 1 // Use the front-facing camera
|
FRONT : 1 // Use the front-facing camera
|
||||||
};
|
};
|
||||||
|
|
||||||
### Amazon Fire OSQuirks
|
### Amazon Fire OS Quirks
|
||||||
|
|
||||||
- Any `cameraDirection` value results in a back-facing photo.
|
- Any `cameraDirection` value results in a back-facing photo.
|
||||||
|
|
||||||
|
@ -126,6 +126,7 @@
|
|||||||
<feature name="Camera">
|
<feature name="Camera">
|
||||||
<param name="ios-package" value="CDVCamera" />
|
<param name="ios-package" value="CDVCamera" />
|
||||||
</feature>
|
</feature>
|
||||||
|
<preference name="CameraUsesGeolocation" value="false" />
|
||||||
</config-file>
|
</config-file>
|
||||||
|
|
||||||
<js-module src="www/ios/CameraPopoverHandle.js" name="CameraPopoverHandle">
|
<js-module src="www/ios/CameraPopoverHandle.js" name="CameraPopoverHandle">
|
||||||
|
@ -57,6 +57,7 @@ typedef NSUInteger CDVMediaType;
|
|||||||
@property (assign) bool cropToSize;
|
@property (assign) bool cropToSize;
|
||||||
@property (strong) UIView* webView;
|
@property (strong) UIView* webView;
|
||||||
@property (assign) BOOL popoverSupported;
|
@property (assign) BOOL popoverSupported;
|
||||||
|
@property (assign) BOOL usesGeolocation;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@ -49,6 +49,13 @@ static NSSet* org_apache_cordova_validArrowDirections;
|
|||||||
|
|
||||||
@synthesize hasPendingOperation, pickerController, locationManager;
|
@synthesize hasPendingOperation, pickerController, locationManager;
|
||||||
|
|
||||||
|
|
||||||
|
- (BOOL)usesGeolocation
|
||||||
|
{
|
||||||
|
id useGeo = [self.commandDelegate.settings objectForKey:[@"CameraUsesGeolocation" lowercaseString]];
|
||||||
|
return [(NSNumber*)useGeo boolValue];
|
||||||
|
}
|
||||||
|
|
||||||
- (BOOL)popoverSupported
|
- (BOOL)popoverSupported
|
||||||
{
|
{
|
||||||
return (NSClassFromString(@"UIPopoverController") != nil) &&
|
return (NSClassFromString(@"UIPopoverController") != nil) &&
|
||||||
@ -121,6 +128,7 @@ static NSSet* org_apache_cordova_validArrowDirections;
|
|||||||
// we need to capture this state for memory warnings that dealloc this object
|
// we need to capture this state for memory warnings that dealloc this object
|
||||||
cameraPicker.webView = self.webView;
|
cameraPicker.webView = self.webView;
|
||||||
cameraPicker.popoverSupported = [self popoverSupported];
|
cameraPicker.popoverSupported = [self popoverSupported];
|
||||||
|
cameraPicker.usesGeolocation = [self usesGeolocation];
|
||||||
|
|
||||||
cameraPicker.correctOrientation = [[arguments objectAtIndex:8] boolValue];
|
cameraPicker.correctOrientation = [[arguments objectAtIndex:8] boolValue];
|
||||||
cameraPicker.saveToPhotoAlbum = [[arguments objectAtIndex:9] boolValue];
|
cameraPicker.saveToPhotoAlbum = [[arguments objectAtIndex:9] boolValue];
|
||||||
@ -306,20 +314,22 @@ static NSSet* org_apache_cordova_validArrowDirections;
|
|||||||
data = UIImageJPEGRepresentation(returnedImage, 1.0);
|
data = UIImageJPEGRepresentation(returnedImage, 1.0);
|
||||||
} else {
|
} else {
|
||||||
data = UIImageJPEGRepresentation(returnedImage, cameraPicker.quality / 100.0f);
|
data = UIImageJPEGRepresentation(returnedImage, cameraPicker.quality / 100.0f);
|
||||||
|
|
||||||
NSDictionary *controllerMetadata = [info objectForKey:@"UIImagePickerControllerMediaMetadata"];
|
if (cameraPicker.usesGeolocation) {
|
||||||
if (controllerMetadata) {
|
NSDictionary *controllerMetadata = [info objectForKey:@"UIImagePickerControllerMediaMetadata"];
|
||||||
self.data = data;
|
if (controllerMetadata) {
|
||||||
self.metadata = [[NSMutableDictionary alloc] init];
|
self.data = data;
|
||||||
|
self.metadata = [[NSMutableDictionary alloc] init];
|
||||||
NSMutableDictionary *EXIFDictionary = [[controllerMetadata objectForKey:(NSString *)kCGImagePropertyExifDictionary]mutableCopy];
|
|
||||||
if (EXIFDictionary) [self.metadata setObject:EXIFDictionary forKey:(NSString *)kCGImagePropertyExifDictionary];
|
NSMutableDictionary *EXIFDictionary = [[controllerMetadata objectForKey:(NSString *)kCGImagePropertyExifDictionary]mutableCopy];
|
||||||
|
if (EXIFDictionary) [self.metadata setObject:EXIFDictionary forKey:(NSString *)kCGImagePropertyExifDictionary];
|
||||||
if (IsAtLeastiOSVersion(@"8.0")) {
|
|
||||||
[[self locationManager] performSelector:NSSelectorFromString(@"requestWhenInUseAuthorization") withObject:nil afterDelay:0];
|
if (IsAtLeastiOSVersion(@"8.0")) {
|
||||||
|
[[self locationManager] performSelector:NSSelectorFromString(@"requestWhenInUseAuthorization") withObject:nil afterDelay:0];
|
||||||
|
}
|
||||||
|
[[self locationManager] startUpdatingLocation];
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
[[self locationManager] startUpdatingLocation];
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user