gpt4 book ai didi

android - 如何实现 Android 相机在任何屏幕方向拍照?

转载 作者:行者123 更新时间:2023-11-29 22:27:37 27 4
gpt4 key购买 nike

我希望相机的方向不会随着手机旋转而改变,从而允许相机在任何方向拍摄直立照片。目前,除了一个方向外,图片在所有方向上的旋转都不正确。在运行 2.2 的 HTC Incredible 上测试:

  • 肖像模式将图像顺时针旋转 90 度。
  • 设备从纵向逆时针旋转会产生旋转 180 度的图像。
  • 从纵向顺时针旋转设备会生成方向正确的图像。

这里是相机实现的相关代码:

    @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.camera);

// Set up camera's SurfaceView and SurfaceHolder
surfaceView = (SurfaceView) findViewById(R.id.camera_surface);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

}

public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
Camera.Parameters p = camera.getParameters();
p.setPreviewSize(width,height);
}

public void surfaceCreated(SurfaceHolder holder) {
camera = Camera.open();
try {
camera.setPreviewDisplay(surfaceHolder);
} catch (IOException e) {
camera.release();
}
camera.startPreview();
}

由于我希望应用程序与等于或高于 4 的任何 API 级别兼容以最大限度地扩大用户群,所以我希望答案不使用任何特定于更高 API 级别的内容。谢谢!

最佳答案

如果您不希望预览也旋转,请在 list 文件中将方向设置为横向或纵向模式。

要获得正确旋转的图像,您需要在相机参数上调用 setRotation()(API 级别 5),然后在调用 takePicture API 之前设置该参数。您还需要使用 orientationEventListener

示例代码 here

关于android - 如何实现 Android 相机在任何屏幕方向拍照?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5388318/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com