android+相机画面旋转,Android:相机预览的屏幕方向/旋转

我已经创建了一个相机应用程序,我想让我的应用程序在所有4个可能的方向转换,并相应地更新相机预览.因为我已经使用我从以下复制的以下方法:

Android – Camera preview is sideways

public void updateCameraDisplay(int w, int h) {

// set preview size and make any resize, rotate or

// reformatting changes here

Log.i("CameraPreviews", "Updating camera orientation with w=" + w

+ " and h=" + h);

Parameters parameters = camera.getParameters();

Display display = getActivity().getWindowManager()

.getDefaultDisplay();

int rotation = getActivity().getResources().getConfiguration().orientation;

Log.i("CameraPreviews", "rotation is " + display.getRotation());

if (display.getRotation() == Surface.ROTATION_0) {

parameters.setPreviewSize(h, w);

camera.setDisplayOrientation(0);

}

if (display.getRotation() == Surface.ROTATION_90) {

parameters.setPreviewSize(w, h);

camera.setDisplayOrientation(270);

}

if (display.getRotation() == Surface.ROTATION_180) {

parameters.setPreviewSize(h, w);

camera.setDisplayOrientation(180);

}

if (display.getRotation() == Surface.ROTATION_270) {

parameters.setPreviewSize(w, h);

camera.setDisplayOrientation(90);

}

try {

camera.setParameters(parameters);

} catch (Exception e) {

e.printStackTrace();

}

}

}

我已经调整了价值观,在三星Galaxy Tab2上进行测试,最终得到正确的方向,一切正常.当我尝试在htc一个手机它根本不工作!!!!!所有的方向是完全错误的!所以我得出结论,thre必须是2种类型的设备(或更多…请不要!),因为旋转表示屏幕已经从其“默认”位置旋转了多少度,一些设备有一个默认位置和其他另一个.我如何知道这个默认轮播,并在我的代码中相应地进行操作?

EJ:

defaultOrientation =一些代码

if(defaultOrientation == 0)…

别….

锁定屏幕方向是没有问题的.

目标api = 11

非常感谢

编辑:

我修改了我的代码:

public void updateCameraDisplay(int w, int h) {

// set preview size and make any resize, rotate or

// reformatting changes here

Log.i("CameraPreviews", "Updating camera orientation with w=" + w

+ " and h=" + h);

Parameters parameters = camera.getParameters();

Display display = getActivity().getWindowManager()

.getDefaultDisplay();

int rotation = getActivity().getResources().getConfiguration().orientation;

Log.i("CameraPreviews", "screen rotation is " + rotation);

Log.i("CameraPreviews", "display rotation is " + display.getRotation());

if (display.getRotation() == Surface.ROTATION_0) {

if (rotation == Configuration.ORIENTATION_LANDSCAPE) {

parameters.setPreviewSize(h, w);

camera.setDisplayOrientation(0);

} else {

parameters.setPreviewSize(h, w);

camera.setDisplayOrientation(90);

}

}

else if (display.getRotation() == Surface.ROTATION_90) {

if (rotation == Configuration.ORIENTATION_PORTRAIT) {

parameters.setPreviewSize(w, h);

camera.setDisplayOrientation(270);

} else {

parameters.setPreviewSize(w, h);

//camera.setDisplayOrientation(0);

}

}

else if (display.getRotation() == Surface.ROTATION_180) {

if (rotation == Configuration.ORIENTATION_LANDSCAPE) {

parameters.setPreviewSize(h, w);

camera.setDisplayOrientation(180);

}else {

parameters.setPreviewSize(h, w);

camera.setDisplayOrientation(270);

}

}

else if (display.getRotation() == Surface.ROTATION_270) {

if (rotation == Configuration.ORIENTATION_PORTRAIT) {

parameters.setPreviewSize(w, h);

camera.setDisplayOrientation(90);

} else {

parameters.setPreviewSize(w, h);

camera.setDisplayOrientation(180);

}

}

try {

camera.setParameters(parameters);

} catch (Exception e) {

e.printStackTrace();

}

}

只要我们不以纵向模式旋转手机,就可以在htc一个和三星Galaxy Tab上更好地工作

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值