Autore Topic: probleimi con camera.release e metodo onPause() dell'activity principale.  (Letto 550 volte)

Offline fieraf

  • Utente junior
  • **
  • Post: 88
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy s 2
  • Sistema operativo:
    windows 7
ciao ragazzi.
seguendo la parte "Building a camera app" della guida
http://developer.android.com/guide/topics/media/camera.html#intents
sono risuscito a creare una app per la camera con la quale ho un sol problema.
come la guida dice,sul metoto onPause della activity che contiene il framelayout per visualizzare la preview,ho inserito il codice

Codice (Java): [Seleziona]
  @Override
  protected void onPause() {
        super.onPause();
        releaseCamera();
  }

  private  void releaseCamera(){
          if (mycamera != null){
                  mycamera.release(); // release the camera for other applications
                  mycamera = null;  
                   
         }

il problema é che qaundo l'app va in sottofndo e la riapro, mi da errore sul seguente metodo della classe Preview(identica a quella della guida)
dicendo che si é chiamato dopo un camera.release metod
Codice (Java): [Seleziona]
mcamera.setPreviewDisplay(holder);  // <9>
pero io nel metodo onresume della activity principale ho il seguente codice que dovrebbe riattivare la camera

Codice (Java): [Seleziona]
  @Override
  protected void onResume() {
        super.onResume();      
        if (checkCameraHardware(this)) {
             // Create an instance of Camera
                 if (mycamera==null){
                        //creaToast("Camera");
                  mycamera = getCameraInstance();
                  params = mycamera.getParameters();
                 //SetFeatureCamera();
                  preview=null;
                  preview = new CameraPreview(this, mycamera); // <3>
                  MaxZoom=params.getMaxZoom();
                  cameralayout.addView(preview);
                 }
                }
                 else{
                         creaToast("No Camera present");
                         //return;
                 }
  }

  public static Camera getCameraInstance(){
          Camera cam=null ;
       try {
           //0 is back camera
           cam= Camera.open(CameraInfo.CAMERA_FACING_BACK);  // attempt to get a Camera instance
       }
       catch (Exception e){
        // Camera is not available (in use or does not exist)
       }
       return cam;      // returns null if camera is unavailable
  }        
 

potete dirmi perché avviene questo?

grazie.