Ravi Vaghela
Ravi Vaghela

Reputation: 3420

android application crash only in samsung device while getting image from camera

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
  1. Micromax Canvas Knight - kitkat
  2. Sony Xperia c3 - lollipop
  3. Micromax Canvas 2- jellybean

Above device in complite work

  1. Samsung galaxy grand quattro - jellybean (Application Crashed)

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

Answers (2)

Jose Nobile
Jose Nobile

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

rekire
rekire

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

Related Questions