百度生成在线网站地图,巴中市住房和城乡建设局网站,建设公司网站源码,建站的公司基于android的 rk3399 同时支持多个USB摄像头 一、前文二、CameraHal_Module.h三、CameraHal_Module.cpp四、编译烧录Image五、App验证 一、前文
Android系统默认支持2个摄像头#xff0c;一个前置摄像头#xff0c;一个后置摄像头
需要支持数量更多的摄像头#xff0… 基于android的 rk3399 同时支持多个USB摄像头 一、前文二、CameraHal_Module.h三、CameraHal_Module.cpp四、编译烧录Image五、App验证 一、前文
Android系统默认支持2个摄像头一个前置摄像头一个后置摄像头
需要支持数量更多的摄像头得修改Android Hal层的代码在这里插入图片描述
二、CameraHal_Module.h
修改CAMERAS_SUPPORT_MAX三、CameraHal_Module.cpp
修改camera_get_number_of_cameras()函数中变量camInfoTmp[]相关代码四、编译烧录Image
该部分的修改要生效的话需要进行全编译 ./build.sh./build.sh mkimage./build.sh mkupdate五、App验证
AndroidManifest.xml
?xml version1.0 encodingutf-8?
manifest xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:toolshttp://schemas.android.com/tools
uses-permission android:nameandroid.permission.INTERNET /
uses-permission android:nameandroid.permission.ACCESS_NETWORK_STATE /
uses-permission android:nameandroid.permission.ACCESS_WIFI_STATE /
uses-permission android:nameandroid.permission.CAMERA /
uses-permission android:nameandroid.permission.WRITE_EXTERNAL_STORAGE /
uses-permission android:nameandroid.permission.READ_EXTERNAL_STORAGE /
uses-featureandroid:nameandroid.hardware.cameraandroid:requiredfalse /
uses-featureandroid:nameandroid.hardware.camera.autofocusandroid:requiredfalse /
applicationandroid:allowBackuptrueandroid:dataExtractionRulesxml/data_extraction_rulesandroid:fullBackupContentxml/backup_rulesandroid:iconmipmap/ic_launcherandroid:labelstring/app_nameandroid:roundIconmipmap/ic_launcher_roundandroid:supportsRtltrueandroid:themestyle/Theme.CameraApplicationtools:targetApi31activityandroid:name.MainActivityandroid:exportedtrueintent-filteraction android:nameandroid.intent.action.MAIN /category android:nameandroid.intent.category.LAUNCHER //intent-filtermeta-dataandroid:nameandroid.app.lib_nameandroid:value //activity
/application
/manifestMainActivity.java
package com.example.cameraapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.hardware.Camera;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.widget.Toast;import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private static final String TAG MainActivity.class.getSimpleName();
Camera camera1, camera2, camera3, camera4;
SurfaceHolder surfaceHolder1, surfaceHolder2, surfaceHolder3, surfaceHolder4;
SurfaceView surfaceView1, surfaceView2, surfaceView3, surfaceView4;
ListCamera cameraList new ArrayList();
ListSurfaceHolder surfaceHolderList new ArrayList();
ListSurfaceView surfaceViewList new ArrayList();
Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);surfaceView1 findViewById(R.id.camera_surface_view1);surfaceView2 findViewById(R.id.camera_surface_view2);surfaceView3 findViewById(R.id.camera_surface_view3);surfaceView4 findViewById(R.id.camera_surface_view4);cameraList.add(camera1);cameraList.add(camera2);cameraList.add(camera3);cameraList.add(camera4);surfaceHolderList.add(surfaceHolder1);surfaceHolderList.add(surfaceHolder2);surfaceHolderList.add(surfaceHolder3);surfaceHolderList.add(surfaceHolder4);surfaceViewList.add(surfaceView1);surfaceViewList.add(surfaceView2);surfaceViewList.add(surfaceView3);surfaceViewList.add(surfaceView4);for(int i0; icameraList.size(); i){initCamera(i, cameraList.get(i), surfaceHolderList.get(i), surfaceViewList.get(i));}int number Camera.getNumberOfCameras();//得到摄像头的个数Toast.makeText(MainActivity.this, 摄像头个数number, Toast.LENGTH_LONG).show();
}
private void initCamera(int number, Camera camera, SurfaceHolder surfaceHolder, SurfaceView surfaceView){try{camera Camera.open(number);surfaceHolder surfaceView.getHolder();surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);final Camera mCamera camera;surfaceHolder.addCallback(new SurfaceHolder.Callback() {Overridepublic void surfaceCreated(SurfaceHolder surfaceHolder) {try {if (mCamera!null) {mCamera.setPreviewDisplay(surfaceHolder);mCamera.setDisplayOrientation(90);mCamera.startPreview();}} catch (Exception e) {e.printStackTrace();}}Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {}Overridepublic void surfaceDestroyed(SurfaceHolder holder) {releaseCamera(mCamera);}});}catch (Exception e){e.printStackTrace();}
}
/*** 释放相机资源*/
private void releaseCamera(Camera camera) {if (camera ! null) {camera.setPreviewCallback(null);camera.stopPreview();camera.release();camera null;}
}
/*** 释放相机资源*/
private void releaseAllCamera() {for(int i0; icameraList.size(); i){if (cameraList.get(i) ! null) {cameraList.get(i).setPreviewCallback(null);cameraList.get(i).stopPreview();cameraList.get(i).release();cameraList.set(i, null);}}
}
}activity_main.xml
?xml version1.0 encodingutf-8?
LinearLayoutxmlns:androidhttp://schemas.android.com/apk/res/android
xmlns:apphttp://schemas.android.com/apk/res-auto
xmlns:toolshttp://schemas.android.com/tools
android:layout_widthmatch_parent
android:layout_heightmatch_parent
android:orientationvertical
tools:context.MainActivity
!-- TextView--
!-- android:layout_gravitycenter--
!-- android:layout_margin10dp--
!-- android:layout_widthwrap_content--
!-- android:layout_heightwrap_content--
!-- android:text摄像头个数--
!-- app:layout_constraintBottom_toBottomOfparent--
!-- app:layout_constraintEnd_toEndOfparent--
!-- app:layout_constraintStart_toStartOfparent--
!-- app:layout_constraintTop_toTopOfparent /--
LinearLayoutandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:orientationhorizontalandroid:layout_weight1SurfaceViewandroid:idid/camera_surface_view1android:layout_weight1android:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:gravitycenter/SurfaceViewandroid:idid/camera_surface_view2android:layout_weight1android:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:gravitycenter/
/LinearLayout
LinearLayoutandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:orientationhorizontalandroid:layout_weight1SurfaceViewandroid:idid/camera_surface_view3android:layout_weight1android:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:gravitycenter/SurfaceViewandroid:idid/camera_surface_view4android:layout_weight1android:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:gravitycenter/
/LinearLayout
/LinearLayout