特别针对三星盖世相机:EK-GC100  EK-GC110

MainActivity.java

package com.example.mytestcamera;

import java.io.IOException;

import android.app.Activity;

import android.hardware.Camera;

import android.hardware.Camera.Parameters;

import android.os.Bundle;

import android.util.Log;

import android.view.KeyEvent;

import android.view.SurfaceHolder;

import android.view.SurfaceView;

import android.view.View;

import android.widget.Button;

public class MainActivity extends Activity implements SurfaceHolder.Callback{

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

// TODO Auto-generated method stub

if (isPreview) {

switch (keyCode) {

case KeyEvent.KEYCODE_ZOOM_IN:

Log.i("ZOOM", "放大");

setZoom1();

break;

case KeyEvent.KEYCODE_ZOOM_OUT:

Log.i("ZOOM", "缩小");

setZoom2();

break;

default:

break;

}

}

return super.onKeyDown(keyCode, event);

}

public Camera myCamera;

SurfaceView mySurfaceView;

SurfaceHolder mySurfaceHolder;

Button myButton1;

Button myButton2;

boolean isPreview = false;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

setContentView(R.layout.activity_main);

mySurfaceView = (SurfaceView)findViewById(R.id.mySurfaceView);

myButton1 = (Button)findViewById(R.id.myButton);

myButton2 = (Button)findViewById(R.id.myButton2);

mySurfaceHolder = mySurfaceView.getHolder();

mySurfaceHolder.addCallback(this);

mySurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

myButton1.setOnClickListener(new Button.OnClickListener(){

@Override

public void onClick(View v) {

initCamera();

}

});

myButton2.setOnClickListener(new Button.OnClickListener(){

@Override

public void onClick(View v) {

if(myCamera!=null&&isPreview){

myCamera.stopPreview();

myCamera.release();

myCamera = null;

isPreview = false;

}

}

});

}

public void initCamera() {

// TODO Auto-generated method stub

Log.i("ZOOM", "initCamera");

if(!isPreview){

myCamera = Camera.open();

}

if(myCamera !=null && !isPreview){

try{

myCamera.setPreviewDisplay(mySurfaceHolder);

myCamera.startPreview();

}

catch(IOException e){

e.printStackTrace();

}

isPreview = true;

}

}

@Override

public void surfaceChanged(SurfaceHolder holder, int format, int width,

int height) {

// TODO Auto-generated method stub

}

@Override

public void surfaceCreated(SurfaceHolder holder) {

// TODO Auto-generated method stub

}

@Override

public void surfaceDestroyed(SurfaceHolder holder) {

// TODO Auto-generated method stub

}

public boolean isSupportZoom()

{

boolean isSuppport = false;

if (myCamera.getParameters().isZoomSupported())//myCamera.getParameters().isSmoothZoomSupported())

{

isSuppport = true;

}

return isSuppport;

}

public void setZoom1()

{

if (isSupportZoom())

{

try

{

Parameters params = myCamera.getParameters();

final int MAX = params.getMaxZoom();

int zoomValue = params.getZoom();

Log.i("ZOOM", "-----------------MAX:"+MAX+" params : "+zoomValue);

if (zoomValue <= 14) {

zoomValue += 1;

params.setZoom(zoomValue);

myCamera.setParameters(params);

}

Log.i("ZOOM", "Is support Zoom " + params.isZoomSupported());

}

catch (Exception e)

{

Log.i("ZOOM", "--------exception zoom");

e.printStackTrace();

}

}

else

{

Log.i("ZOOM", "--------the phone not support zoom");

}

}

public void setZoom2()

{

if (isSupportZoom())

{

try

{

Parameters params = myCamera.getParameters();

final int MAX = params.getMaxZoom();

int zoomValue = params.getZoom();

Log.i("ZOOM", "-----------------MAX:"+MAX+" params : "+zoomValue);

if (zoomValue >= 1) {

zoomValue -= 1;

params.setZoom(zoomValue);

myCamera.setParameters(params);

}

Log.i("ZOOM", "Is support Zoom " + params.isZoomSupported());

}

catch (Exception e)

{

Log.i("ZOOM", "--------exception zoom");

e.printStackTrace();

}

}

else

{

Log.i("ZOOM", "--------the phone not support zoom");

}

}

}

activity_main.xml

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:id="@+id/mySurfaceView"

android:layout_width="match_parent"

android:layout_height="418dp" >

android:layout_width="fill_parent"

android:layout_height="wrap_content"

>

android:id="@+id/myButton"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="打开"/>

android:id="@+id/myButton2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="关闭" />

注意加上权限:

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

// TODO Auto-generated method stub

switch (keyCode) {

case KeyEvent.KEYCODE_ZOOM_IN:

Log.i("ZOOM", "放大");

setZoom(1);

break;

case KeyEvent.KEYCODE_ZOOM_OUT:

Log.i("ZOOM", "缩小");

setZoom(2);

break;

default:

break;

}

return super.onKeyDown(keyCode, event);

}

