hasSystemFeature (PackageManager.FEATURE_CAMERA) gibt true für Gerät ohne Kamera zurück

9

Ich habe eine Anwendung, die Kamerafunktionalität verwendet, aber ein Teil ihrer Funktionalität kann auch ohne Kamerafunktion ausgeführt werden. SO habe ich das in mein Manifest geschrieben.

%Vor%

und in meinem Code überprüfe ich, ob das Gerät eine Kamera hat oder nicht verwendet

%Vor%

Jetzt teste ich meinen Code auf einem Tablet mit Android 4.0 (ICS) und hat keine Kamera. Aber trotzdem bekomme ich True Wert für die deviceHasCameraFlag . Ist das komisch oder fehlt mir etwas?

Ich habe verschiedene Dinge ausprobiert und sogar das Gleiche mit der Bluetooth-Funktion versucht, da das Tablet sogar keine Bluetooth-Funktion hat. Es funktioniert gut für Bluetooth, aber gibt mir die Kamera wahr.

    
y. dixit 26.03.2014, 05:25
quelle

5 Antworten

9

Welches Gerät ist das? Die Antwort, die Sie bekommen, ist ein Fehler, und 4.0 ist heutzutage sehr alt. Viele Tablets, auf denen diese Version noch ausgeführt wird, wurden nicht korrekt erstellt, da sowohl Hardware als auch Software mehrere Probleme aufweisen.

Unabhängig davon sollten Sie immer darauf vorbereitet sein, Fehler in Camera.open() oder Camera.open(0) zu behandeln: In einigen Fällen wird die Kamera von anderen Software auf Ihrem Gerät nicht ordnungsgemäß freigegeben.

In Ihrem Fall haben Sie also ein falsches positives Ergebnis, Sie versuchen, die Kamera zu öffnen, es schlägt fehl und Sie fahren fort, als ob sich keine Kamera auf dem Gerät befindet, auch wenn PackageManager das denkt strong> PackageManager.FEATURE_CAMERA ist verfügbar.

    
Alex Cohn 26.03.2014, 06:00
quelle
4

Obwohl ich die Antwort von Alex akzeptiert habe, möchte ich diese dennoch kollektiv als die beste Lösung unter solchen Bedingungen betrachten.

Was ich gefunden habe, war im Falle einiger niedriger Standard-Android-Geräte

%Vor%

gibt true zurück, selbst wenn die Kamera nicht existiert und das scheint ein Gerätefehler zu sein, der nicht aktiviert ist.

Wenn es also ein Szenario gibt, dass Sie überprüfen müssen, ob die Kamera für ein Gerät existiert oder nicht, ist das Beste, was ich unten anführe (Best Practice nach meinem Wissen, wenn es eine interessantere und beste Lösung gibt, die Sie sind) Willkommen, es hier auf diesem Pfosten zu setzen)

%Vor%

Dabei überprüfe ich sowohl die Anzahl der Kameras als auch das Gerät über die Boolean-Funktion der Kamera, so dass mein Zustand in keinem Fall fehlschlagen würde.

    
y. dixit 22.08.2014 04:28
quelle
1

In meinem Fall hatte ich diesen Code:

%Vor%

und es wurde immer falsch auf einem Genymotion-Gerät mit Android 4.1.1 (API 16) zurückgegeben. Nachdem ich die Konstante PackageManager.FEATURE_CAMERA_ANY in PackageManager.FEATURE_CAMERA geändert hatte, verschwanden meine Probleme. Ich vermute, dass nicht alle Geräte / API-Ebenen PackageManager.FEATURE_CAMERA_ANY unterstützen.

    
Tash Pemhiwa 20.08.2014 16:57
quelle
0

Ich habe es, du wirst es versuchen, definitiv wird es funktionieren ....

%Vor%     
Naveen Kumar 26.03.2014 05:30
quelle
-2

Bitte versuchen Sie diesen Code:

%Vor%

Es funktioniert immer noch nicht, dann lass es mich wissen

    
Himanshu Agarwal 26.03.2014 05:29
quelle