Merge branch 'master' of git://github.com/phonegap/phonegap-android

This commit is contained in:
macdonst 2011-07-21 22:31:26 -04:00
commit 7c39edfcd0
5 changed files with 43 additions and 4 deletions

View File

@ -99,7 +99,7 @@ function get_contacts() {
var obj = new ContactFindOptions(); var obj = new ContactFindOptions();
obj.filter = ""; obj.filter = "";
obj.multiple = true; obj.multiple = true;
navigator.service.contacts.find( navigator.contacts.find(
[ "displayName", "name" ], contacts_success, [ "displayName", "name" ], contacts_success,
fail, obj); fail, obj);
} }

View File

@ -78,6 +78,12 @@ Camera.prototype.getPicture = function(successCallback, errorCallback, options)
if (options.quality) { if (options.quality) {
quality = this.options.quality; quality = this.options.quality;
} }
var maxResolution = 0;
if (options.maxResolution) {
maxResolution = this.options.maxResolution;
}
var destinationType = Camera.DestinationType.DATA_URL; var destinationType = Camera.DestinationType.DATA_URL;
if (this.options.destinationType) { if (this.options.destinationType) {
destinationType = this.options.destinationType; destinationType = this.options.destinationType;
@ -86,7 +92,7 @@ Camera.prototype.getPicture = function(successCallback, errorCallback, options)
if (typeof this.options.sourceType === "number") { if (typeof this.options.sourceType === "number") {
sourceType = this.options.sourceType; sourceType = this.options.sourceType;
} }
PhoneGap.exec(successCallback, errorCallback, "Camera", "takePicture", [quality, destinationType, sourceType]); PhoneGap.exec(successCallback, errorCallback, "Camera", "takePicture", [quality, destinationType, sourceType, maxResolution]);
}; };
PhoneGap.addConstructor(function() { PhoneGap.addConstructor(function() {

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project name="PhoneGap" default="help"> <project name="PhoneGap" default="jar">
<!-- LOAD VERSION --> <!-- LOAD VERSION -->
<loadfile property="version" srcFile="../VERSION"> <loadfile property="version" srcFile="../VERSION">

1
framework/res/xml/plugins.xml Executable file → Normal file
View File

@ -10,7 +10,6 @@
<plugin name="Contacts" value="com.phonegap.ContactManager"/> <plugin name="Contacts" value="com.phonegap.ContactManager"/>
<plugin name="Crypto" value="com.phonegap.CryptoHandler"/> <plugin name="Crypto" value="com.phonegap.CryptoHandler"/>
<plugin name="File" value="com.phonegap.FileUtils"/> <plugin name="File" value="com.phonegap.FileUtils"/>
<plugin name="Location" value="com.phonegap.GeoBroker"/>
<plugin name="Network Status" value="com.phonegap.NetworkManager"/> <plugin name="Network Status" value="com.phonegap.NetworkManager"/>
<plugin name="Notification" value="com.phonegap.Notification"/> <plugin name="Notification" value="com.phonegap.Notification"/>
<plugin name="Storage" value="com.phonegap.Storage"/> <plugin name="Storage" value="com.phonegap.Storage"/>

View File

@ -45,6 +45,7 @@ public class CameraLauncher extends Plugin {
private static final int SAVEDPHOTOALBUM = 2; // Choose image from picture library (same as PHOTOLIBRARY for Android) private static final int SAVEDPHOTOALBUM = 2; // Choose image from picture library (same as PHOTOLIBRARY for Android)
private int mQuality; // Compression quality hint (0-100: 0=low quality & high compression, 100=compress of max quality) private int mQuality; // Compression quality hint (0-100: 0=low quality & high compression, 100=compress of max quality)
private int mMaxResolution; // Maximum resolution of picture taken from camera (width or height, depending on the ratio)
private Uri imageUri; // Uri of captured image private Uri imageUri; // Uri of captured image
public String callbackId; public String callbackId;
@ -66,6 +67,7 @@ public class CameraLauncher extends Plugin {
PluginResult.Status status = PluginResult.Status.OK; PluginResult.Status status = PluginResult.Status.OK;
String result = ""; String result = "";
this.callbackId = callbackId; this.callbackId = callbackId;
this.mMaxResolution = 0;
try { try {
if (action.equals("takePicture")) { if (action.equals("takePicture")) {
@ -77,6 +79,9 @@ public class CameraLauncher extends Plugin {
if (args.length() > 2) { if (args.length() > 2) {
srcType = args.getInt(2); srcType = args.getInt(2);
} }
if (args.length() > 3) {
this.mMaxResolution = args.getInt(3);
}
if (srcType == CAMERA) { if (srcType == CAMERA) {
this.takePicture(args.getInt(0), destType); this.takePicture(args.getInt(0), destType);
} }
@ -146,6 +151,32 @@ public class CameraLauncher extends Plugin {
new String("Get Picture")), (srcType+1)*16 + returnType + 1); new String("Get Picture")), (srcType+1)*16 + returnType + 1);
} }
/**
* Scales the bitmap according to the requested size.
*
* @param bitmap The bitmap to scale.
* @return Bitmap A new Bitmap object of the same bitmap after scaling.
*/
public Bitmap scaleBitmap(Bitmap bitmap) {
int newWidth = 0;
int newHeight = 0;
if (this.mMaxResolution != 0) {
// Check if a horizontal or vertical picture was taken
if (bitmap.getWidth() > bitmap.getHeight()) {
newWidth = this.mMaxResolution;
newHeight = (int)(((float)bitmap.getHeight() / (float)bitmap.getWidth()) * newWidth);
} else {
newHeight = this.mMaxResolution;
newWidth = (int)(((float)bitmap.getWidth() / (float)bitmap.getHeight()) * newHeight);
}
// Scale the bitmap before returning a compressed image
return Bitmap.createScaledBitmap(bitmap, newWidth, newHeight, true);
}
return bitmap;
}
/** /**
* Called when the camera view exits. * Called when the camera view exits.
* *
@ -175,6 +206,8 @@ public class CameraLauncher extends Plugin {
bitmap = android.graphics.BitmapFactory.decodeStream(resolver.openInputStream(uri)); bitmap = android.graphics.BitmapFactory.decodeStream(resolver.openInputStream(uri));
} }
bitmap = scaleBitmap(bitmap);
// If sending base64 image back // If sending base64 image back
if (destType == DATA_URL) { if (destType == DATA_URL) {
this.processPicture(bitmap); this.processPicture(bitmap);
@ -237,6 +270,7 @@ public class CameraLauncher extends Plugin {
if (destType == DATA_URL) { if (destType == DATA_URL) {
try { try {
Bitmap bitmap = android.graphics.BitmapFactory.decodeStream(resolver.openInputStream(uri)); Bitmap bitmap = android.graphics.BitmapFactory.decodeStream(resolver.openInputStream(uri));
bitmap = scaleBitmap(bitmap);
this.processPicture(bitmap); this.processPicture(bitmap);
bitmap.recycle(); bitmap.recycle();
bitmap = null; bitmap = null;