2010-08-17 13 views
9

Actuellement, j'essaie de régler mon appareil photo sur mon téléphone Motorola Droid pour prendre une image qui correspond à la taille de mon écran (854 x 480 pixels), et j'essaie d'accomplir via le les paramètres de la caméra en tant que tels:Réglage de la taille de l'image de la caméra dans Android

Camera.Parameters parameters = this.mCamera.getParameters(); 
Log.i(TAG, "CAMERA SIZE: (" + this.mCameraView.getWidth() + ", " + this.mCameraView.getHeight() + ")"); 
parameters.setPictureSize(this.mCameraView.getWidth(), this.mCameraView.getHeight()); 
this.mCamera.setParameters(parameters); 
this.mCamera.takePicture(null, null, this); 

J'ai mon activité mettre en œuvre la méthode Camera.PictureCallback de onPictureTaken (à l'exception des appels journaux), de sorte que lorsque la méthode takePicture est appelé il exécute cette méthode:

@Override 
public void onPictureTaken(byte[] data, Camera camera) { 
    Bitmap image = BitmapFactory.decodeByteArray(data, 0, data.length); 
    //Size imageSize = camera.getParameters().getPictureSize(); 
    //image = Bitmap.createBitmap(image, 0, 0, imageSize.width, imageSize.height); 
    this.mCameraView.setBackgroundDrawable(new BitmapDrawable(image)); 
} 

Pour une raison quelconque, mon appareil photo prend des photos en 1280 x 960. S'agit-il d'une sorte de taille minimale dans laquelle l'appareil photo peut capturer une image? A partir des appels de log, je peux voir que les paramètres de la caméra sont toujours configurés pour avoir une taille d'image de 854 x 480, mais l'image continue à sortir comme 1280 x 960. Suis-je décodage incorrectement de l'image? Je fais quelque chose d'autre?

Merci d'avance pour toute aide que vous pouvez donner!

Cordialement, célestialorb.

Répondre

20

Oui, il existe des méthodes pour obtenir les tailles d'image prises en charge par la caméra. La méthode de la classe de paramètres de la caméra qui fournit les tailles d'image prises en charge par la caméra est getSupportedPictureSizes(); En utilisant cette méthode, vous pouvez obtenir la taille prise en charge par la caméra. L'extrait de code ressemblerait à ceci: -

Camera camera = Camera.open(); 
Parameters params = camera.getParameters(); 
List<Camera.Size> sizes = params.getSupportedPictureSizes(); 

J'espère que cela vous aidera.

Merci Nawab

+0

caméra a été désapprouvée et remplacé par Camera2 mais je ne trouve pas une méthode analogue dans la nouvelle API – Price

2

J'ai trouvé la réponse, apparemment ma propre résolution d'écran n'est pas une taille prise en charge pour l'appareil photo. Je ne savais pas que la caméra ne pouvait prendre en charge que certaines tailles car je suis en train de programmer avec le 1.6 SDK.

Existe-t-il un moyen de récupérer les tailles prises en charge de la caméra pour 1,5/1,6?