Я пытаюсь создать приложение, которое при нажатии кнопки запускает камеру телефона. когда снимок сделан, он отобразит изображение на маленьком квадрате с использованием Bitmap and BitmapFactory
. Я использовал тот же код таким же образом в другом приложении, которое я сделал, и это сработало. но в этом приложении камера открывается, делает снимок, дает мне путь и файл, но когда я создаю Bitmap
, он возвращает ноль. Camera and Read and Write External Permissions
предоставляется.
код:
public void takePicture() {
//use in debug mode, strict policy, on avoid UI Thread consumption
StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
StrictMode.setVmPolicy(builder.build());
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// tell where the file will be (file path)
filename = Environment.getExternalStorageDirectory() + File.separator + date.getTime() + ".jpg";
// create the file
File file = new File(filename);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
try {
this.startActivityForResult(intent, CAMERA_IMAGE);
} catch (Exception e) {
Toast.makeText(context, e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case CAMERA_IMAGE:
if (resultCode != RESULT_OK) {
Toast.makeText(context, "SomeText", Toast.LENGTH_SHORT).show();
} else {
File file = new File(filename);
Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
Log.d("TAG", "onActivityResult: " + bitmap); -> **this prints 'null'**
viewList.get(viewsCount++).setImageBitmap(bitmap);
connectionClass.uploadToStorage(filename, new FirebaseUploadingListener() {
@Override
public void onSucessUpload(UploadTask.TaskSnapshot taskSnapshot) {
Log.d("fromMain", "onSucessUpload: " + taskSnapshot);
}
@Override
public void onFailure(Exception e) {
Log.e("fromMain", "onFailure: " + e.getMessage());
}
});
break;
}
}
}