Две вещи:
finalBitmap никогда не инициализируется, поэтому я предполагаю, что вы ловите Null Pointer Error каждый раз в блоке try catch в jpegCallback.Вы также ничего не делаете с байтовым массивом, переданным вам в обратном вызове, что означает, что вы ничего не делаете для сохранения изображения.Попробуйте выполнить следующее в начале onPictureTaken в jpegCallback:
finalBitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
см. BitmapFactory для получения дополнительной информации
Если ваша цель состоит в том, чтобы просто позволить пользователю взятьизображение, и вы не заботитесь о деталях, гораздо проще всего использовать startActivityForResult и позволить приложению встроенной камеры обрабатывать съемку и создание файла.Если вам нужно использовать изображение, созданное впоследствии, вы можете передать Uri, чтобы вы знали, где изображение будет сохранено.Это имеет дополнительный бонус работы с Android MediaStore.
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//Uri is parcelable so you can save this to a bundle in onSaveInstanceState
//and retrieve it in onResume
photoUri = getActivity().getContentResolver().insert(EXTERNAL_CONTENT_URI, new ContentValues());
intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
// Lanuch the activity
startActivityForResult(intent, TAKE_PHOTO);
Затем вы можете обработать результат с помощью метода onActivityResult ().См. startActivityForResult