Android 低版本sdk中没有getSupportedPreviewSizes和getSupportedPictureSizes函数怎么办?
在做camera和SurfaceView做摄像头程序时,需要获取camera支持的相片大小,在低版本sdk中没有getSupportedPictureSizes函数,怎么办呢,请参阅下面的关键代码:
1、定义Size类
public class Size {
/***
* Sets the dimensions for pictures.
*
* @param w the photo width (pixels)
* @param h the photo height (pixels)
*/
public Size(int w, int h) {
width = w;
height = h;
}
/***
* Compares {@code obj} to this size.
*
* @param obj the object to compare this size with.
* @return {@code true} if the width and height of {@code obj} is the
* same as those of this size. {@code false} otherwise.
*/
@Override
public boolean equals(Object obj) {
if (!(obj instanceof Size)) {
return false;
}
Size s = (Size) obj;
return width == s.width && height == s.height;
}
@Override
public int hashCode() {
return width * + height;
}
/*** width of the picture */
public int width;
/*** height of the picture */
public int height;
}
2、定义CameraHelper类
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import android.hardware.Camera;
public class CameraHelper {
private static final String KEY_PREVIEW_SIZE = "preview-size";
private static final String KEY_PICTURE_SIZE = "picture-size";
private static final String SUPPORTED_VALUES_SUFFIX = "-values";
private Camera.Parameters mParms; public CameraHelper(Camera.Parameters parm) {
this.mParms = parm;
} public List<Size> GetSupportedPreviewSizes() {
String str = mParms.get(KEY_PREVIEW_SIZE + SUPPORTED_VALUES_SUFFIX);
return splitSize(str);
} public List<Size> GetSupportedPictureSizes() {
String str = mParms.get(KEY_PICTURE_SIZE + SUPPORTED_VALUES_SUFFIX);
return splitSize(str);
} private ArrayList<Size> splitSize(String str) {
if (str == null)
return null;
StringTokenizer tokenizer = new StringTokenizer(str, ",");
ArrayList<Size> sizeList = new ArrayList<Size>();
while (tokenizer.hasMoreElements()) {
Size size = strToSize(tokenizer.nextToken());
if (size != null)
sizeList.add(size);
}
if (sizeList.size() == )
return null;
return sizeList;
} private Size strToSize(String str) {
if (str == null)
return null;
int pos = str.indexOf('x');
if (pos != -) {
String width = str.substring(, pos);
String height = str.substring(pos + );
return new Size(Integer.parseInt(width), Integer.parseInt(height));
}
return null;
} }
其实,主要是通过Camera.Parameters的get方法,然后再解析获取的字符串来代替那些不存在的api。
Android 低版本sdk中没有getSupportedPreviewSizes和getSupportedPictureSizes函数怎么办?的更多相关文章
- 在高版本SDK中打开现存低版本SDK工程
直接打开低版本SDK工程会出现错误提示:“Unable to resolve target 'android-xx” 解决方法: 1.将project.properties文件中的“target=an ...
- Notification在不同版本SDK中的使用
今天总结了一下Notification的使用,发现这个控件在版本上有点扯淡.API11和API16两个分水岭,导致菜鸟在学习的时候比较吃力,受影响的外界因素是多样的,其中比较重要的就是你测试的andr ...
- matchesSelector及低版本IE中对该方法的实现
matchesSelector用来匹配dom元素是否匹配某css selector.它为一些高级方法的实现提供了基础支持,比如事件代理,parent, closest等. W3C在2006年就提出了该 ...
- popstate事件在低版本webkit中的调用
popstate是H5的history系列中的事件,但是在低版本的webkit中会自动触发.H5中的history api是不会使页面发生跳转的,只是操作地址栏和响应的state属性而已,而且是手动操 ...
- vue android低版本 白屏问题 你是不是用了Object.assign ??
问题描述 在部分比较低版本的手机中,发现apk安装后白屏,但是大部分手机都能安装. 本人在使用android4.4时候,也是安装后打开白屏. 原因: 代码写法不兼容 this.user = Objec ...
- js动态加载activeX控件在IE11与低版本IE中的差异
由于IE11更加遵循W3C规范,所以IE11与低版本IE在加载activeX时有差别. 1.IE11中动态加载activeX的顺序 var objectTag = document.createEle ...
- 高版本 MySQL 导出的脚本到低版本 MySQL 中执行时报错
导入 MySQL 脚本时报错:[ERR] 1273 - Unknown collation: 'utf8mb4_0900_ai_ci'低版本还不支持 utfmb4 这个字符集 解决方法:将 sql 脚 ...
- 怎样在xcode5中使用低版本sdk,解决兼容ios7ui问题
问题 令人头疼的是,xcode每次升级都会使用最新版本的sdk,而且只有最新版本的sdk,对之前老版本的sdk都没有默认安装,这搞的最近我很头疼, 最近我升级到Xcode5.0版本,编译后运行后,在i ...
- android 6.0 SDK中删除HttpClient的相关类的解决方法
一.出现的情况 在eclipse或 android studio开发, 设置android SDK的编译版本为23时,且使用了httpClient相关类的库项目:如android-async-http ...
随机推荐
- 2019 CCPC-Wannafly Winter Camp Day5(Div2, onsite)
solve 5/11 补题:7/11 A Cactus Draw Code:zz Thinking :zz 题意:要在n*n的网格内画上一棵节点数为n树,使得没有边相交. 很好想的构造题,因为网格有n ...
- proxyTable设置跨域
如何设置跨域 1.在config--index.js 中配置 proxyTable: { '/api': { target: 'http://www.xxx.com', //目标接口域名 change ...
- 1、The Fctory Pattern(工厂模式:解决对象创建问题)
The Fctory Pattern 处理对象创建,客户端可以申请一个对象而不用知道对象被那个class创建.可以方便地解耦对象的使用和创建,有两种实现,工厂方法和抽象工厂. Method(工厂方法 ...
- cuda9.0 中不存在libnppi.so
编译一个caffe版本,报错找不到 -lnppi 发现使用打是cuda9.0, 但是cuda9.0 中不存在libnppi.so. 只好换成cuda8.0.
- (转)Linux strace命令
原文:https://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316692.html https://linux.cn/article-6444-1 ...
- webpack查缺补漏
webpack是模块化打包工具,通过webpack,可以使得我们更加方便地组织代码.压缩.转译等等. 但是学习webpack也需要一定的成本,这里记录使用webpack许久以来一些模糊的知识点,方便以 ...
- MySQL数据表的修改
数据表的修改包括列的增加.列的删除.约束的添加.约束的删除等. 添加单列 ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [F ...
- 在ubuntu10.10下安装Google谷歌拼音输入法
安装步骤如下:1.下载文件:sudo wget http://malu.googlecode.com/files/scim-googlepinyin.tar.gz(经测试,这个链接已经失效了,幸好有前 ...
- 【c++】访问控制
1. 类内的访问控制 在基类中,public和private具有普通的含义:用户(即基类的对象)可以访问public成员(包括函数.数据),而不能访问private成员.private只能被基类的成 ...
- 【c++】重载操作符
目录 输入和输出操作符 算术操作符和关系操作符 下标操作符 自加.自减操作符 成员访问操作符 1 输入和输出操作符 1.1 输出操作符 1.1.1 示例 #include <iostream& ...