【问题标题】:java.lang.OutOfMemoryError handling 14 data from Camerajava.lang.OutOfMemoryError 处理来自 Camera 的 14 个数据
【发布时间】:2020-09-10 09:57:41
【问题描述】:

我正在制作一个审核应用程序,我必须从单选按钮和 14 个检查点的图像中收集是/否。

该应用程序在我的具有 Android 10 设备的设备上运行良好,但是在以任何随机方式收集 4-6 张图像并在相应的 Imageview 上显示它们并在 String 中收集 Byte[] 之后在某些设备上进行测试时,例如在某些 Nougat 设备中变量应用程序崩溃日志中也没有错误(现在通过调试器找到它,见下文)。看看相机的代码。应用程序在返回活动时单击照片后崩溃。


 public void ClickImageFromCamera(String code) {


        Intent CamIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

        File destination = new File(Environment.getExternalStorageDirectory(),
                System.currentTimeMillis() + ".jpg");
        String img_Decodable_Str = String.valueOf(destination);
        Log.e("img fromCam", String.valueOf(destination));

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            uri = FileProvider.getUriForFile(getActivity(), getActivity().getApplicationContext().getPackageName() + ".provider", destination);
            CamIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, uri);
        } else {
            uri = Uri.fromFile(destination);
            CamIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, uri);
        }
        CamIntent.putExtra("return-data", true);
        startActivityForResult(CamIntent, Integer.parseInt(code));






    }

 @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        Log.e("Request code", String.valueOf(resultCode));
        Log.e("ResultCode ", String.valueOf(resultCode));
        if (requestCode == 50) {
            if (resultCode == -1) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                    //this is above marshmellow
                    previewCapturedImage(50);
                } else {
                    //this is below marshmellow
                    previewCapturedImage1(50);
                }


            } else if (resultCode == 0) {
                // user cancelled Image capture
                Toast.makeText(getActivity(),
                        "User cancelled image capture", Toast.LENGTH_SHORT)
                        .show();
            }

        }else {
            // failed to capture image
            // Toast.makeText(getActivity(),"Sorry! Failed to capture image", Toast.LENGTH_SHORT).show();
        }


        if (requestCode == 51) {
            if (resultCode == -1) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                    //this is above marshmellow
                    previewCapturedImage(51);
                } else {
                    //this is below marshmellow
                    previewCapturedImage1(51);
                }

            } else if (resultCode == 0) {
                // user cancelled Image capture
                Toast.makeText(getActivity(),
                        "User cancelled image capture", Toast.LENGTH_SHORT)
                        .show();
            } else {
                // failed to capture image

            }

        }
        if (requestCode == 52) {
            if (resultCode == -1) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                    //this is above marshmellow
                    previewCapturedImage(52);
                } else {
                    //this is below marshmellow
                    previewCapturedImage1(52);
                }

            } else if (resultCode == 0) {
                // user cancelled Image capture
                Toast.makeText(getActivity(),
                        "User cancelled image capture", Toast.LENGTH_SHORT)
                        .show();
            } else {
                // failed to capture image

            }

        }
        if (requestCode == 53) {
            if (resultCode == -1) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                    //this is above marshmellow
                    previewCapturedImage(53);
                } else {
                    //this is below marshmellow
                    previewCapturedImage1(53);
                }

            } else if (resultCode == 0) {
                // user cancelled Image capture
                Toast.makeText(getActivity(),
                        "User cancelled image capture", Toast.LENGTH_SHORT)
                        .show();
            } else {
                // failed to capture image

            }

        }
        if (requestCode == 54) {
            if (resultCode == -1) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                    //this is above marshmellow
                    previewCapturedImage(54);
                } else {
                    //this is below marshmellow
                    previewCapturedImage1(54);
                }

            } else if (resultCode == 0) {
                // user cancelled Image capture
                Toast.makeText(getActivity(),
                        "User cancelled image capture", Toast.LENGTH_SHORT)
                        .show();
            } else {
                // failed to capture image

            }

        }
        if (requestCode == 55) {
            if (resultCode == -1) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                    //this is above marshmellow
                    previewCapturedImage(55);
                } else {
                    //this is below marshmellow
                    previewCapturedImage1(55);
                }

            } else if (resultCode == 0) {
                // user cancelled Image capture
                Toast.makeText(getActivity(),
                        "User cancelled image capture", Toast.LENGTH_SHORT)
                        .show();
            } else {
                // failed to capture image

            }

        }
        if (requestCode == 56) {
            if (resultCode == -1) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                    //this is above marshmellow
                    previewCapturedImage(56);
                } else {
                    //this is below marshmellow
                    previewCapturedImage1(56);
                }

            } else if (resultCode == 0) {
                // user cancelled Image capture
                Toast.makeText(getActivity(),
                        "User cancelled image capture", Toast.LENGTH_SHORT)
                        .show();
            } else {
                // failed to capture image

            }

        }
        if (requestCode == 57) {
            if (resultCode == -1) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                    //this is above marshmellow
                    previewCapturedImage(57);
                } else {
                    //this is below marshmellow
                    previewCapturedImage1(57);
                }

            } else if (resultCode == 0) {
                // user cancelled Image capture
                Toast.makeText(getActivity(),
                        "User cancelled image capture", Toast.LENGTH_SHORT)
                        .show();
            } else {
                // failed to capture image

            }

        }
        if (requestCode == 58) {
            if (resultCode == -1) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                    //this is above marshmellow
                    previewCapturedImage(58);
                } else {
                    //this is below marshmellow
                    previewCapturedImage1(58);
                }

            } else if (resultCode == 0) {
                // user cancelled Image capture
                Toast.makeText(getActivity(),
                        "User cancelled image capture", Toast.LENGTH_SHORT)
                        .show();
            } else {
                // failed to capture image

            }

        }
        if (requestCode == 59) {
            if (resultCode == -1) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                    //this is above marshmellow
                    previewCapturedImage(59);
                } else {
                    //this is below marshmellow
                    previewCapturedImage1(59);
                }

            } else if (resultCode == 0) {
                // user cancelled Image capture
                Toast.makeText(getActivity(),
                        "User cancelled image capture", Toast.LENGTH_SHORT)
                        .show();
            } else {
                // failed to capture image

            }

        }
        if (requestCode == 60) {
            if (resultCode == -1) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                    //this is above marshmellow
                    previewCapturedImage(60);
                } else {
                    //this is below marshmellow
                    previewCapturedImage1(60);
                }

            } else if (resultCode == 0) {
                // user cancelled Image capture
                Toast.makeText(getActivity(),
                        "User cancelled image capture", Toast.LENGTH_SHORT)
                        .show();
            } else {
                // failed to capture image

            }

        }
        if (requestCode == 61) {
            if (resultCode == -1) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                    //this is above marshmellow
                    previewCapturedImage(61);
                } else {
                    //this is below marshmellow
                    previewCapturedImage1(61);
                }

            } else if (resultCode == 0) {
                // user cancelled Image capture
                Toast.makeText(getActivity(),
                        "User cancelled image capture", Toast.LENGTH_SHORT)
                        .show();
            } else {
                // failed to capture image

            }

        }
        if (requestCode == 62) {
            if (resultCode == -1) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                    //this is above marshmellow
                    previewCapturedImage(62);
                } else {
                    //this is below marshmellow
                    previewCapturedImage1(62);
                }

            } else if (resultCode == 0) {
                // user cancelled Image capture
                Toast.makeText(getActivity(),
                        "User cancelled image capture", Toast.LENGTH_SHORT)
                        .show();
            } else {
                // failed to capture image

            }

        }
        if (requestCode == 63) {
            if (resultCode == -1) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                    //this is above marshmellow
                    previewCapturedImage(63);
                } else {
                    //this is below marshmellow
                    previewCapturedImage1(63);
                }

            } else if (resultCode == 0) {
                // user cancelled Image capture
                Toast.makeText(getActivity(),
                        "User cancelled image capture", Toast.LENGTH_SHORT)
                        .show();
            } else {
                // failed to capture image

            }

        }


    }

 public void previewCapturedImage(int code) {

        try {



            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            BitmapFactory.Options options = new BitmapFactory.Options();
            options.inSampleSize = 8;
            // ContentResolver contentResolver = getContentResolver();
            InputStream inputStream = null;

            try {
                inputStream = getActivity().getContentResolver().openInputStream(uri);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }


            // image_stream = mContext.getContentResolver().openInputStream(sendUri);
            bitmap = BitmapFactory.decodeStream(inputStream);
            bitmap.compress(Bitmap.CompressFormat.JPEG, 50, byteArrayOutputStream);
            byte[] imageBytes = byteArrayOutputStream.toByteArray();


            int nh = (int) (bitmap.getHeight() * (512.0 / bitmap.getWidth()));
            Bitmap scaled = Bitmap.createScaledBitmap(bitmap, 512, nh, true);
            scaled.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
           /* byte[] imageBytes1 = byteArrayOutputStream.toByteArray();
            String encoded = Base64.encodeToString(imageBytes1, Base64.NO_WRAP);
            Log.e("encode",encoded);*/
            Log.e("Original   dimensions", bitmap.getWidth() + " " + bitmap.getHeight());
            Log.e("Compressed dimensions", scaled.getWidth() + " " + scaled.getHeight());
            /*int size = scaled.getRowBytes() * scaled.getHeight();
            Log.e("size", String.valueOf(size));
            java.nio.ByteBuffer b = java.nio.ByteBuffer.allocate(size);

            scaled.copyPixelsToBuffer(b);
 byte[] bytes = new byte[size];
            Log.e("bytes", String.valueOf(bytes));
*/

            if(code ==50) {
                imageCode1 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode1);
                set_img_fascia.setImageBitmap(bitmap);

            }
            if(code ==51) {
                imageCode2 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode2);
                set_img_lollypop.setImageBitmap(bitmap);

            }
            if(code ==52) {
                imageCode3 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode3);
                set_img_ATM_Count.setImageBitmap(bitmap);

            }
            if(code ==53) {
                imageCode4 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode4);
                set_img_ATM_Cooling.setImageBitmap(bitmap);

            }
            if(code ==54) {
                imageCode5 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode5);
                set_img_ATM_Backroom_Locked.setImageBitmap(bitmap);

            }
            if(code ==55) {
                imageCode6 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode6);
                set_img_ups_room.setImageBitmap(bitmap);

            }
            if(code ==56) {
                imageCode7 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode7);
                set_img_Branch_Shutter_Damaged.setImageBitmap(bitmap);

            }
            if(code ==57) {
                imageCode8 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode8);
                set_img_Branch_Round_Taken.setImageBitmap(bitmap);

            }
            if(code ==58) {
                imageCode9 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode9);
                set_img_AC_ODU_Copper_Intact.setImageBitmap(bitmap);

            }
            if(code ==59) {
                imageCode10 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode10);
                set_img_Any_Water_Logging_Vincinity.setImageBitmap(bitmap);

            }
            if(code ==60) {
                imageCode11 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode11);
                set_img_FE_Room_Available.setImageBitmap(bitmap);

            }
            if(code ==61) {
                imageCode12 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode12);
                set_img_DG_Door_Locked.setImageBitmap(bitmap);

            }
            if(code ==62) {
                imageCode13 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode13);
                set_img_Other_Obsevation.setImageBitmap(bitmap);

            }
            if(code ==63) {
                imageCode14 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode14);
                set_img_Damage_ATM_lobby.setImageBitmap(bitmap);

            }
