2016-11-05 2 views
1

J'utilise Camera2 api d'Android. Je suis capable de capturer l'image et de la sauvegarder. J'utilise le mode autofocus pour faire la mise au point et capturer des images.Dessiner autofocus rectangle dans l'aperçu en utilisant camera2 android

captureBuilder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE); 

où captureBuilder est

private CaptureRequest.Builder captureBuilder; 

Je veux montrer un rectangle ou un cercle dans la zone de mise au point automatique dans l'aperçu de la caméra comme il arrive dans l'application de la caméra par défaut. Pour une instance comme le rectangle au milieu de l'aperçu ici.

enter image description here

Je l'ai vu this mais je ne veux rien en touchant n'importe où dans l'aperçu.

J'ai cherché à travers beaucoup d'exemples mais la plupart d'entre eux illustrent l'utilisation de Camera obsolète classe, rien de très utile sur Camera2 api. Comment ce rectangle de focus peut-il être réalisé avec la nouvelle caméra api?

+0

vérifier la réponse de ce fil: http://stackoverflow.com/questions/31173476/android-sdk-camera2-draw-rectangle-over-textureview. – user1035292

Répondre

1

Il semble que vous vouliez juste un rectangle statique au centre de l'aperçu.

Vous pouvez le faire via une mise en page XML en ajoutant l'image dans la mise en page.

Prenant l'exemple Camera2Basic (https://github.com/googlesamples/android-Camera2Basic) et l'ajouter à cela, l'exemple ci-dessous ajoute le rectangle, certains boutons de texte et de contrôle sur le côté (il est pour l'orientation paysage):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <com.example.android.camera2basic.AutoFitTextureView 
     android:id="@+id/texture" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentTop="true" /> 

    <LinearLayout 
     android:id="@+id/control" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentTop="true" 
     android:background="@color/colorPrimary" 
     android:orientation="vertical"> 

     <Space 
      android:layout_width="1dp" 
      android:layout_height="0dp" 
      android:layout_weight="1" > 
     </Space> 

     <TextView 
      android:id="@+id/label1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:text="@string/label1_text" /> 

     <Space 
      android:layout_width="1dp" 
      android:layout_height="0dp" 
      android:layout_weight="1" > 
     </Space> 

     <Button 
      android:id="@+id/picture_button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:text="@string/picture_button_text" /> 

     <Space 
      android:layout_width="1dp" 
      android:layout_height="0dp" 
      android:layout_weight="1" > 
     </Space> 

     <ImageButton 
      android:id="@+id/info" 
      style="@android:style/Widget.Material.Light.Button.Borderless" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal|bottom" 
      android:contentDescription="@string/description_info" 
      android:padding="20dp" 
      android:src="@drawable/ic_action_info" /> 

     <Space 
      android:layout_width="1dp" 
      android:layout_height="0dp" 
      android:layout_weight="1" > 
     </Space> 

    </LinearLayout> 

    <RelativeLayout 
     android:id="@+id/tileview" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_toLeftOf="@+id/control" 
     android:background="@android:color/transparent" > 

     <ImageView 
      android:id="@+id/autofocus_rectangle" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/autofocus_landscape_Image" 
      android:layout_centerInParent="true" /> 

     <TextView 
      android:id="@+id/bottom_text" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerInParent="true" 
      android:layout_alignParentBottom="true" 
      android:layout_margin="10sp" 
      android:background="@android:color/holo_blue_dark" 
      android:textSize="15sp" 
      android:padding="5sp" 
      android:text="" /> 

    </RelativeLayout> 

</RelativeLayout>