/ / Wie zielen mehrere API-Ebenen? - Android, API, Kamera, Ebene

Wie zielen Sie auf mehrere API-Ebenen ab? - Android, API, Kamera, Ebene

Ich möchte die Methode "Camera.open () von Android" auf zwei separaten API-Ebenen verwenden: Erstens API-Level 7, das 2.1 und höher ist, und zweitens 2.3.3 und 2.3.4, die API-Level 9 sind.

Auf API-Ebene 7 und 8 verwendet die Camera.open-Methode keine Argumente. Auf API-Ebene 9 und höher nimmt die Kamera ein Integer-Argument, das ihr die zu verwendende cameraId liefert.

Wie kann ich beide API-Ebenen im selben Code ausrichten? Etwas ähnlich zu diesem Pseudocode:

Camera lCamera;
if (Platform.APILevel < 7){
lCamera.open();
}else {
lCamera.open(0);
}

Antworten:

7 für die Antwort № 1

Wir machen oft Reflexionserkennung. Etwas wie:

    public Camera getCamera() {
try {
Method method = Camera.class.getMethod("open", Integer.TYPE);
return (Camera) method.invoke(null, 0);
} catch (Exception e) {
// Yes, I really want to handle all exceptions here!!!!
Log.d(TAG,"Error when trying to invoke Camera.open(int), reverting to open()",e);
return Camera.open();
}
}

2 für die Antwort № 2

Im Allgemeinen zielen Sie nur auf die niedrigste API-Ebene, mit der Sie durchkommen können. Alles, was für API-Level 7 erstellt wird, funktioniert für API-Level 8, 9, 10 usw. Rufen Sie in diesem Fall einfach an lCamera.open(); und es wird die erste nach hinten gerichtete Kamera auswählen. Wenn Sie eine Frontkamera verwenden möchten, müssen Sie die höhere API-Ebene 9 verwenden.


2 für die Antwort № 3

Sie können die API-Ebene durch Lesen der final static ganze Zahl android.os.Build.VERSION.SDK_INT.

Stellen Sie in Ihrem Manifest sicher, dass Sie festlegen android:minSdkVersion UND android:targetSdkVersion.