Android系统默认支持2个摄像头,一个前置摄像头,一个后置摄像头
需要支持数量更多的摄像头,得修改Android Hal层的代码
在这里插入图片描述
修改CAMERAS_SUPPORT_MAX

修改camera_get_number_of_cameras()函数中变量camInfoTmp[]相关代码



该部分的修改要生效的话,需要进行全编译
./build.sh
./build.sh mkimage
./build.sh mkupdate
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;
List cameraList = new ArrayList<>();
List surfaceHolderList = new ArrayList<>();
List 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 i=0; i