Android Erreur lors de la Caméra.open()
je veux juste essayer d'Accéder à ma Caméra sur Android. Je ne sais pas comment je peux obtenir les journaux d'erreur, mais j'obtiens une erreur lorsque j'appelle la fonction Appareil photo.open().
Im en utilisant le SDK exemple de Code, mais cela n'a pas fonctionne.
J'ai essayé de définir mCamera à null avant de le relâcher. Et oui, j'ai placé l'autorisation de l'manifest.xml
elle na pas fonctionne avec l'émulateur, même avec mon htc
package com.example.android.apis.graphics;
import android.app.Activity;
import android.content.Context;
import android.hardware.Camera;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.Window;
import java.io.IOException;
public class CameraPreview extends Activity {
private Preview mPreview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Hide the window title.
requestWindowFeature(Window.FEATURE_NO_TITLE);
//Create our Preview view and set it as the content of our activity.
mPreview = new Preview(this);
setContentView(mPreview);
}
}
class Preview extends SurfaceView implements SurfaceHolder.Callback {
SurfaceHolder mHolder;
Camera mCamera;
Preview(Context context) {
super(context);
//Install a SurfaceHolder.Callback so we get notified when the
//underlying surface is created and destroyed.
mHolder = getHolder();
mHolder.addCallback(this);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
public void surfaceCreated(SurfaceHolder holder) {
//The Surface has been created, acquire the camera and tell it where
//to draw.
mCamera = Camera.open();
try {
mCamera.setPreviewDisplay(holder);
} catch (IOException exception) {
mCamera.release();
mCamera = null;
//TODO: add more exception handling logic here
}
}
public void surfaceDestroyed(SurfaceHolder holder) {
//Surface will be destroyed when we return, so stop the preview.
//Because the CameraDevice object is not a shared resource, it's very
//important to release it when the activity is paused.
mCamera.stopPreview();
mCamera.release();
mCamera = null;
}
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
//Now that the size is known, set up the camera parameters and begin
//the preview.
Camera.Parameters parameters = mCamera.getParameters();
parameters.setPreviewSize(w, h);
mCamera.setParameters(parameters);
mCamera.startPreview();
}
}
- Afficher le message d'erreur dans le Journal. Pour les erreurs, soit utiliser le logcat dans Eclipse ou commencer logcat à partir du terminal/ligne de commande
Vous devez vous connecter pour publier un commentaire.
Regarder le code fourni dans la accepté de répondre à ici. Il devrait vous aider à démarrer.
Edit: Ah, votre logcat erreur suggère que vous n'avez pas l'une des lignes suivantes dans votre fichier manifeste (ci-dessous à la fin
</application>
élément:Il semble que vous avez encore l'appareil photo ouvert ou pas libéré à partir d'une exécution précédente ou test de votre code.
Peut-être que vous avez arrêté l'exécution du code, avant d'atteindre le SurfaceDestroyed de l'événement et de la...
...n'a pas été appelé.
J'ai eu le même problème et qui en était la cause. Vous pouvez le confirmer parce que quand il arrive d'essayer d'ouvrir l'application appareil photo sur votre téléphone et vous obtiendrez la même erreur.
J'ai adapté le code de la http://www.41post.com/3794/programming/android-take-a-picture-without-displaying-a-preview tutoriel.
J'ai changé le
appel à un "on_click pour le SurfaceView.
Cette façon, je pouvais décider du moment de prendre la photo, au lieu de le prendre dès que l'Activité ouvert.
Puis après, j'ai Chargé le ImageView j'ai sorti l'appareil photo. Alors je n'ai pas le même problème à nouveau.
J'ai aussi fait une vérification pour s'assurer que l'appareil photo était disponible avant de rentrer dans le on_click code sinon vous aurez une autre erreur.
Si quelqu'un est intéressé j'ai utilisé cette caméra de code pour faire un peu d'animation sur le haut de l'image capturée. Alors dû faire en sorte que le imageVeiw je l'aide a été a été porté à la tête otheriwse je ne pouvais pas le voir. J'ai trouvé que vous ne pouvez pas voir à travers les SurfaceView couche.
Espère que vous aide, vous et personne d'autre qui a le même problème.
Grâce à DimasTheDriver pour le didacticiel d'origine, il m'a aidé à le temps que je voulais une simple capture de routine sans le contrôle de la caméra et de l'écran de confirmation.
Son De L'Obturateur
Pour ceux qui sont intéressés j'ai aussi ajouté un volet sur les sons qui peuvent être trouvés à: wwww.freesound.org/people/Nathan_Lomeli/sounds/79190
Mettre la .wav fichier dans votre dossier res/raw dossier
Définir le lecteur pour la .wav fichier avant de le OnCreate
Créer du joueur de l' .fichier wav dans OnCreate
Jouer sur le déclencheur.son wav dans le On_Click lorsque vous prenez la photo
Dans mon cas, le problème a été causé par l'absence d'une lampe de poche de l'autorisation:
<uses-permission android:name="android.permission.FLASHLIGHT"/>
Place des autorisations au-dessus de l'Application
balise, dans votre fichier de manifeste
j'ai gardé les autorisations sur le mauvais endroit, c'est pourquoi j'ai continué à obtenir la même erreur! Espérons que cela vous aidera aussi
si vous êtes déjà en place des autorisations ci-dessus
<application>
élément AndroidManifest et elle pas d'aider,vérifiez votre importation, il devrait être
import android.hardware.Camera