Использование Android-камеры перегревает устройство

Я работаю над приложением со значительным использованием камеры; Я сохраняю изображение, трансформирую его и отправляю в облачный сервис, чтобы получить результат. После того, как была выполнена вся обработка файлов, в последнее время устройство начало перегреваться. Я подозреваю, что это связано с обработкой образа, который я делаю.

Я основал развертывание на Android документации, касающейся камеры, но я также подозреваю, что от моего имени возникли некоторые недоразумения.

Пожалуйста, кто-нибудь может взглянуть на код и, возможно, сигнализировать об ошибке? Любая помощь будет оценена, спасибо!

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.fragment_take_photo, container, false);

    try {
        photoFile = getPhotoFileUri(photoFileName);
    } catch (IOException e) {
        e.printStackTrace();
    }

    takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    photoURI = FileProvider.getUriForFile(getActivity(), "com.test.test", photoFile);
    takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);

    dispatchTakePictureIntent();

    return view;
}

public void dispatchTakePictureIntent() {
    if (takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null) {
        if (ContextCompat.checkSelfPermission(getActivity(), android.Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(getActivity(), new String[]{android.Manifest.permission.CAMERA, android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 0);
        } else {
            if (takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null) {
                startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
            }
        }
    }
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    if (requestCode == 0) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED
                && grantResults[1] == PackageManager.PERMISSION_GRANTED) {
            if (takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null) {
                startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
            }
        } else {
            Toast.makeText(getActivity(), R.string.ask, Toast.LENGTH_SHORT).show();
        }
    }
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_TAKE_PHOTO) {
        if (resultCode == getActivity().RESULT_OK) {
            Bitmap imageBitmap = rotateBitmapOrientation(photoFile.toString());
            String encoded = ImageBase64.encodeTobase64(imageBitmap);
            if (getActivity() instanceof MainActivity) {
                ((MainActivity) getActivity()).setBase64Image(encoded);
            }
            FragmentTransaction tx = getActivity().getSupportFragmentManager().beginTransaction();
            tx.replace(R.id.mainLayout, new PhotoSureFragment());
            tx.commit();
        } else if (resultCode == getActivity().RESULT_CANCELED) {
            getActivity().getSupportFragmentManager().popBackStack();
        } else {
            Toast.makeText(getActivity(), R.string.problem, Toast.LENGTH_SHORT).show();
        }
    }
}

public File getPhotoFileUri(String fileName) throws IOException {
    File storageDir = getActivity().getExternalFilesDir(Environment.DIRECTORY_PICTURES);
    File image;
    if(storageDir != null){
        image = new File(storageDir, "photo.jpg");
    } else {
        storageDir = getActivity().getFilesDir();
        image = new File(storageDir, "photo.jpg");
    }
    mCurrentPhotoPath = image.getAbsolutePath();
    return image;
}

0 ответов

Другие вопросы по тегам