2017-05-30 2 views
0

J'ai utilisé CameraManager pour vérifier si l'appareil photo est allumé ou éteint dans Android. Et je l'ai réussi avec succès.Mais maintenant je dois le désinscrire.J'ai référé https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#registerAvailabilityCallback(android.hardware.camera2.CameraManager.AvailabilityCallback,android.os.Handler) mais je ne sais pas comment l'implémenter. pourrait quelqu'un s'il vous plaît aider ?? ci-dessous est mon extrait de code pour l'enregistrement gestionnaire de disponibilitécomment désenregistrer le rappel de disponibilité dans CameraManager dans Android

CameraManager manager = (CameraManager)getSystemService(Context.CAMERA_SERVICE); 

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
     manager.registerAvailabilityCallback(new CameraManager.AvailabilityCallback() { 
      @Override 
      public void onCameraAvailable(String cameraId) { 
       super.onCameraAvailable(cameraId); 
       //Do your work 
       Toast.makeText(getApplicationContext(), "camera off", Toast.LENGTH_SHORT).show(); 
      } 

      @Override 
      public void onCameraUnavailable(String cameraId) { 
       super.onCameraUnavailable(cameraId); 
       //Do your work 
       Toast.makeText(getApplicationContext(), "camera on", Toast.LENGTH_SHORT).show(); 
      } 
     }, yourHandler); 
    } 

Répondre

0

Il existe une méthode similaire à désenregistrer le même rappel - CameraManager.unregisterAvailabilityCallback().

Vous devrez conserver la référence de rappel et la transmettre de la même façon lors de l'enregistrement et de la désinscription.

Votre code ressemblera:

private CameraManager mCameraManager; 
private Object mCameraCallback; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    mCameraManager = (CameraManager)getSystemService(Context.CAMERA_SERVICE); 

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
     mCameraCallback = new CameraManager.AvailabilityCallback() { 
      @Override 
      public void onCameraAvailable(String cameraId) { 
       super.onCameraAvailable(cameraId); 
       //Do your work 
       Toast.makeText(getApplicationContext(), "camera off", Toast.LENGTH_SHORT).show(); 
      } 

      @Override 
      public void onCameraUnavailable(String cameraId) { 
       super.onCameraUnavailable(cameraId); 
       //Do your work 
       Toast.makeText(getApplicationContext(), "camera on", Toast.LENGTH_SHORT).show(); 
      } 
     }; 

     mCameraManager.registerAvailabilityCallback((CameraManager.AvailabilityCallback) mCameraCallback, yourHandler); 
    } 
} 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
     mCameraManager.unregisterAvailabilityCallback((CameraManager.AvailabilityCallback) mCameraCallback) 
    } 
} 
+0

je suis tombé sur this.but je ne sais pas quels arguments dois-je passer d'après mon code. – Krithi

+0

Cela a fonctionné pour vous? –

+0

Merci, c'est un bon, mais il travaille dnt.Il est comme avant.Il vérifie en permanence si la caméra est allumée ou éteinte.Mais après quelque temps, je dois arrêter de faire cette vérification.est-il désinscrit pas la bonne façon alors? – Krithi