Android-Kamera-Ansicht

Ich versuche, eine Oberflächenansicht für eine Kamera zu schaffen, so dass es auf der Oberfläche macht, wann immer in der Ansicht der Kamera ist. Im Moment ist alles, was ich auf meiner Kamera sehen kann, eine schwarze Bildschirmansicht. Ich habe versucht, auf Google zu schauen und hier aber bisher habe ich nicht gefunden was ich suche. Jeder kann mir eine Idee vorschlagen.

  • Wie finde ich Tablet oder Telefon in Android, programmgesteuert?
  • Verweis auf F # -Code in Android-Projekt
  • Wie bekomme ich SMS in Android 6 Marshmallow
  • Android-Verschleierung App mit Proguard hält verschleiern Bibliotheks-Gläser - oder ist es?
  • Android Autocomplete Textansicht und Cursoradapter
  • Warum macht Intent Cloneable?
  • Wie kann ich eine Bewerbung als Home-Alternative registrieren?
  • Grenze für das Layout
  • XmlPullParser: erhalten inneren Text einschließlich XML-Tags
  • Rand zwischen Gegenständen in Recycler-Ansicht Android
  • SVG to Android Shape
  • Fehler: Ausführung fehlgeschlagen für Task ': app: transformClassesWithDexForDebug'
  • 2 Solutions collect form web for “Android-Kamera-Ansicht”

    Ich habe eine Klasse geschrieben, die dir helfen kann.

    public class Preview_can_work extends Activity { private SurfaceView surface_view; private Camera mCamera; SurfaceHolder.Callback sh_ob = null; SurfaceHolder surface_holder = null; SurfaceHolder.Callback sh_callback = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setFormat(PixelFormat.TRANSLUCENT); surface_view = new SurfaceView(getApplicationContext()); addContentView(surface_view, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); if (surface_holder == null) { surface_holder = surface_view.getHolder(); } sh_callback = my_callback(); surface_holder.addCallback(sh_callback); } SurfaceHolder.Callback my_callback() { SurfaceHolder.Callback ob1 = new SurfaceHolder.Callback() { @Override public void surfaceDestroyed(SurfaceHolder holder) { mCamera.stopPreview(); mCamera.release(); mCamera = null; } @Override public void surfaceCreated(SurfaceHolder holder) { mCamera = Camera.open(); try { mCamera.setPreviewDisplay(holder); } catch (IOException exception) { mCamera.release(); mCamera = null; } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { mCamera.startPreview(); } }; return ob1; } } 

    In deiner Manifestdatei kopiere diesen Code für die Kamera-Erlaubnis

     <uses-permission android:name="android.permission.CAMERA"/> 

    Erläuterung:

    SurfaceView ist eine Art von Ansicht, die einen SurfaceHolder enthält. SurfaceHolder hält die Oberfläche, auf der wir unsere Medien (im Allgemeinen Frames) anzeigen können.

    MCamera ist ein Kameraobjekt, das die Kamerainstanz enthält.

    Wenn du die Standard-Kamera-Instanz halten willst, kannst du einfach Camera.open () anrufen;

    Kamera mCamera = Kamera.open ();

    Jetzt hast du eine offene Kamera oder du hast eine Standard-Kamera-Instanz. Jetzt musst du Frames von der Kamera aufnehmen und auf einer Oberfläche anzeigen. Aber du kannst es nicht ohne irgendwelche anzeigen

    Oberfläche. Hier bietet surfaceView surfaceHolder und surfaceHolder bietet Oberfläche, um Kamerafelder anzuzeigen. Jetzt, wenn die Oberfläche erstellt wird, sind drei Callback-Funktionen

    namens.

     1. public void surfaceCreated(SurfaceHolder holder) 2. public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) 3. public void surfaceDestroyed(SurfaceHolder holder) 

    Hinweis: – Die Oberfläche wird zerstört, wenn deine Anwendung weiter pausiert.

    SurfaceCreated: surfaceCreated ist eine Callback-Funktion, die aufgerufen wird, wenn deine Oberfläche erstellt wird. Hier können Sie Ihre Kamera öffnen und andere Attribute setzen.

    SurfaceChanged: Dies wird mindestens einmal genannt, wenn deine Oberfläche erstellt wird. Danach wird es angerufen, wann immer sich deine Oberfläche ändert (bei der Gerätedrehung). Hier kannst du

    Starten Sie Ihre Vorschau, da Ihre Oberfläche bereits erstellt wurde.

    SurfaceDestroyed: Dies wird jedes Mal genannt, wenn deine Oberfläche zerstört wird. Nun, wenn Sie nicht haben Oberfläche dann wo Sie können Sie Kamera-Frames, so habe ich freigegeben Kamera, indem Sie

    MCamera.release (). Dies ist sehr wichtig, denn wenn Ihre Aktivität wird auf Pause und jede andere Aktivität versucht, Kamera zu öffnen, dann wird es nicht in der Lage, es zu öffnen, wie Sie haben

    Schon Kamera öffnen Kamera ist eine gemeinsam genutzte Ressource, so dass nur einmal eine Anwendung es verwenden kann. Also erinnere dich an eine Sache, wann immer du eine Kamera öffnest

    StopPreview: Wenn du die Vorschau startet, dann beginnt deine Kamera, deine Frames zu erfassen und auf einer Oberfläche anzuzeigen. Jetzt, wenn deine Oberfläche zerstört ist, musst du aufhören, Frames zu erfassen

    Von der Kamera, also musst du mCamera.stopPreview anrufen.

    Stellen Sie sicher, dass Sie die Erlaubnis hinzugefügt haben:

    <uses-permission android:name="android.permission.CAMERA"/>

    Auch diese Fenster Eigenschaften:

     getWindow().setFormat(PixelFormat.TRANSLUCENT); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

    Post einige Code, wenn das nicht funktioniert, um Ihnen zu helfen

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.