Android SDK - camera2 - Zeichnen Sie ein Rechteck über TextureView

8

Ich bin neu in der Android-Entwicklung, und ich finde es schwierig, gute Beispiele auf der camera2 api zu finden.

Ich arbeite mich langsam durch die meisten Probleme, aber auf dieser einen stecke ich fest. Wenn Sie in der Standardkamera auf den zu fokussierenden Bildschirm tippen, wird für einen Moment ein Rechteck des Fokusbereichs angezeigt. Ich möchte etwas Ähnliches machen (oder in diesem Fall, genau die gleiche Sache, um damit anzufangen, damit ich es herausfinden kann).

Ich habe irgendwo gelesen (ich denke, die TextureView-Seite in den SDK-Dokumenten), die Sie nicht in einer Texturansicht zeichnen können, während sie als Kameravorschau verwendet wird. Wenn Sie die Lock-Methode aufrufen, wird NULL anstelle von Canvas zurückgegeben.

Ich habe das online gefunden: Ссылка Aber ich kann es nicht zur Arbeit bringen. Ich bekomme entweder Fehler, meine meine Hauptansicht kann nicht in meine Drawable View umgewandelt werden, oder umgekehrt - Oder meine Drawable View ist oben und macht den Bildschirm schwarz - Oder es auf der Unterseite und nicht auf Berührungsereignisse reagieren (und zu erzwingen versuchen Das PerformClick aus der Ansicht darüber stürzt ab.)

Ich stecke fest! Kann jemand mir eine Erklärung oder ein Beispiel geben, wie ich mein Rechteck für einige Sekunden über die Ereignisposition zeichnen kann?

Danke!

    
aescript 01.07.2015, 23:48
quelle

2 Antworten

4
  1. Zuerst zum Beispiel von camera2 api android gibt es einen Open Source Google Beispielcode. Ссылка
  2. Für den Teil, in dem Sie ein Rechteck zeichnen möchten (zum Fokussieren berühren), folgen Sie diesen Schritten -
    • Erstellen Sie eine benutzerdefinierte Klasse, die zu SurfaceView erweitert wird.
    • Rufen Sie dieTouchListener-Methode in dieser benutzerdefinierten Klasse auf, um Fingerkoordinaten zu erkennen und zeichnen Sie Ihr Rechteck mithilfe der Malklasse in android. - Fügen Sie diese benutzerdefinierte Klasse über Ihrer TextureView hinzu, die eine Vorschau von camera2 anzeigt.
    • drehen Sie die benutzerdefinierte Ansicht transparent.
    • schließlich, wenn Sie irgendwann auf dem Bildschirm des Geräts berühren, wird onTouchListener aufgerufen, der auf die Leinwand der benutzerdefinierten Ansicht zeichnet, die Sie über Ihrer Kameravorschau hinzugefügt haben.
    • Löschen Sie schließlich Ihre Zeichenfläche, damit Sie nicht mehr Rechtecke zu customview hinzufügen, da Sie zu einem bestimmten Zeitpunkt ein rect benötigen.
    • Auch wenn das Rechteck für einige Zeit nicht berührt wird, sollte es verschwinden. Führen Sie dazu einen Handler aus der benutzerdefinierten Ansicht aus.

Ich gebe Ihnen hier einen getesteten Code, um dies zu tun. Ich hoffe es hilft dir. BEST OF GLÜCK.

%Vor%     
Sahil Deswal 23.07.2016, 03:23
quelle
1

Ich habe es gelöst -Ich musste meine Oberflächenansicht auf drawColor (Color.TRANSPARENT) mit einer klaren Flagge setzen und alles war in Ordnung.

    
aescript 03.07.2015 08:18
quelle