/*
//decode base64 string to image
            imageBytes = Base64.decode(imageCode, Base64.DEFAULT);
            Bitmap decodedImage = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length);
            set_img_trainy.setImageBitmap(decodedImage);*/

        } catch (NullPointerException e) {
            e.printStackTrace();
        }

    }


    public void previewCapturedImage1(int code) {

        try {
            //encode base64 string to image
            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            // Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.img);
            // bimatp factory
            BitmapFactory.Options options = new BitmapFactory.Options();

            // downsizing image as it throws OutOfMemory Exception for larger
            options.inSampleSize = 8;

            bitmap = BitmapFactory.decodeFile(uri.getPath(),
                    options);

            bitmap.compress(Bitmap.CompressFormat.JPEG, 50, byteArrayOutputStream);
            byte[] imageBytes = byteArrayOutputStream.toByteArray();
            // byte[] imageBytes = byteArrayOutputStream.toByteArray();
            //imageCode = Base64.encodeToString(imageBytes, Base64.DEFAULT);
            // Log.e("image_code", imageCode);

            if(code ==50) {
                imageCode1 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode1);
                set_img_fascia.setImageBitmap(bitmap);

            }
            if(code ==51) {
                imageCode2 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode2);
                set_img_lollypop.setImageBitmap(bitmap);

            }
            if(code ==52) {
                imageCode3 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode3);
                set_img_ATM_Count.setImageBitmap(bitmap);

            }
            if(code ==53) {
                imageCode4 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode4);
                set_img_ATM_Cooling.setImageBitmap(bitmap);

            }
            if(code ==54) {
                imageCode5 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode5);
                set_img_ATM_Backroom_Locked.setImageBitmap(bitmap);

            }
            if(code ==55) {
                imageCode6 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode6);
                set_img_ups_room.setImageBitmap(bitmap);

            }
            if(code ==56) {
                imageCode7 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode7);
                set_img_Branch_Shutter_Damaged.setImageBitmap(bitmap);

            }
            if(code ==57) {
                imageCode8 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode8);
                set_img_Branch_Round_Taken.setImageBitmap(bitmap);

            }
            if(code ==58) {
                imageCode9 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode9);
                set_img_AC_ODU_Copper_Intact.setImageBitmap(bitmap);

            }
            if(code ==59) {
                imageCode10 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode10);
                set_img_Any_Water_Logging_Vincinity.setImageBitmap(bitmap);

            }
            if(code ==60) {
                imageCode11 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode11);
                set_img_FE_Room_Available.setImageBitmap(bitmap);

            }
            if(code ==61) {
                imageCode12 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode12);
                set_img_DG_Door_Locked.setImageBitmap(bitmap);

            }
            if(code ==62) {
                imageCode13 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode13);
                set_img_Other_Obsevation.setImageBitmap(bitmap);

            }
            if(code ==63) {
                imageCode14 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode14);
                set_img_Damage_ATM_lobby.setImageBitmap(bitmap);

            }


        } catch (NullPointerException e) {
            e.printStackTrace();
        }

    }


 public void previewCapturedImage1(int code) {

        try {
            //encode base64 string to image
            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            // Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.img);
            // bimatp factory
            BitmapFactory.Options options = new BitmapFactory.Options();

            // downsizing image as it throws OutOfMemory Exception for larger
            options.inSampleSize = 8;

            bitmap = BitmapFactory.decodeFile(uri.getPath(),
                    options);

            bitmap.compress(Bitmap.CompressFormat.JPEG, 50, byteArrayOutputStream);
            byte[] imageBytes = byteArrayOutputStream.toByteArray();
            // byte[] imageBytes = byteArrayOutputStream.toByteArray();
            //imageCode = Base64.encodeToString(imageBytes, Base64.DEFAULT);
            // Log.e("image_code", imageCode);

            if(code ==50) {
                imageCode1 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode1);
                set_img_fascia.setImageBitmap(bitmap);

            }
            if(code ==51) {
                imageCode2 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode2);
                set_img_lollypop.setImageBitmap(bitmap);

            }
            if(code ==52) {
                imageCode3 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode3);
                set_img_ATM_Count.setImageBitmap(bitmap);

            }
            if(code ==53) {
                imageCode4 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode4);
                set_img_ATM_Cooling.setImageBitmap(bitmap);

            }
            if(code ==54) {
                imageCode5 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode5);
                set_img_ATM_Backroom_Locked.setImageBitmap(bitmap);

            }
            if(code ==55) {
                imageCode6 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode6);
                set_img_ups_room.setImageBitmap(bitmap);

            }
            if(code ==56) {
                imageCode7 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode7);
                set_img_Branch_Shutter_Damaged.setImageBitmap(bitmap);

            }
            if(code ==57) {
                imageCode8 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode8);
                set_img_Branch_Round_Taken.setImageBitmap(bitmap);

            }
            if(code ==58) {
                imageCode9 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode9);
                set_img_AC_ODU_Copper_Intact.setImageBitmap(bitmap);

            }
            if(code ==59) {
                imageCode10 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode10);
                set_img_Any_Water_Logging_Vincinity.setImageBitmap(bitmap);

            }
            if(code ==60) {
                imageCode11 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode11);
                set_img_FE_Room_Available.setImageBitmap(bitmap);

            }
            if(code ==61) {
                imageCode12 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode12);
                set_img_DG_Door_Locked.setImageBitmap(bitmap);

            }
            if(code ==62) {
                imageCode13 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode13);
                set_img_Other_Obsevation.setImageBitmap(bitmap);

            }
            if(code ==63) {
                imageCode14 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode14);
                set_img_Damage_ATM_lobby.setImageBitmap(bitmap);

            }


        } catch (NullPointerException e) {
            e.printStackTrace();
        }

    }

