Android:相机预览的屏幕方向/旋转

前端之家收集整理的这篇文章主要介绍了Android:相机预览的屏幕方向/旋转前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经创建了一个相机应用程序,我想让我的应用程序在所有4个可能的方向转换,并相应地更新相机预览.因为我已经使用我从以下复制的以下方法
Android – Camera preview is sideways
  1. public void updateCameraDisplay(int w,int h) {
  2. // set preview size and make any resize,rotate or
  3. // reformatting changes here
  4.  
  5. Log.i("CameraPreviews","Updating camera orientation with w=" + w
  6. + " and h=" + h);
  7. Parameters parameters = camera.getParameters();
  8. Display display = getActivity().getWindowManager()
  9. .getDefaultDisplay();
  10.  
  11. int rotation = getActivity().getResources().getConfiguration().orientation;
  12. Log.i("CameraPreviews","rotation is " + display.getRotation());
  13. if (display.getRotation() == Surface.ROTATION_0) {
  14.  
  15. parameters.setPreviewSize(h,w);
  16. camera.setDisplayOrientation(0);
  17. }
  18.  
  19. if (display.getRotation() == Surface.ROTATION_90) {
  20. parameters.setPreviewSize(w,h);
  21. camera.setDisplayOrientation(270);
  22. }
  23.  
  24. if (display.getRotation() == Surface.ROTATION_180) {
  25. parameters.setPreviewSize(h,w);
  26. camera.setDisplayOrientation(180);
  27. }
  28.  
  29. if (display.getRotation() == Surface.ROTATION_270) {
  30. parameters.setPreviewSize(w,h);
  31. camera.setDisplayOrientation(90);
  32. }
  33.  
  34. try {
  35. camera.setParameters(parameters);
  36. } catch (Exception e) {
  37. e.printStackTrace();
  38. }
  39. }
  40. }

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

锁定屏幕方向是没有问题的.
目标api = 11
非常感谢

编辑:
修改了我的代码

  1. public void updateCameraDisplay(int w,"screen rotation is " + rotation);
  2. Log.i("CameraPreviews","display rotation is " + display.getRotation());
  3. if (display.getRotation() == Surface.ROTATION_0) {
  4.  
  5. if (rotation == Configuration.ORIENTATION_LANDSCAPE) {
  6. parameters.setPreviewSize(h,w);
  7. camera.setDisplayOrientation(0);
  8. } else {
  9. parameters.setPreviewSize(h,w);
  10. camera.setDisplayOrientation(90);
  11. }
  12. }
  13.  
  14. else if (display.getRotation() == Surface.ROTATION_90) {
  15. if (rotation == Configuration.ORIENTATION_PORTRAIT) {
  16. parameters.setPreviewSize(w,h);
  17. camera.setDisplayOrientation(270);
  18. } else {
  19. parameters.setPreviewSize(w,h);
  20. //camera.setDisplayOrientation(0);
  21. }
  22. }
  23.  
  24. else if (display.getRotation() == Surface.ROTATION_180) {
  25. if (rotation == Configuration.ORIENTATION_LANDSCAPE) {
  26. parameters.setPreviewSize(h,w);
  27. camera.setDisplayOrientation(180);
  28. }else {
  29. parameters.setPreviewSize(h,w);
  30. camera.setDisplayOrientation(270);
  31. }
  32. }
  33.  
  34. else if (display.getRotation() == Surface.ROTATION_270) {
  35. if (rotation == Configuration.ORIENTATION_PORTRAIT) {
  36. parameters.setPreviewSize(w,h);
  37. camera.setDisplayOrientation(90);
  38. } else {
  39. parameters.setPreviewSize(w,h);
  40. camera.setDisplayOrientation(180);
  41. }
  42. }
  43.  
  44. try {
  45. camera.setParameters(parameters);
  46. } catch (Exception e) {
  47. e.printStackTrace();
  48. }
  49. }

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

解决方法

您需要考虑的因素是:设备的方向,屏幕和相机之间的程度,假设您正在使用后置摄像头,以及是否使活动能够感测到方向改变.

一个重要的是,制造商实施的Camera HAL代码是否符合Google的协议.

猜你在找的Android相关文章