1.安卓 android studio 报错 Could not find com.android.tools.build:gradle:3.2.1.
2.Missing javaCompileTask for variant: debug/0 from output dir
3.more than one device and emulator
4.system/bin/sh: adb: not found
5.adb 命令行安装 apk 时,出错:Failure [INSTALL_FAILED_TEST_ONLY]
6.关于安卓Android studio Didn't find class "com.xx.MainActivity" on path: DexPathList[[zip……的解决
7.Android解决INSTALL_FAILED_CONFLICTING_PROVIDER错误的方法
8.java.lang.RuntimeException: setParameters failed at android.hardware.Camera.native_setParame
具体的照片尺寸可以通过下面方法获取到最接近的
/**
* 获取相机硬件实际支持的预览大小、图像大小
*
* @param cameraSize List<Camera.Size>
* @param width 屏幕宽
* @param height 屏幕高
* @param diff 加权重比
* @return 实际支持的预览大小、图像大小
*/
private Camera.Size getCameraSize(List<Camera.Size> cameraSize, int width, int height, double diff) {
if (width < height) {
int temp = height;
height = width;
width = temp;
}
double ratio = (double) width / height;
if (cameraSize == null || cameraSize.isEmpty()) {
Log.d(TAG, "getCameraSize: 获取相机预览数据失败");
return null;
}
Camera.Size outputSize = null;
for (Camera.Size currentSize : cameraSize) {
double currentRatio = (double) currentSize.width / currentSize.height;
double currentDiff = Math.abs(currentRatio - ratio);
if (currentDiff > diff) {
continue;
}
if (outputSize == null) {
outputSize = currentSize;
} else {
if (outputSize.width * outputSize.height < currentSize.width * currentSize.height) {
outputSize = currentSize;
}
}
diff = currentDiff;
}
if (outputSize == null) {
diff += 0.1f;
if (diff > 1.0f) {
outputSize = cameraSize.get(0);
} else {
outputSize = getCameraSize(cameraSize, width, height, diff);
}
}
return outputSize;
}
设置相机参数代码如下:
private void startCamera(int cameraId) {
try {
camera = Camera.open(cameraId);
camera.setPreviewTexture(surfaceTexture);
Camera.Parameters parameters = camera.getParameters();
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
parameters.setPreviewFormat(ImageFormat.NV21);
//设置对焦模式,后置摄像头开启时打开,切换到前置时关闭(三星、华为不能设置前置对焦,魅族、小米部分机型可行)
// if (cameraId == 0) {
// //小米、魅族手机存在对焦无效情况,需要针对设备适配,想要无感知对焦完全适配最好是监听加速度传感器
// camera.cancelAutoFocus();
// //这种设置方式存在屏幕闪烁一下问题,包括Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO
// parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
// }
//水平方向未旋转,所以宽就是竖直方向的高
// 选择合适的预览尺寸
Camera.Size size = getCameraSize(parameters.getSupportedPreviewSizes(), screenWidth,
screenHeight, 0.1f);
Log.d(TAG, "startCamera: 图片宽:" + size.width + " -- " + "图片高:" + size.height);
parameters.setPreviewSize(size.width, size.height); //获得摄像区域的大小
parameters.setPreviewFrameRate(3);//每秒3帧 每秒从摄像头里面获得3个画面
parameters.setPictureFormat(PixelFormat.JPEG);//设置照片输出的格式
parameters.set("jpeg-quality", 85);//设置照片质量
parameters.setPictureSize(size.width, size.height);//设置拍出来的屏幕大小
//
camera.setParameters(parameters);//把上面的设置 赋给摄像头
camera.startPreview();
} catch (IOException e) {
e.printStackTrace();
}
}
其中可能因为照片此处导致上面崩溃,也可能是别的,我遇到的就是
if (cameraId == 0) {
//小米、魅族手机存在对焦无效情况,需要针对设备适配,想要无感知对焦完全适配最好是监听加速度传感器
camera.cancelAutoFocus();
//这种设置方式存在屏幕闪烁一下问题,包括Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
}
这段设置导致的。具体问题具体分析。
感谢
感谢文中各位博主