Je suis en train d'écrire un programme pour étudier les fonctions de l'appareil photo Android. Maintenant, j'ai quelques problèmes à propos de l'opération d'aperçu de la caméra:Android Camera Aperçu question
Mon programme va créer un objet surface de vue dans la fonction onCreate() de l'activité principale (ActivityMain), puis le définir sur le contenu.
super.onCreate(savedInstanceState);
m_surface = new MyCameraSurface(this);
// remove title bar
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(m_surface);
Ensuite startPreview() sera appelé lorsque surfaceChanged() est en cours d'exécution.
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
Log.d(TAG, "*** surfaceChanged >>>>> ***");
Log.d(TAG, "format=" + format + ", width=" + width + ", height=" + height);
if(m_control.IsCameraClosed() == false) {
if(m_control.IsPreviewRun() == false) {
m_control.startPreview();
}
}
Log.d(TAG, "*** surfaceChanged <<<<< ***");
}
Mon problème est: au début de mon programme reçoit toujours "GetNextPreviewFrame Erreur/1 image: 0x0, tampon: 0x0" Erreur:
07-22 06:47:46.727: DEBUG/MyCameraSurface(2313): *** surfaceChanged <<<<< ***
07-22 06:47:46.735: DEBUG/SurfaceFlinger(1276): commiting overlay changes
07-22 06:47:46.735: INFO/TIOverlay(1276): Nothing to do!
07-22 06:47:46.735: INFO/ActivityManager(1276): Displayed activity com.hykwok.CameraEffect/.ActivityMain: 7866 ms (total 7866 ms)
07-22 06:47:47.792: ERROR/CameraHal(1052): GetNextPreviewFrame Error/1 frame:0x0, buffer:0x0
07-22 06:47:48.477: DEBUG/dalvikvm(1276): GC freed 2299 objects/119216 bytes in 143ms
07-22 06:47:48.793: ERROR/CameraHal(1052): GetNextPreviewFrame Error/1 frame:0x0, buffer:0x0
07-22 06:47:49.794: ERROR/CameraHal(1052): GetNextPreviewFrame Error/1 frame:0x0, buffer:0x0
07-22 06:47:50.794: ERROR/CameraHal(1052): GetNextPreviewFrame Error/1 frame:0x0, buffer:0x0
Cependant, quand je passe à une autre activité (ActivityCameraSetting) puis revenir à l'activité principale, la sortie devient normale.
Quelqu'un pourrait-il me suggérer de le réparer? Je suis en train d'utiliser Motorola Milestone. La version du micrologiciel est 2.1-update1 et le numéro de version est SHOLS_U2.02.36.0.
Je ne suis pas sûr que d'autres téléphones Android ont ce problème ou non.
Une autre question est: Est-il possible d'obtenir des données de trame de prévisualisation par la fonction de rappel de prévisualisation sans définir le support de surface de vue?
Nous vous remercions de votre aide.
Les codes sources peuvent être téléchargés à partir d'ici:
J'ai rencontré des problèmes similaires avec les appareils Motorola. De plus, il est parfois facile de faire planter leur téléphone (je veux dire, ne pas provoquer d'exception en Java, mais réinitialiser l'appareil aussi). J'ai abandonné et fait quelques solutions de contournement rusées. Selon ma compréhension, il est définitivement BUG dans Motorola Camera HAL. Cependant, je suis en mesure d'observer que le problème n'est toujours pas résolu sur droid X. Je vous suggère d'essayer un autre appareil (HTC ou Samsung) - Je suis sur le point d'être sûr que votre code fonctionnera très bien. – sandrstar