作者: Sam (甄峰) sam_code@hotmail.com
Sam在Android平台下获取Camera数据,长期使用在NativeC层,利用V4L2接口获取Camera数据。或利用交叉编译OpenCV,并强行修改其底层,
使之使用V4L2接口而获得Camera数据。
在Android
APP层面,在Android4.0之前,使用API获取Camera数据,只需要添加权限即可正常工作。在Android6.0时代,只知道需要动态权限,但没有真正使用过。
有一次和朋友交流时,
他提到Saki4510t/UVCCamera项目(https://github.com/saki4510t/UVCCamera)。Sam其实很疑惑为何需要用此种方式获取Camera数据。Android系统难道不允许APP去拿
Camera数据么?所以研究之。
1. 在Android
5.1.1平台利用系统自带Camera获取数据:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, your-store-uri);
startActivity(intent);
利用putExtra指定存储路径,还可以指定其它Camera设置。拍照完成后,可以存指定路径获取照片或视频。
2.在Android7.1.2平台利用系统自带Camera获取数据:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
利用putExtra指定存储路径,还可以指定其它Camera设置。拍照完成后,可以存指定路径获取照片或视频。
intent.putExtra(MediaStore.EXTRA_OUTPUT, your-store-uri);
startActivity(intent);
3.使用 android.hardware.Camera 在早期Android版本使用:
4. 使用android.hardware.Camera2 在Android6.0上使用(动态权限):