L'obtention de la Caméra erreur dans Zxing Application du code à Barres
Je suis en train d'utiliser la Bibliothèque Zxing pour le développement d'un scanner de code à barres.
Mon activité se présente comme suit:
public class Scanner extends Activity {
private static final String PACKAGE = "com.test.scan";
private static final String SCANNER = "com.google.zxing.client.android.SCAN";
private static final String SCAN_FORMATS = "UPC_A,UPC_E,EAN_8,EAN_13,CODE_39,CODE_93,CODE_128";
private static final String SCAN_MODE = "QR_CODE_MODE";
public static final int REQUEST_CODE = 1;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
Button ok;
ok = (Button) findViewById(R.id.b1);
ok.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent scanIntent = new Intent(SCANNER);
scanIntent.setPackage(PACKAGE);
scanIntent.addCategory(Intent.CATEGORY_DEFAULT);
scanIntent.putExtra("SCAN_FORMATS", SCAN_FORMATS);
scanIntent.putExtra("SCAN_MODE", SCAN_MODE);
try {
startActivityForResult(scanIntent, REQUEST_CODE);
} catch (ActivityNotFoundException e) {
//TODO: Exception handling
}
}
});
}
Également le fichier de manifeste:
<activity android:name=".Scanner"
android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:windowSoftInputMode="stateAlwaysHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.google.zxing.client.android.CaptureActivity"
android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:windowSoftInputMode="stateAlwaysHidden">
<intent-filter>
<action android:name="com.google.zxing.client.android.SCAN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name="com.google.zxing.client.android.PreferencesActivity"
android:label="@string/preferences_name">
</activity>
<activity android:name="com.google.zxing.client.android.HelpActivity"
android:screenOrientation="user">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name="com.google.zxing.client.android.share.ShareActivity"
android:label="@string/share_name" android:screenOrientation="user"
android:theme="@android:style/Theme.Light">
<intent-filter>
<action android:name="com.google.zxing.client.android.SHARE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<uses-permission android:name="android.permission.CAMERA"
Mais j'obtiens l'erreur suivante:
"Désolé, l'appareil photo Android rencontré un problème. Vous devrez peut-être redémarrer l'appareil".
J'ai suivi quelques blogs.
Journal:
Unexpected error initializating camera
01-27 10:40:48.281: WARN/CaptureActivity(1007): java.lang.RuntimeException: Fail to connect to camera service
01-27 10:40:48.281: WARN/CaptureActivity(1007): at android.hardware.Camera.native_setup(Native Method)
01-27 10:40:48.281: WARN/CaptureActivity(1007): at android.hardware.Camera.<init>(Camera.java:185)
01-27 10:40:48.281: WARN/CaptureActivity(1007): at android.hardware.Camera.open(Camera.java:165)
01-27 10:40:48.281: WARN/CaptureActivity(1007): at com.google.zxing.client.android.camera.CameraManager.openDriver(CameraManager.java:126)
01-27 10:40:48.281: WARN/CaptureActivity(1007): at com.google.zxing.client.android.CaptureActivity.initCamera(CaptureActivity.java:606)
01-27 10:40:48.281: WARN/CaptureActivity(1007): at com.google.zxing.client.android.CaptureActivity.surfaceCreated(CaptureActivity.java:346)
01-27 10:40:48.281: WARN/CaptureActivity(1007): at android.view.SurfaceView.updateWindow(SurfaceView.java:532)
01-27 10:40:48.281: WARN/CaptureActivity(1007): at android.view.SurfaceView.dispatchDraw(SurfaceView.java:339)
InformationsquelleAutor Smitha | 2012-01-27
Vous devez vous connecter pour publier un commentaire.
Cela signifie que l'appareil retourné
null
deCamera.open()
et il ne devrait jamais faire ça. Il est considéré comme un appareil de bug. Je ne suis pas sûr de savoir comment vous le feriez debug pourquoi il agit de cette façon, mais qui en est la cause.La seule fois où j'ai vu cela se produire de façon constante est sur Android 2.2 appareils qui disposent d'un appareil photo frontal, seulement. L'API d'accès à une caméra frontale n'est apparu que dans Android 2.3, et la précédente
Camera.open()
méthode de l'API ne peut renvoyer une caméra sur la face arrière. De sorte que ces retournull
. Et c'est un dispositif de bug, vraiment, depuis qu'ils ont vraiment besoin d'être équipé d'Android 2.3 pour laisser aux applications d'utiliser un appareil photo frontal.Pour Android 6+, en raison de la "permission" de l'émission, Si vous avez le message "Désolé, l'appareil a rencontré un problème. Vous devrez peut-être redémarrer l'appareil.", allez dans Paramètres - Applications - trouver "votre nom de l'application" - sélectionnez les Autorisations et l'interrupteur sur "Camera".
autorisation de caméra
n'est pas à la bonne place. il devrait être après l'application de la balise.
J'ai fait face à un problème similaire.
Alors que les tests sur Android M,l'appareil nécessite exécution de l'autorisation. L'ajout de cette réponse juste pour la référence, de manière à aider toute personne qui est coincé dans un scénario similaire.
J'ai résolu le problème sur Android 8.1.0 demander des autorisations pour l'application via le code.
La raison en est que (je pense) en raison d'un changement des politiques dans le dispositif de manipulation de l'accès dans les nouvelles versions d'Android, vous devez demander l'autorisation dans votre code. Il ne suffit pas de mettre les permissions nécessaires dans votre XML. L'utilisateur doit avoir le choix de refuser l'accès en utilisant l'application.
Pour activer le "donner la permission de popup", vous pouvez utiliser la suite par exemple à l'intérieur de onCreate de votre MainActivity:
Il devrait avoir le même effet que l'activation de l'autorisation via les paramètres. Mais dans une application réelle, demander des autorisations à partir de l'intérieur de votre application est probablement plus convivial.
Juste Ajouter autorisation caméra avec Toast :
et :
Il est possible que vous ayez un Administrateur de l'Appareil de désactivation de l'accès à la caméra. Vérifiez si l'appareil photo android app peut démarrer ou s'il se plaint d'un dispositif admin.
J'ai eu le même problème
Il fixe avec
Remarque: cela semble être un problème récent avec l'OS ( pré V3.0 Android) que le code fonctionnait.
J'ai été en mesure de régler la question par le simple fait de placer la caméra autorisations dans l'application principale.
Si vous appelez de la caméra dans l'émulateur android pour Android 2.2, il va donner une exception . Alors qu'il fonctionne très bien sur un appareil.
Découvrez votre code, je pense que votre code d'essayer d'ouvrir l'appareil photo à plusieurs reprises.
Télécharger google zxing scanner de code à barres de code source et puis essayez.