Java.Lang.RuntimeException, setParameters не удалось выполнить в версии для Android (4.1.1)

Я разработал приложение, которое фиксирует фотографию, когда вы нажимаете на нее. Он хорошо работает на вкладке Acer (захват изображения и сохранение в SD-карте). Теперь, когда я запускаю одно и то же приложение в Samsung Galaxy (Android-4.1.1), мое приложение получает сообщение «К сожалению приложение остановилось», когда нажимает на пунш. И мой код здесь.

// ClockIn functionality clockin_btn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { clockin_btn.setEnabled(false); camera.stopPreview(); capturePhoto(0); // showing one error here in log cat previewing = false; clockin_label.setText(String.format(session_msg,logout_seconds)); ticker.setBase(SystemClock.elapsedRealtime()); ticker.start(); } }); private String capturePhoto(int clockInOutMode) { final int mode = clockInOutMode; img_file = String.format("%d.jpg", System.currentTimeMillis()); Camera.PictureCallback mCall = new Camera.PictureCallback() { public void onPictureTaken(byte[] data, Camera camera) { try { Bitmap mBitmap = BitmapFactory.decodeByteArray(data, 0, data.length); File file = new File(Constants.EMP_IMG_LOCATION, img_file); FileOutputStream fOut = new FileOutputStream(file); mBitmap.compress(Bitmap.CompressFormat.JPEG, 80, fOut); fOut.flush(); fOut.close(); if ( mode == 0) { clockIn(img_file); } else { clockOut(img_file); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }; Camera.Parameters cameraParams = camera.getParameters(); List<Camera.Size> sizes = cameraParams.getSupportedPictureSizes(); Camera.Size result = null; for (int i=0;i<sizes.size();i++){ result = (Size) sizes.get(i); Log.i("PictureSize", "Supported Size.Width: " + result.width + "height: " +result.height); } cameraParams.setPictureSize(640, 480); camera.setParameters(cameraParams); System.gc(); camera.setPreviewCallback(null); camera.takePicture(null, null, mCall); // showing one error here in logcat return img_file; } 

Мой Logcat отображается как:

 03-27 04:52:19.273: E/AndroidRuntime(4105): FATAL EXCEPTION: main 03-27 04:52:19.273: E/AndroidRuntime(4105): java.lang.RuntimeException: setParameters failed 03-27 04:52:19.273: E/AndroidRuntime(4105): at android.hardware.Camera.native_setParameters(Native Method) 03-27 04:52:19.273: E/AndroidRuntime(4105): at android.hardware.Camera.setParameters(Camera.java:1452) 

И мой файл android.manifest.xml:

  <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" /> <used-feature android:name="android.hardware.location" /> <used-feature android:name="android.hardware.camera.setParameters" /> 

Вызовите метод startPreview, прежде чем вы вызовете метод camera.takePicture(null, null, mCall); И метод startPreview, который я использовал,

 private void startPreview() { if (cameraConfigured && camera!=null) { camera.startPreview(); inPreview=true; } } 

И через это я решил свою проблему … Это может помочь вам, ребята.

Он не работает во всех случаях. Вы вызываете getSupportedPictureSizes() тогда вы можете получить список. И выберите параметры в setPictureSize() из списка.

 private void flipBackToFrontCamera() { if (mCamera != null) { mCamera.stopPreview(); mCamera.release(); mCamera = null; } mCamera = Camera.open(1); if (mCamera != null) { try { mCamera.setPreviewDisplay(surfaceView.getHolder()); mCamera.startPreview(); } catch (IOException e) { e.printStackTrace(); } } }