Android – показать сетчатые линии на камере

Я новичок в разработке приложений для Android. Я хочу создать приложение, которое будет получать поток с камеры и показать на SurfaceView или FrameLayout.

Мне нужна опция, показанная выше, при потоковой передаче «Show Grid Lines», когда пользователь нажимает на нее, линии сетки будут отображаться в потоке камеры.

Может ли кто-нибудь помочь мне, как я могу показать линии сетки при потоковой передаче камеры ???

Любая помощь будет заметна …

Спасибо. Mohsin

Если вы хотите динамически рисовать строки в зависимости от размера экрана, вы можете использовать это, добавив его в класс предварительного просмотра камеры.

@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); } } 

Вам также нужно добавить следующую строку в конструкторе класса предварительного просмотра камеры:

 this.setWillNotDraw(false); 

Если вы хотите наложить на предварительный просмотр камеры, вам придется написать свою собственную камеру. Это довольно трудная тема для покрытия в одном ответе, но вот руководство, которое должно вас начать:

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

Когда у вас есть рабочая камера, просто отредактируйте XML-макет активности вашей камеры. Используйте RelativeLayout, это позволит вам поместить другие виды (кнопки, изображения) поверх вашей поверхности предварительного просмотра.

Ниже приведен пример компоновки XML, совместимый с руководством, упомянутым выше. Панель предварительного просмотра создается программно и помещается в FrameLayout (подробнее в руководстве, приведенном выше). ImageView будет нарисован поверх поверхности предварительного просмотра.

 <?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> 

Вам также придется разместить там кнопку захвата и кнопку переключения сетки, но вы должны понять, как это сделать из приведенного выше примера. Просто добавьте больше элементов в RelativeView и расположите их так же, как и в обычном макете.