Ошибка андроидной камеры

Хорошо, это, очевидно, дублирующий вопрос, но во всех остальных я не нашел решение, которое работает …

Итак, я пытаюсь сфотографировать камеру и показать это изображение в представлении изображения … На данный момент не важно, эффективна она или что-то еще, поэтому я не занимаюсь этим …

Вот мой код:

Запустить камеру:

b2.setOnClickListener(new View.OnClickListener() { @Override public void onClick (View v) { Intent takePicture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if(takePicture.resolveActivity(getPackageManager()) != null) { File image = null; try { image = createImageFile(); } catch (IOException ex) { finish(); } if(image != null) { takePicture.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(image)); startActivityForResult(takePicture, 1); } } } }); 

Метод createImageFile :

 private File createImageFile() throws IOException { String name = System.currentTimeMillis() / 1000 + ""; File dir = getExternalFilesDir(null); File image = File.createTempFile(name, ".png", dir); path = "file:" + image.getAbsolutePath(); return image; } 

И onActiviyResult метод:

 @Override protected void onActivityResult (int requestCode, int resultCode, Intent data) { if(resultCode == RESULT_OK && requestCode == 1) { String path = data.getExtras().getString(MediaStore.EXTRA_OUTPUT); File f = new File(path); Bitmap b = Bitmap.createScaledBitmap(BitmapFactory.decodeFile(f.getAbsolutePath()), 50, 50, true); iv.setImageBitmap(b); } else { } } 

Важно отметить, что мое приложение никогда не достигает метода onActivityResult но застрял где-то после того, как я взял picutre и нажмите «Сохранить», чтобы сохранить изображение (этот экран показывает, что после того, как изображение выполнено, это не то, что я реализовал, но так оно и есть на Android)

Вот мой logcat:

 04-08 14:57:37.230 5976-5976/hr.fer.dummyproj E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=null} to activity {hr.fer.dummyproj/hr.fer.dummyproj.MainActivity}: java.lang.NullPointerException at android.app.ActivityThread.deliverResults(ActivityThread.java:3500) at android.app.ActivityThread.handleSendResult(ActivityThread.java:3543) at android.app.ActivityThread.access$1200(ActivityThread.java:159) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:176) at android.app.ActivityThread.main(ActivityThread.java:5419) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NullPointerException at hr.fer.dummyproj.MainActivity.onActivityResult(MainActivity.java:84) at android.app.Activity.dispatchActivityResult(Activity.java:5563) at android.app.ActivityThread.deliverResults(ActivityThread.java:3496) at android.app.ActivityThread.handleSendResult(ActivityThread.java:3543) at android.app.ActivityThread.access$1200(ActivityThread.java:159) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:176) at android.app.ActivityThread.main(ActivityThread.java:5419) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) at dalvik.system.NativeStart.main(Native Method) 

ОБНОВЛЕНИЕ Итак, я нашел, где была проблема. Похоже, что активность камеры не возвращает ничего в намерении, если она сохраняет изображение в файле. Итак, в onResultActivity данные были onResultActivity . Чтобы заставить его работать, я спас Uri и в onResultActivity получаю picutre с ним

Это работает для меня ….

 static final int REQUEST_IMAGE_CAPTURE = 1; String mCurrentPhotoPath; Button captureImageButton; static ImageView imageCapturedView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_take_image); captureImageButton = (Button) findViewById(R.id.button); OnClickListener captureImageListener = new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent captureImageIntent= new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if(captureImageIntent.resolveActivity(getPackageManager())!=null) { File photoFile=null; try{ photoFile = createImageFile(); }catch(IOException e){}; if(photoFile != null) { captureImageIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile)); startActivityForResult(captureImageIntent, REQUEST_IMAGE_CAPTURE); } } } }; captureImageButton.setOnClickListener(captureImageListener); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); imageCapturedView = (ImageView)findViewById(R.id.ImageView); if(requestCode==REQUEST_IMAGE_CAPTURE && resultCode==RESULT_OK) { Bundle extras = data.getExtras(); Bitmap imageBitmap= (Bitmap) extras.get("data"); imageCapturedView.setImageBitmap(imageBitmap); galleryAddPic(); setPic(); } } private File createImageFile() throws IOException { String TimeStamp = new SimpleDateFormat("yyyyMMDdd_HHmmss").format(new Date()); String ImageFile = "JPEG_" + TimeStamp + "_"; File StorageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); File image = File.createTempFile(ImageFile, ".jpg", StorageDir); mCurrentPhotoPath = image.getAbsolutePath(); return image; } private void galleryAddPic() { Intent mediaScan = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); File f= new File(mCurrentPhotoPath); Uri contentUri = Uri.fromFile(f); mediaScan.setData(contentUri); this.sendBroadcast(mediaScan); } private void setPic() throws ArithmeticException{ int scaleFactor; Bitmap bitmap; // Get the dimensions of the View int targetW = imageCapturedView.getWidth(); int targetH = imageCapturedView.getHeight(); // Get the dimensions of the bitmap BitmapFactory.Options bmOptions = new BitmapFactory.Options(); bmOptions.inJustDecodeBounds = true; //bmOptions.inSampleSize = 4; BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions); int photoW = bmOptions.outWidth; int photoH = bmOptions.outHeight; // Determine how much to scale down the image scaleFactor= Math.min(photoW/targetW, photoH/targetH); // Decode the image file into a Bitmap sized to fill the View bmOptions.inJustDecodeBounds = false; bmOptions.inSampleSize = scaleFactor; bmOptions.inPurgeable = true; bitmap = BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions); Toast.makeText(getApplicationContext(), mCurrentPhotoPath, Toast.LENGTH_LONG).show(); imageCapturedView.setImageBitmap(bitmap); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.take_image, menu); return true; } 
Intereting Posts
2 пользователей, использующих одно и то же устройство и одно и то же приложение, но разные идентификаторы входа – у них есть другой идентификатор регистрации gcm? Как создать пользовательский WPA Hotspot с ssid и паролем в android? Получить название города из широты и долготы в андроиде Gives Service Not Available Android 4.0.3? Как отправить уведомление с помощью URL-адреса Eddystone? Должен ли я создавать разные макеты (xml-файлы) для разных мобильных телефонов Android Как установить X-Api-Key в заголовке запроса HTTP-запроса Как отключить прошлые даты в Android date picker? Как вы можете перенести этот баггиный ящик урожая в гибридное приложение? Canvas .toDataURL () возвращает частично поврежденное изображение Установка повторяющегося сигнала тревоги в android Как ограничить трансляцию своим собственным Android-приложением Модульное тестирование создания базы данных SQLite с использованием Spock и Robospock Эффект завивки страницы Android на макете / с Как проверить андроид: alwaysRetainTaskState Предотвращение дублирования записей parse.com