2012-08-01 26 views
5

Jestem początkującym programistą w tworzeniu aplikacji na Androida. Chcę utworzyć aplikację, która odbierze strumień z kamery i wyświetli na SurfaceView lub na FrameLayout.Android - pokaż linie siatki na kamerze

Potrzebuję opcji pokazanej powyżej w strumieniu "Pokaż linie siatki", gdy użytkownik kliknie na nią linie siatki będą wyświetlane w strumieniu kamery.

Czy ktoś może mi pomóc, w jaki sposób mogę wyświetlić linie siatki na streamingu kamery?

Każda pomoc będzie znacząca ...

Dziękuję. Mohsin

Odpowiedz

11

Jeśli chcesz narysować linie dinamicly w zależności od rozmiaru ekranu, możesz użyć tego dodając go do klasy podglądu kamery.

@Override 
    protected void onDraw(Canvas canvas) 
    { 
     if(grid){ 
     // Find Screen size first 
     DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics(); 
     int screenWidth = metrics.widthPixels; 
     int screenHeight = (int) (metrics.heightPixels*0.9); 

     // Set paint options 
     paint.setAntiAlias(true); 
     paint.setStrokeWidth(3); 
     paint.setStyle(Paint.Style.STROKE); 
     paint.setColor(Color.argb(255, 255, 255, 255)); 

     canvas.drawLine((screenWidth/3)*2,0,(screenWidth/3)*2,screenHeight,paint); 
     canvas.drawLine((screenWidth/3),0,(screenWidth/3),screenHeight,paint); 
     canvas.drawLine(0,(screenHeight/3)*2,screenWidth,(screenHeight/3)*2,paint); 
     canvas.drawLine(0,(screenHeight/3),screenWidth,(screenHeight/3),paint); 
     } 
    } 

Trzeba także dodać następujący wiersz w konstruktorze klasy podglądu Twojego aparatu:

this.setWillNotDraw(false); 
+0

W tym przypadku należy ustawić opcje farby na konstruktora i zaoszczędzić trochę zasobów. Opcje malowania są stałe, a metoda onDraw() będzie wywoływana wiele razy. – Oximer

3

Jeśli chcesz nakładkę na podgląd kamery, musisz napisać własną kamerę. Jest to dość trudny temat do pokrycia w jednej odpowiedzi, ale tu jest przewodnikiem, który powinien zacząć grę:

http://developer.android.com/guide/topics/media/camera.html#custom-camera

Po aparat działa, wystarczy zmienić układ XML aktywności aparatu. Użyj RelativeLayout, pozwoli ci umieścić inne Widoki (przyciski, obrazy) na powierzchni podglądu.

Oto przykładowy układ XML zgodny z przewodnikiem wymienionym powyżej. Powierzchnia podglądu jest tworzona programowo i umieszczana w FrameLayout (więcej w przewodniku połączonym powyżej). ImageView zostanie narysowany na powierzchni podglądu.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 

    <FrameLayout 
    android:id="@+id/camera_preview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    /> 

    <ImageView 
    android:id="@+id/grid" 
    android:src="@drawable/your_grid_drawable" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    /> 

</RelativeLayout> 

Będziesz musiał również umieścić przycisk przechwytywania i przycisk przełącznika siatki, ale powinieneś uzyskać pomysł, jak to zrobić z powyższego przykładu. Wystarczy dodać więcej elementów do RelativeView i ustawić je tak, jak w zwykłym układzie.