我想根据Android中的设备方向设置相机方向,但似乎没有工作。我试图旋转Surface以及相机参数,但在纵向模式下的相机预览总是颠倒。我需要顺时针旋转90度才能正确。这里是我现在使用的代码只在横向模式下工作的代码。

SurfaceHolder.Callback surfaceCallback = new SurfaceHolder.Callback() {

@Override

public void surfaceDestroyed(SurfaceHolder holder) {

camera.stopPreview();

camera.release();

camera = null;

}

@Override

public void surfaceCreated(SurfaceHolder holder) {

initCamera();

}

private Size getOptimalPreviewSize(List sizes, int w, int h) {

final double ASPECT_TOLERANCE = 0.2;

double targetRatio = (double) w / h;

if (sizes == null)

return null;

Size optimalSize = null;

double minDiff = Double.MAX_VALUE;

int targetHeight = h;

// Try to find an size match aspect ratio and size

for (Size size : sizes) {

Log.d(TAG, "Checking size " + size.width + "w " + size.height

+ "h");

double ratio = (double) size.width / size.height;

if (Math.abs(ratio - targetRatio) > ASPECT_TOLERANCE)

continue;

if (Math.abs(size.height - targetHeight) < minDiff) {

optimalSize = size;

minDiff = Math.abs(size.height - targetHeight);

}

}

// Cannot find the one match the aspect ratio, ignore the

// requirement

if (optimalSize == null) {

minDiff = Double.MAX_VALUE;

for (Size size : sizes) {

if (Math.abs(size.height - targetHeight) < minDiff) {

optimalSize = size;

minDiff = Math.abs(size.height - targetHeight);

}

}

}

return optimalSize;

}

@Override

public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

Camera.Parameters parameters = camera.getParameters();

List sizes = parameters.getSupportedPreviewSizes();

Size optimalSize = getOptimalPreviewSize(sizes, width, height);

Log.d(TAG, "Surface size is " + width + "w " + height + "h");

Log.d(TAG, "Optimal size is " + optimalSize.width + "w " + optimalSize.height + "h");

parameters.setPreviewSize(optimalSize.width, optimalSize.height);

// parameters.setPreviewSize(width, height);

camera.setParameters(parameters);

camera.startPreview();

}

};

android相机固定方向,如何正确设置Android相机方向?相关推荐

  1. android 固定底部导航,如何设置android底部导航栏位置固定在android

    请帮我设置底部导航栏位置固定在底部, ,因为我在输入editText字段时遇到问题,底部导航栏向上移动并覆盖其他领域如何设置android底部导航栏位置固定在android 代码: xmlns:and ...

  2. 【Android布局】在程序中设置android:gravity 和 android:layout_Gravity属性

    在进行UI布局的时候,可能常常会用到 android:gravity  和 android:layout_Gravity 这两个属性. 关于这两个属性的差别,网上已经有许多人进行了说明,这边再简单说一 ...

  3. android app防止锁屏_设置Android系统永不锁屏永不休眠的方法

    在进行Android系统开发的时候,有些特定的情况需要设置系统永不锁屏,永不休眠.本篇文章给大家介绍Android 永不锁屏,开机不锁屏,删除设置中休眠时间选项,需要的朋友一起学习吧. Android ...

  4. android:ellipsize = marquee 跑马灯,TextView设置android:ellipsize=marquee不滚动

    今天发现android开发中有一个android:ellipsize=marquee,这个感觉像html中的marquee功能,可以实现滚动效果,于是测试了一下,结果不行呀,后来百度了一下解决办法,下 ...

  5. android gridview固定行数据,如何在Android gridview中为行设置不同的列

    我有类似的东西,我解决与新的RecyclerView. 我创建了一个片段与一个RecyclerView. xml上的RecyclerView: android:id="@+id/filter ...

  6. 正确设置Android Support Library

    2019独角兽企业重金招聘Python工程师标准>>> 为了支持低版本的Android,一般都要使用到Google提供的支持类库,但今天在设置支持类库的时候,总是遇到错误,弄了大半天 ...

  7. Android如何固定ip,手机怎么设置固定网关IP

    手机怎么设置固定网关IP 安卓手机设置固定IP地址方法1 首先找到手机的"设置"点击进入 然后找到"WLAN"点击进入 再找到准备连接的无线,点击无线名称进行自 ...

  8. android v7支持库使用,正确引用 Android Support v7 兼容支持库

    这个问题昨天下午折腾了我老人家一下午,手动进行了各种组合,最终得以解决.现将步骤严格记录于此,以作备忘. 一.环境及前提 1.Windows 7/Mac OS X 10.9: 2.Eclipse 4. ...

  9. ubuntu android 手机驱动,ubuntu 下正确安装android手机驱动

    1. 查看手机ID号. charlesxue@THSHIBA:~/setup/cocos2d-x/cocos2d-x-2.1.4/projects/simpleGame/proj.android/bi ...

最新文章

  1. 技术人生:与其鸟宿檐下,不如击翅风雨
  2. Xcode7 真机免证书调试Cocos2D游戏
  3. redis cluster 集群 安装 配置 详解
  4. 汇总内表数据:at end of方法和collect方法
  5. HTML中a标签/超链接标签的下划线怎么去掉
  6. java 构造方法和析构方法_PHP面向对象程序设计之构造方法和析构方法详解
  7. 【开源】.Net Api开放接口文档网站
  8. JavaScript --- 取得鼠标事件的坐标
  9. insert时出现主键冲突的处理方法【转载】
  10. FPGA 串口中断_一个严谨的STM32串口DMA发送amp;接收(1.5Mbps波特率)机制
  11. IOS开发笔记 - 先有鸡,还是先有蛋?相互引用的奇遇!
  12. 太牛逼了!自从项目中用了Disruptor之后,性能提升了2.5倍
  13. [GRE] 填空机经 Section61-65
  14. 搭建 MongoDB 服务器,MongoDB 基本使用,数据导入导出
  15. .Net语言的APP开发平台Smobiler3.2版本将于八月中旬发布!——3.2版本预告(二)
  16. 转:企业数字化的本质,其实就这3条
  17. windows10如何设置电脑的固定IP地址
  18. 企业运维之服务管理 -- supervisord
  19. java在win8闪退_win8.1应用闪退
  20. telegraf介绍

热门文章

  1. C++数字三角形问题(动态规划)
  2. 新式 AIMD 拥塞控制
  3. VR是TAA的终结者吗?
  4. JAVA基础-Object类(简单说明),String类,.equals()方法
  5. 计算cosx的近似值
  6. c语言scanf和printf区别,printf和scanf的区别是什么
  7. springboot和springMVC
  8. 简单入侵ftp服务器
  9. Phonetic symbol 清辅音 -- p
  10. 悉尼大学理学院计算机科学,悉尼大学理学院本科申请