Использование 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;
}