Reputation: 3420
In my application i am getting image from camera. this code completely work on most devices but when i test in sumsung galaxy grand quattro application crashed.
Here is my Try:
if(resultCode == RESULT_OK) {
Bitmap photo = (Bitmap)data.getExtras().get("data");
try {
resized = Bitmap.createScaledBitmap(photo, 200, 200, true);
final_image = Bitmap.createScaledBitmap(photo, 200, 200, true);
} catch(Exception e) {
Toast.makeText(getApplicationContext(), "Failed To Load ", 5000).show();
}
int currentapiVersion = android.os.Build.VERSION.SDK_INT;
if(currentapiVersion >= android.os.Build.VERSION_CODES.KITKAT) {
Bitmap blurredBitmap = BlurBuilder.blur(getApplicationContext(), resized);
BitmapDrawable ob = new BitmapDrawable(getResources(), blurredBitmap);
ll.setBackground(ob);
} else {
Bitmap blur = BitmapFactory.decodeResource(getResources(), R.drawable.blurback);
BitmapDrawable ob = new BitmapDrawable(getResources(), blur);
ll.setBackground(ob);
}
try {
Bitmap circleimg = getCircularBitmapWithWhiteBorder(resized, 2);
iv.setImageBitmap(circleimg);
final_image.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] b = baos.toByteArray();
String encodedImageString = Base64.encodeToString(b, Base64.DEFAULT);
imgpath = encodedImageString;
} catch(Exception e) {
}
}
Note :
I tasted my app in
Above device in complite work
LogCat:
java.lang.RuntimeException: Unable to resume activity {com.example.camera/com.example.camera.MainActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=Intent { act=inline-data dat=content://media/external/images/media/50298 (has extras) }} to activity {com.example.camera/com.example.camera.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2643)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2671)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2144)
at android.app.ActivityThread.access$700(ActivityThread.java:143)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4960)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=Intent { act=inline-data dat=content://media/external/images/media/50298 (has extras) }} to activity {com.example.camera/com.example.camera.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.deliverResults(ActivityThread.java:3209)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2630)
... 12 more
Caused by: java.lang.NullPointerException
at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:490)
at com.example.camera.MainActivity.onActivityResult(MainActivity.java:93)
at android.app.Activity.dispatchActivityResult(Activity.java:5387)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3205)
... 13 more
Upvotes: 0
Views: 2045
Reputation: 3363
This is not a solution, but can help to isolate the problem.
Open the native camera app, select a lower resolution, 2Mpx eg, now, open your app and test it.
I use Cordova, and I realize the App crash when the native camera app has highest resolutions.
Could be a memory issue in the moment that try to resize the image, because it needs open in memory or the need a big cache space in the main storage and there is not space available.
Upvotes: 0
Reputation: 47945
The reason for your crash is that data is null. This happens on some devices, instead use the content provider. The data will contain the path you can read out:
Bitmap photo;
if(data.getData() == null) {
photo = (Bitmap)data.getExtras().get("data");
} else {
photo = MediaStore.Images.Media.getBitmap(getContentResolver(), data.getData());
}
That should work for you.
Upvotes: 2