解决方案 »
- android开发如何用file读出sdcard中含图片的文件夹,并将文件夹显示到listview上????
- 安装ANDROID的SDK时,升级失败
- Android—为什么从麦克风中采集的数据具有很大的噪音?
- 拉我一把:帮忙解释一段android中java代码用法
- 谁能帮忙解释下 ACTION_MOVE 里的一些问题
- 彩信的问题
- Android基础之Activity launchMode
- 关于http连接超时问题
- 安装安卓sdk的时候下载安装包不全
- 求助。照搬《第一行代码-Android》的HttpURLConnection方法屏幕无显示?
- 关于安卓的重写
- android对socket的io操作也必须要在子线程中进行吗?
public static int getDisplayOrientation(int degrees, int cameraId) {
// See android.hardware.Camera.setDisplayOrientation for
// documentation.
Camera.CameraInfo info = new Camera.CameraInfo();
Camera.getCameraInfo(cameraId, info);
int result;
if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
result = (info.orientation + degrees) % 360;
result = (360 - result) % 360; // compensate the mirror
} else { // back-facing
result = (info.orientation - degrees + 360) % 360;
}
return result;
}楼主用上面代码获取Camera Preview的方向,然后调用setDisplayOrientation设置
上述方法的degree默认是0,一般手机不用改,有些手机硬件确实存在方向不对的bug,需要自行调试后选择对应的degree
cameraId可以通过下面方法获取,其中-1表示不支持任何摄像头
public static int getCameraId(boolean front) {
int num = Camera.getNumberOfCameras();
for (int i = 0; i < num; i++) {
CameraInfo info = new CameraInfo();
Camera.getCameraInfo(i, info);
if (info.facing == CameraInfo.CAMERA_FACING_FRONT && front) {
return i;
}
if (info.facing == CameraInfo.CAMERA_FACING_BACK && !front) {
return i;
}
}
return -1;
}