[решено] Я не знаю, почему он это делал, но все, что мне нужно было сделать, это перезагрузить телефон, и он снова начал работать.Удачного кодирования всем!:)
Я занимаюсь разработкой приложения, в котором вы можете делать снимки и публиковать их.Раньше намерение камеры работало отлично, но сегодня, когда я собрал приложение для своего мобильного телефона и попытался открыть намерение камеры после нескольких изменений в совершенно другой активности (что не должно влиять на камеру), все приложение зависает ипосле нескольких секунд бездействия он вывел черный экран, на котором я даже не вижу своих кнопок «домой», «назад» и «закрыть приложения» в нижней части экрана.Приложение не вылетает и не выдает никаких сообщений об ошибках, но черный экран не исчезает до того, как я нажимаю на то место, где должна быть кнопка «Домой» на моем телефоне, и после этого закрываю приложение.
Я попросил разрешения на использование камеры, и она работает нормально, но после этого появляется черный экран.И, как уже говорилось, камера работала в течение многих недель разработки, но только сегодня она начала это делать.
Вот мой код для намерения камеры:
//ADD NEW SPOT
public void addNewSpot(View v)
{
//CHECKING PERMISSION FOR CAMERA
if (checkCallingOrSelfPermission(android.Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED)
{
ActivityCompat.requestPermissions(MainActivity.this, new String[]{android.Manifest.permission.CAMERA}, MY_CAMERA_PERMISSION_CODE);
}
else
{
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null)
{
File photoFile = null;
try
{
photoFile = createImageFile();
}
catch (IOException ex)
{
ex.printStackTrace();
}
if (photoFile != null)
{
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
StrictMode.setVmPolicy(builder.build());
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
}
}
}
//CHECK FOR THE RESULT FROM CAMERA ACTIVITY
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)
{
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == MY_CAMERA_PERMISSION_CODE)
{
if (grantResults[0] == PackageManager.PERMISSION_GRANTED)
{
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null)
{
File photoFile = null;
try
{
photoFile = createImageFile();
}
catch (IOException ex)
{
ex.printStackTrace();
}
if (photoFile != null)
{
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
StrictMode.setVmPolicy(builder.build());
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
}
}
}
}
//CREATE FOLDER FOR THE IMAGE
String imageFilePath;
private File createImageFile() throws IOException {
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(new Date());
String imageFileName = "IMG_" + timeStamp + "_";
File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
File image = File.createTempFile(
imageFileName, /* prefix */
".jpg", /* suffix */
storageDir /* directory */
);
imageFilePath = image.getAbsolutePath();
return image;
}
//GET TAKEN IMAGE, DOWNSCALE IT AND SEND IT TO CROPPING
File compressedImageFile;
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK)
{
Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
File f = new File(imageFilePath);
try
{
compressedImageFile = new Compressor(this).compressToFile(f);
}
catch (Exception e)
{
String message = e.getMessage();
Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
}
Uri contentUri = Uri.fromFile(compressedImageFile);
mediaScanIntent.setData(contentUri);
this.sendBroadcast(mediaScanIntent);
CropImage.activity(contentUri)
.setGuidelines(CropImageView.Guidelines.ON)
.setAspectRatio(1, 1)
.start(this);
}
//CROP THE IMAGE
if(requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE)
{
CropImage.ActivityResult result = CropImage.getActivityResult(data);
if(resultCode == RESULT_OK)
{
Uri resultUri = result.getUri();
Intent addPostIntent = new Intent(MainActivity.this, add_new_spot.class);
addPostIntent.putExtra("imagePath", resultUri.toString());
startActivity(addPostIntent);
}
else
{
Toast.makeText(this, "Image can't be cropped, please try again", Toast.LENGTH_SHORT).show();
}
}
}
Я ожидаю, что намерение будет работать нормально, так как оно работало раньше, но вместо этого оно останавливает приложение на черном экране изаставить пользователя перезапустить приложение.Заранее спасибо.