Android Tutorial Aufnahmen mit der internen Kamera machen

klaus

Expert
Licensed User
Longtime User
Die neue Camera Library erlaubt Aufnahmen zu machen mit der internen Kamera.

Das Englische Originaltutorial.

Folgende Schritte sind nötig um Aufnahmen zu machen.

- Das Camera Objekt initialisieren. Die Initialize Methode erwartet ein Panel. Die Bildervorschau wird in diesem Panel angezeigt.
- Auf das Ready Event warten.
- In der Ready Event Subroutine, Camera.StartPreview aufrufen um die Bildervorschau anzuzeigen.
- Call TakePicture aufrufen um die Aufnahme zu machen.
- Ein PictureTaken Event wird ausgelöst mit der Bilddatei als Bytearray im JPEG Format.
- Camera.StartPreview erneut aufrufen für die Bildervorschau.

Nur ein Prozess kann die Kamera zur gleichen Zeit benutzen. Deshalb muß die Kamera in der Activity_Pause Routine frei gegeben werden.
Normalerweise wird die Kamera in Activity_Resume initialisiert und in Activity_Pause frei gegeben.

camera_1.png


Der folgende Code speichert das Bild:

B4X:
Sub Camera1_PictureTaken (Data() As Byte)
    Dim out As OutputStream
    out = File.OpenOutput(File.DirRootExternal, "1.jpg", False)
    out.WriteBytes(data, 0, data.Length)
    out.Close
    ToastMessageShow("Image saved: " & File.Combine(File.DirRootExternal, "1.jpg"), True)
Sie können im beigelegten Code sehen daß der "Take picture" Button nur verfügbar ist (enabled) wenn die Kamera bereit ist.

Vorläufig ist die Kameraorientierung immer für Landscape gesetzt. Normalerweise möchte man die Activity ja eigentlich immer im Landscape Modus haben. Das kann man IDE im Menü definieren, Project - Orientations Supported und Landscape ankreuzen.

Im Emulator werden keine Bilder in der Vorschau angezeigt sondern ein Pseudobild.
 
Last edited by a moderator:
Top