control - turn on flashlight android studio




android java lang runtimeexception ne parviennent pas à se connecter au service de caméra (8)

Je travaille actuellement sur Flashlight On / OFF. Je reçois cette erreur java.lang.RuntimeException: Fail to connect to camera service Je ne sais pas pourquoi cette erreur se produit. J'ai fait référence à beaucoup de solutions mais mon problème n'était toujours pas résolu. Lorsque la lampe de poche est allumée, l'erreur ne se produit pas mais lorsque la lampe de poche est éteinte, l'erreur se produit.

Code principal de mon code .

Ma permission Manifeste:

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus"/>

Ce problème peut survenir dans Android 6.0 si vous n'avez pas activé l'autorisation de la caméra pour votre application. À partir d'Android 6.0, vous pouvez gérer la permission de l'application que vous allez donner ou non une autorisation spécifique pour une application.

Ainsi, vous devez activer l'autorisation de settings->apps->your_app->enable camera permission si elle n'est pas déjà activée.


Dans mon androïde peoject a le même problème. Ceci est mon erreur Logcat

03-29 19: 26: 04.194 224-608 /? V / EmulatedCamera_BaseCamera: getCameraInfo 03-29 19: 26: 04.196 224-224 /? I / CameraService: CameraService :: connect appel (PID -1 "com.proitzen.staffapp", ID caméra 1) pour la version HAL par défaut et Camera API version 1 03-29 19: 26: 04.196 224-224 /? W / ServiceManager: Échec d'autorisation: android.permission.CAMERA de uid = 10067 pid = 1776 03-29 19: 26: 04.196 224-224 /? E / CameraService: Permission Denial: impossible d'utiliser la caméra pid = 1776, uid = 10067 03-29 19: 26: 04.196 1776-1776 / com.proitzen.staffapp W / CameraBase: Une erreur est survenue lors de la connexion à la caméra 1: Service non disponible 03-29 19: 26: 04.200 1776-1776 / com.proitzen.staffapp D / AndroidRuntime: arrêt de la machine virtuelle

Aucune des solutions ci-dessus n'a fonctionné pour moi. Mon application Android a travaillé dans les appareils Android physiques et a donné l'erreur ci-dessus uniquement dans Genymotion.

Solution: démarrez votre émulateur Genumotion Paramètres -> Applications ---> choisissez votre application -> Autorisations -> activer la caméra et le micro et le stockage.


J'ai également vu cette erreur:

java.lang.RuntimeException: Impossible de se connecter au service de caméra

en expérimentant avec une application de lampe de poche. Il s'avère que j'étais un peu bâclé avec mes permissions et copié dans le corps du bloc d'application dans le fichier manifest.xml. Donc, vous avez vraiment besoin d'obéir à la syntaxe comme documenté dans:

http://developer.android.com/guide/topics/manifest/manifest-element.html

Sinon, l'application échouera en cas d'échec de la connexion de service lors de l'appel Camera.open (). Cela devrait ressembler à ceci en fonction de vos permissions dans la question:

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus"/>

<application

Assurez-vous que votre permission et la liste des fonctionnalités sont contenues uniquement dans la section manifeste, et non enterrées dans la section application!


J'ai eu le même problème qu'aucune des réponses ici n'a résolu, donc après l'avoir résolu j'ajoute ma manière de le résoudre. Cela s'applique aux nouvelles versions Android qui prennent en charge les autorisations de configuration par application (depuis Marshmallow, 6.0). L'autorisation pour l'appareil photo peut être désactivée et doit être activée dans les paramètres de l'application. Paramètres -> Applications -> [Votre application] -> Autorisations

Plus d'informations à ce sujet ici: http://developer.android.com/training/permissions/requesting.html


Salut j'espère que vous avez affaire à un flambeau de l'application ou quelque chose en rapport avec Flash et il y avait beaucoup de discussions sur ce sujet avant et voici quelques liens utiles et tutoriels pour répondre à vos besoins, s'il vous plaît passer par eux espèrent qu'ils peuvent vous aider

Comment activer la lumière flash de l'appareil par programme sous Android?

http://www.androidhive.info/2013/04/android-developing-flashlight-application/

http://www.compiletimeerror.com/2013/08/how-to-turn-onoff-camera-led-flashlight.html#.U4WH5Xbc3o4

http://android.programmerguru.com/android-flashlight-example/


Si tout votre code est correct, vous devez vérifier s'il existe une autre application utilisant votre caméra. Ensuite, vous devez fermer l'autre application qui utilise actuellement votre appareil photo.


Vous devez stopPreview() et release() une fois que vous êtes revenu de la caméra, afin que l'autre application puisse y accéder. onPause() classe "Camera" comme statique et la renvoie comme null dans onPause() . Cela résout mon problème.

Essaye le:

 public class CameraPhotoCapture extends Activity{
    static Camera mcamera = null;
    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        if (mcamera != null) {
            mcamera.stopPreview();
            mcamera.release();
            mcamera = null;
            Log.d(DEBUG_TAG, "releaseCamera -- done");
        }
        super.onPause();
    }

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        if (mcamera != null) {

            Camera.open();
            Log.d(DEBUG_TAG, "openCamera -- done");
        }
        super.onResume();
    }
}

essaye ça...

 static Camera camera = null;

déclarez-le au sommet.

 try{ 
   if(clickOn == true) {
       clickOn = false;
       camera = Camera.open();
       Parameters parameters = camera.getParameters();
       parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
       camera.setParameters(parameters);
       camera.startPreview();

       remoteViews.setViewVisibility(R.id.button1, View.GONE);
       remoteViews.setViewVisibility(R.id.button2, View.VISIBLE);
       localAppWidgetManager.updateAppWidget(componentName, remoteViews);
   } else {
       clickOn = true;
       camera.stopPreview();
       camera.release();
       camera = null;

       remoteViews.setViewVisibility(R.id.button1, View.VISIBLE);
       remoteViews.setViewVisibility(R.id.button2, View.GONE);
       localAppWidgetManager.updateAppWidget(componentName, remoteViews);
   }    
} catch(Exception e) {
   Log.e("Error", ""+e);
}




flashlight