Wie zeichnen mit framebuffer auf Android?
Ich würde gerne eine Anwendung schreiben, die für Android, das zeigt Sachen auf dem Bildschirm mit dem framebuffer. Diese laufen nur auf einem bestimmten verwurzelt Gerät, also Berechtigungen etc ist kein problem. Dieselbe Anwendung (einfacher test-version sowieso) ist bereits ausgeführt okay, auf PC/Linux.
Fragen:
-
Wie zu vermeiden, die Android OS den Zugriff auf den framebuffer? Ich möchte, während meine Anwendung läuft, die OS nie berühren Sie den framebuffer, kein schreibt und keine ioctls. Was muss ich tun, um die exklusive Nutzung des framebuffer-und dann (wenn meine Anwendung beendet wird) geben es zurück an den OS?
-
Gibt es Unterschiede zwischen Android-und Linux-framebuffer framebuffer zu achten?
P. S. ich würde gerne meine Anwendung als reguläre Android-Anwendung (mit einigen native-code), es hat keine sichtbaren UI-außer für den framebuffer zeichnet, die über den ganzen Bildschirm. Es wäre schön, noch in der Lage sein, um Ereignisse aus dem OS.
Siehe auch:
http://www.kandroid.org/online-pdk/guide/display_drivers.html
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hallo Alex, Nicht sicher, warum /wie zu stoppen android OS von schreiben in den framebuffer. So lange, wie Sie Ihre android-Anwendung sichtbar ist und auf der Oberseite haben Sie die Kontrolle, als das, was Sie anzeigen möchten.
Ihre Bewerbung sollte eine Aktivität mit einer SurfaceView ( Sie können Ihre Anwendung zu hide notification bar rufen Sie diese Funktion in der oncreate deiner Aktivität)
requestWindowFeature(Window.FEATURE_NO_TITLE);
)Ihre Aktivität haben sollte SurfaceHolder.Rückruf Umsetzung, Rückrufe zu handhaben, als wenn die Oberfläche bereit ist, gefüllt mit framebuffer. Holen Sie sich die Oberfläche Halter Objekt als SurfaceView.getHolder (), sofern Sie möchten, legen Sie die pixel-Formate, die Ansicht, etc.
Einmal "surfaceCreated" callback wird aufgerufen, können Sie sicher geben Sie Ihre surfaceview Objekts(übergeben Sie Breite und Höhe vielleicht eine gute Idee auch) auf die native, so dass Sie können füllen Sie framebuffer verwenden "ANativeWindow" - Klasse.
Überprüfen NDK Beispielcode zu sehen, wie die Klasse NDK Dokumentation
SurfaceHolder.Callback-Dokumentation
SurfaceHolder Dokumentation
im wesentlichen müssen Sie diese (AUF JB /Kitkat)
bekommen das native Fenster (ANativeWindow) im Zusammenhang mit der surfaceview von
ANativeWindow_fromSurface
.Erwerben eine Sperre auf die ANativeWindow von
ANativeWindow_acquire
.Set-geometrie-Parameter(Fenster,width,height,pf) für die nativewindow-von
ANativeWindow_setBuffersGeometry
Laden Sie die nativewindow-mit dem frambuffer gespeichert (apply dirty Rechteck, wenn jeder hier)
durch
ANativeWindow_lock
Letzten Schritt zu entsperren und die änderungen für die Darstellung von
ANativeWindow_unlockAndPost
Gehen Sie durch die ndk-Beispiel Beispiele in Fall müssen Sie einen Beispielcode.NDK Dokumentation