Nach vielen Recherchen und Tagen mit Experimenten habe ich keine einfache Lösung gefunden.
Ich entwickle eine App, die Benutzer mit einem Haustier auf dem Bildschirm interagieren und ich möchte ihn als Video speichern lassen.
Gibt es eine "einfache" Möglichkeit, den Bildschirm der App selbst zu erfassen?
Ich habe einen Workaround gefunden (um jede Sekunde Bitmaps zu speichern und dann an einen Encoder zu übergeben), aber es scheint zu schwer. Ich werde auch mit einer Framerate von 15fps glücklich sein
Es scheint möglich zu sein, d. h. es gibt eine ähnliche App, die das tut, sie heißt "Talking Tom"
Es hängt wirklich davon ab, wie Sie Ihre "Haustier-Ansicht" umsetzen. Zeichnest du auf einem Canvas? OpenGL ES? Normale Android-Ansichtshierarchie?
Wie auch immer, es gibt kein magisches "recordScreenToVideo ()" wie einer der Kommentare gesagt hat.
Sie müssen:
Erhalte Bitmaps, die deine "Frames" darstellen. Dies hängt davon ab, wie Sie Ihre Ansicht implementieren. Wenn Sie sich selbst zeichnen (Canvas oder OpenGL), speichern Sie Ihre Rohpixelpuffer als Rahmen. Wenn Sie die normale Ansichtshierarchie verwenden, erstellen Sie eine Unterklasse von Androids onDraw und speichern Sie die "Frames", die Sie auf der Leinwand erhalten. Die Häufigkeit des Systemaufrufs an onDraw ist nicht weniger als die tatsächliche "Bildfrequenz" des Bildschirms. Wenn nötig, duplizieren Sie anschließend Frames, um ein 15fps-Video zu liefern.
Kodieren Sie Ihre Bilder. Scheint so, als hättest du schon einen Mechanismus dafür, du brauchst ihn nur um effizienter zu sein.
Möglichkeiten, wie Sie die Kodierung optimieren können:
Ich hoffe, das hilft
Tags und Links android screen-capture