Я просто хочу спросить вас, что я не могу найти решение.Ошибка при андроиде приложения при открытии камеры на галактике Samsung s4 mini
У меня есть галактика samsung s4 mini, и я пытаюсь что-то сделать с камерой, а иногда она падает, но это не дает мне никакой ошибки.
Я получил этот код:
private void dispatchTakePictureIntent() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// Ensure that there's a camera activity to handle the intent
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
// Create the File where the photo should go
File photoFile = null;
try {
photoFile = createImageFile();
} catch (IOException e) {
e.printStackTrace();
}
// Continue only if the File was successfully created
if (photoFile != null) {
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(photoFile));
startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
}
}
}
private File createImageFile() throws IOException {
// Create an image file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = "JPEG_" + timeStamp + "_";
String directory = "appname" + File.separator + "images";
String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + File.separator + directory;
File storageDir = new File(path);
storageDir.mkdirs();
File image = File.createTempFile(
imageFileName, /* prefix */
".jpg", /* suffix */
storageDir /* directory */
);
// Save a file: path for use with ACTION_VIEW intents
mCurrentPhotoPath = image.getAbsolutePath();
return image;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == REQUEST_TAKE_PHOTO && resultCode == RESULT_OK && mCurrentPhotoPath != null) {
File file = new File(mCurrentPhotoPath);
BitmapFactory.Options btmapOptions = new BitmapFactory.Options();
Bitmap bm = BitmapFactory.decodeFile(file.getAbsolutePath(),
btmapOptions);
Bitmap resizedBitmap = Bitmap.createScaledBitmap(bm,(int)(bm.getWidth()*0.6), (int)(bm.getHeight()*0.6), true);
mUri = Uri.fromFile(file);
sendPhoto(Constants.encodeTobase64(resizedBitmap));
} else {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(mContext, "Error", Toast.LENGTH_SHORT).show();
}
});
}
}
Иногда, когда приложение находится в методе createImageFile(), то переменная mCurrentPhotoPath всегда имеет значение, но когда приложение находится в методе onActivityResult(), иногда это значение равно NULL, а когда это не удается. Приложение просто закрывается, и у меня нет какой-либо ошибки. Это немного странно, потому что иногда это работает (я сделал 15 последовательных и 16 не удалось ..).
Самое странное, что когда я пробую это приложение в другом телефоне, он работает так ... есть какое-то решение?
Спасибо всем и простите за то, что слишком раздражает на этом ..
Это означает, что действие было уничтожено тогда? Предполагается, что Lollipop будет меньше в системе, так почему это происходит сейчас? –
Да @mcd является правильным. из-за озера ресурсов android уничтожит вашу деятельность и придаст памяти намерение камеры. – Moinkhan
Спасибо, это работает правильно, я нашел способ исправить это – Loulisoft