Caméra de java.lang.RuntimeException: setParameters échoué
J'ai créé une coutume application appareil photo à l'aide de cette code source, mais sur quelques dispositifs (comme sur la Haute Résolution des Appareils), j'obtiens:
RuntimeException setParameters failed
Je suis confronté à cette exception, en raison à cela:
params.setPictureSize(1200, 900);
Et j'ai remarqué, Si j'utilise (1600, 1200)
au lieu de (1200, 900)
alors je ne suis pas face à de tels problèmes
Logcat:
11-07 11:45:20.630: E/AndroidRuntime(3827): FATAL EXCEPTION: main
11-07 11:45:20.630: E/AndroidRuntime(3827): java.lang.RuntimeException: Unable to resume activity {pl.gatti.dgcam/pl.gatti.dgcam.DgCamActivity}: java.lang.RuntimeException: setParameters failed
11-07 11:45:20.630: E/AndroidRuntime(3827): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2825)
11-07 11:45:20.630: E/AndroidRuntime(3827): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2854)
11-07 11:45:20.630: E/AndroidRuntime(3827): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2318)
11-07 11:45:20.630: E/AndroidRuntime(3827): at android.app.ActivityThread.access$600(ActivityThread.java:144)
11-07 11:45:20.630: E/AndroidRuntime(3827): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1317)
11-07 11:45:20.630: E/AndroidRuntime(3827): at android.os.Handler.dispatchMessage(Handler.java:99)
11-07 11:45:20.630: E/AndroidRuntime(3827): at android.os.Looper.loop(Looper.java:152)
11-07 11:45:20.630: E/AndroidRuntime(3827): at android.app.ActivityThread.main(ActivityThread.java:5132)
11-07 11:45:20.630: E/AndroidRuntime(3827): at java.lang.reflect.Method.invokeNative(Native Method)
11-07 11:45:20.630: E/AndroidRuntime(3827): at java.lang.reflect.Method.invoke(Method.java:511)
11-07 11:45:20.630: E/AndroidRuntime(3827): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
11-07 11:45:20.630: E/AndroidRuntime(3827): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
11-07 11:45:20.630: E/AndroidRuntime(3827): at dalvik.system.NativeStart.main(Native Method)
11-07 11:45:20.630: E/AndroidRuntime(3827): Caused by: java.lang.RuntimeException: setParameters failed
11-07 11:45:20.630: E/AndroidRuntime(3827): at android.hardware.Camera.native_setParameters(Native Method)
11-07 11:45:20.630: E/AndroidRuntime(3827): at android.hardware.Camera.setParameters(Camera.java:1490)
11-07 11:45:20.630: E/AndroidRuntime(3827): at pl.gatti.dgcam.DgCamActivity.createCamera(DgCamActivity.java:124)
11-07 11:45:20.630: E/AndroidRuntime(3827): at pl.gatti.dgcam.DgCamActivity.onResume(DgCamActivity.java:163)
11-07 11:45:20.630: E/AndroidRuntime(3827): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1185)
11-07 11:45:20.630: E/AndroidRuntime(3827): at android.app.Activity.performResume(Activity.java:5182)
11-07 11:45:20.630: E/AndroidRuntime(3827): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2815)
Code:
private void createCamera() {
//Create an instance of Camera
mCamera = getCameraInstance();
//Setting the right parameters in the camera
Camera.Parameters params = mCamera.getParameters();
params.setPictureSize(1200, 900);
params.setPictureFormat(PixelFormat.JPEG);
params.setJpegQuality(85);
mCamera.setParameters(params);
//Create our Preview view and set it as the content of our activity.
mPreview = new CameraPreview(this, mCamera);
FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview);
//Calculating the width of the preview so it is proportional.
float widthFloat = (float) (deviceHeight) * 4 / 3;
int width = Math.round(widthFloat);
//Resizing the LinearLayout so we can make a proportional preview. This
//approach is not 100% perfect because on devices with a really small
//screen the the image will still be distorted - there is place for
//improvment.
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(width, deviceHeight);
preview.setLayoutParams(layoutParams);
//Adding the camera preview after the FrameLayout and before the button
//as a separated element.
preview.addView(mPreview, 0);
}
Vous pouvez voir complete
CameraActivity code de la classe ici
Et Voici mon CameraPreview
classe:
public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {
private SurfaceHolder mHolder;
private Camera mCamera;
public CameraPreview(Context context, Camera camera) {
super(context);
mCamera = camera;
//Install a SurfaceHolder.Callback so we get notified when the
//underlying surface is created and destroyed.
mHolder = getHolder();
mHolder.addCallback(this);
//deprecated setting, but required on Android versions prior to 3.0
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mHolder.setFixedSize(100, 100);
}
public void surfaceCreated(SurfaceHolder holder) {
//The Surface has been created, now tell the camera where to draw the
//preview.
try {
mCamera.setPreviewDisplay(holder);
mCamera.startPreview();
} catch (IOException e) {
Log.d("DG_DEBUG", "Error setting camera preview: " + e.getMessage());
}
}
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
//If your preview can change or rotate, take care of those events here.
//Make sure to stop the preview before resizing or reformatting it.
if (mHolder.getSurface() == null) {
//preview surface does not exist
return;
}
//stop preview before making changes
try {
mCamera.stopPreview();
} catch (Exception e) {
//ignore: tried to stop a non-existent preview
}
//make any resize, rotate or reformatting changes here
//start preview with new settings
try {
mCamera.setPreviewDisplay(mHolder);
mCamera.setDisplayOrientation(90); //Portrait only
mCamera.startPreview();
} catch (Exception e) {
Log.d("DG_DEBUG", "Error starting camera preview: " + e.getMessage());
}
}
public void surfaceDestroyed(SurfaceHolder holder) {
//empty. Take care of releasing the Camera preview in your activity.
}
}
qui est le numéro de ligne
veuillez définir la ligne n ° 124
le numéro de la ligne 124 est mCamera.setParameters(params);
124
?veuillez définir la ligne n ° 124
le numéro de la ligne 124 est mCamera.setParameters(params);
OriginalL'auteur Sonali | 2015-11-07
Vous devez vous connecter pour publier un commentaire.
Problème est causé par:
parce que la taille n'est pas suppoerted par la Caméra.
Utilisation
getSupportedPictureSizes
pour obtenir tous disponible taille d'aperçu.Pour vérifier qui est le maximum de la taille de l'image disponible à partir de la caméra:
vous pouvez le faire en changeant de hauteur-largeur d'image Bitmap qui est retourné à partir de la Caméra pour l'image avant de l'enregistrer sur la carte sd. mais, probablement, ce sera en effet sur la qualité de l'image . essayez, faites le moi savoir
ne fonctionne pas sur la moto g5
OriginalL'auteur ρяσѕρєя K
Toute Application Appareil photo est limité par la Caméra de HAL pris en charge par cet appareil. Donc, en Caméra HAL nous définissons que nous vous fournirons une liste de prise en charge de la taille, ces dimensions pourraient être aperçu de la taille, taille de l'image ou de la taille de la vidéo.
donc, je pense que vous êtes confrontés à ce problème, parce que 1200*900 n'est pas pris en charge par la caméra de HAL niveau ou de niveau inférieur code.
En fait, vous ne pouvez pas .. qu'est-ce que vous pouvez faire est, chercher de la pris en charge taille et d'écrire votre code en conséquence.
OriginalL'auteur Rahul