public void setZoom(int zoomKey){

//判断是否支持变焦

if (mCamera.getParameters().isZoomSupported()) {

try {

Parameters parameters = mCamera.getParameters();

int zoomValue = parameters.getZoom();

switch (zoomKey) {

case 1:

if (zoomValue <= 14)

zoomValue += 1;

break;

case 2:

if (zoomValue >= 1)

zoomValue -= 1;

break;

default:

break;

}

parameters.setZoom(zoomKey);

mCamera.setParameters(parameters);

} catch (Exception e) {

Log.i("ZOOM", "exception zoom");

e.printStackTrace();

}

}else {

Log.i("ZOOM", "NOT support zoom");

}

}

android变焦,Android开发:控制镜头变焦相关推荐

  1. Android多媒体应用开发-控制摄像头拍照

    现在的手机的功能可谓是五花八门,手机照相功能就是特别突出的一点,现在的手机照相机甚至成了专业数码照相机,可以拍摄出清晰的照片和录制高分辨率的视频.Android操作系统呢,提供了相应的功能来控制拍照: ...

  2. Android camera 相关术语(四) 之  变焦和对焦的区别VCM 闭环和开环在硬件上有什么区别

    Android camera 相关术语(四) 之  变焦和对焦的区别VCM 闭环和开环在硬件上有什么区别 VCM 闭环马达(即close loop)与开环马达(即open loop)一般有两个硬件上的 ...

  3. Android短视频开发都需要什么技术?

    今天我们来讲点干货,估计来看这篇帖子的人都知道短视频APP有多火,也都知道安卓系统在手机系统中占的市场份额有多大,那我就不多嘴巴拉巴拉一些行业背景了,以下我着重讲一讲Android端的短视频开发技术. ...

  4. android短视频技术,Android短视频开发都需要什么技术?

    今天我们来讲点干货,估计来看这篇帖子的人都知道短视频APP有多火,也都知道安卓系统在手机系统中占的市场份额有多大,那我就不多嘴巴拉巴拉一些行业背景了,以下我着重讲一讲Android端的短视频开发技术. ...

  5. Android直播开发之旅(9):OkCamera,Android 相机应用开发通用库

    OkCamera,Android 相机应用开发通用库 转载请声明出处:http://blog.csdn.net/andrexpert/article/details/79302576 明天就可以回家过 ...

  6. 蓝牙模块hc05原理图_使用步进电机和Android App的蓝牙控制迷你升降机

    背景知识视频教程 使用App Inventor创建Android应用​viadean.com Arduino微控制器:学习Arduino制作项目 - 国外课栈​viadean.com Arduino ...

  7. Android移动APP开发笔记——最新版Cordova 5.3.1(PhoneGap)搭建开发环境

    引言 简单介绍一下Cordova的来历,Cordova的前身叫PhoneGap,自被Adobe收购后交由Apache管理,并将其核心功能开源改名为Cordova.它能让你使用HTML5轻松调用本地AP ...

  8. Android 音视频开发学习思路

    Android 音视频开发这块目前的确没有比较系统的教程或者书籍,网上的博客文章也都是比较零散的.只能通过一点点的学习和积累把这块的知识串联积累起来. 初级入门篇: Android 音视频开发(一) ...

  9. Android 百度地图开发(一)--- 申请API Key和在项目中显示百度地图

    2019独角兽企业重金招聘Python工程师标准>>> 最近自己想研究下地图,本来想研究google Map,但是申请API key比较坑爹,于是从百度地图入手,其实他们的用法都差不 ...

最新文章

  1. HDU-2044-一只小蜜蜂
  2. Unknown lifecycle phase mvn
  3. 项目管理理论与实践(4)——UML应用(上)
  4. shell逻辑运算符优先级_ios从入门到放弃之C基础巩固运算符
  5. swift菜鸟入门视频教程-09-类和结构体
  6. Maven本地库添加Oracle JDBC驱动
  7. python导入opencv解决no module named cv2问题
  8. Tensorflow 实战 Google 深度学习框架(第2版)---- 10.2.2节 P272 代码
  9. 报错ValueError: check_hostname requires server_hostname
  10. 回归预测 | MATLAB实现GLM广义线性模型数据回归预测
  11. 怎么把知网的外文文献翻译成中文_中国知网上的汉语文献的英文版在哪里找
  12. matlab 怎么画时域图,matlab画e时域波形图
  13. Leetcode 1770. Maximum Score from Performing Multiplication Operations [Python]
  14. The size of tensor a (4) must match the size of tensor b (3) at non-singleton dimension 0 维度不匹配
  15. 关于拼板邮票孔制作规范
  16. JMF API 中文指导
  17. urp SpotLight 衰减方式扩展
  18. 论文阅读笔记:Improving Attacks on Speck32 / 64 using Deep Learning
  19. 云电竞的服务器,雷风科技电竞云桌面解决方案
  20. 小学五年级趣味计算机课程,新媒体联盟 | 五年级小学段课程记——项目研究乐游学 趣味活动展风采...

热门文章

  1. 纺织厂生产用电设备工作时长开关机状态监控项目案例
  2. 第五章:OB Server的存储引擎
  3. at91sam9260ek开发板linux移植文档,AT91SAM9260EK开发板 Linux 移植 移植 文档
  4. powerbuilder freeform只显示一条数据的问题
  5. C++作业-温度转换
  6. H5页面初次加载swiper导航切换按钮可以点击,刷新后就失效不可点击问题@令狐张豪
  7. w7无线网络密码破解
  8. import datetime
  9. VBA 设置单元格格式
  10. 进化树的几种分类详解