在调试器中发现错误

FATAL EXCEPTION: main
    Process: com.field_officer, PID: 15547
    java.lang.OutOfMemoryError: Failed to allocate a 14745612 byte allocation with 4194304 free bytes and 8MB until OOM
        at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
        at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
        at android.graphics.BitmapFactory.decodeStreamInternal(BitmapFactory.java:681)
        at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:657)
        at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:701)
        at com.field_officer.Fragment.ICICI_report_Static_Fragment.previewCapturedImage(ICICI_report_Static_Fragment.java:794)
        at com.field_officer.Fragment.ICICI_report_Static_Fragment.onActivityResult(ICICI_report_Static_Fragment.java:1506)
        at android.support.v4.app.FragmentActivity.onActivityResult(FragmentActivity.java:156)
        at com.field_officer.HomeActivity.onActivityResult(HomeActivity.java:740)
        at android.app.Activity.dispatchActivityResult(Activity.java:6950)
        at android.app.ActivityThread.deliverResults(ActivityThread.java:4176)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:4223)
        at android.app.ActivityThread.-wrap20(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1585)
        at android.os.Handler.dispatchMessage(Handler.java:110)

【问题讨论】:

  • “应用程序崩溃,日志中也没有错误。” 你确定吗? “当应用程序返回活动时单击照片后崩溃。” 然后您可以逐步调试onActivityResult() 方法,查看究竟是什么崩溃以及变量值是什么,即@例如 987654328@。
  • 确定在调试器 java.lang.OutOfMemoryError 中发现错误:无法分配 14745612 字节分配,4194304 可用字节和 8MB 直到 OOM
  • 在编辑大位图时听起来像是个问题。 Android 文档可能会在 managing bitmaps 上提供一些相关提示。
  • Camera Intent Crashes in some Device 如果这是您的意图,那么您应该只发布该代码。但似乎只有在调用 onActivityResult 并且您执行各种代码之后。请用真正的问题更新您的主题。
  • 你在onActivityResult中有太多的可能性。一个就足够了。请删除所有其他人。为什么 previewCapturedImage 是 previewCapturedImage2 ?只发布导致问题的那个。发布一个最小的例子。

标签: android crash android-camera android-camera-intent


【解决方案1】:

好的,我解决了。


            int nh = (int) (bitmap.getHeight() * (512.0 / bitmap.getWidth()));
            Bitmap scaled = Bitmap.createScaledBitmap(bitmap, 512, nh, true);
            scaled.compress(Bitmap.CompressFormat.JPEG, 80, byteArrayOutputStream);
            byte[] imageBytes = byteArrayOutputStream.toByteArray();

         
            Log.e("Original   dimensions", bitmap.getWidth() + " " + bitmap.getHeight());
            Log.e("Compressed dimensions", scaled.getWidth() + " " + scaled.getHeight());
              Log.e("bytes", String.valueOf(bytes));

          bitmap =null;
            if(code ==50) {
                imageCode1 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode1);
                set_img_fascia.setImageBitmap(scaled);

            }
            if(code ==51) {
                imageCode2 = Base64.encodeToString(imageBytes, Base64.NO_WRAP);
                Log.e("image1", imageCode2);
                set_img_lollypop.setImageBitmap(scaled);

...So on

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    相关资源
    最近更新 更多