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.
Der folgende Code speichert das Bild:
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.
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.
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)
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: