特别针对三星盖世相机: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{@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {// TODO Auto-generated method stubif (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;@Overridepublic 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(){@Overridepublic void onClick(View v) {initCamera();}}); myButton2.setOnClickListener(new Button.OnClickListener(){@Overridepublic void onClick(View v) {if(myCamera!=null&&isPreview){myCamera.stopPreview();myCamera.release();myCamera = null;isPreview = false;}}});}public void initCamera() {// TODO Auto-generated method stubLog.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;}}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {// TODO Auto-generated method stub}@Overridepublic void surfaceCreated(SurfaceHolder holder) {// TODO Auto-generated method stub}@Overridepublic 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
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><SurfaceViewandroid:id="@+id/mySurfaceView"android:layout_width="match_parent"android:layout_height="418dp" ></SurfaceView><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="wrap_content">
<Buttonandroid:id="@+id/myButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="打开"/><Buttonandroid:id="@+id/myButton2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="关闭" /></LinearLayout>
</LinearLayout>
注意加上权限:
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" />
工程文件下载:http://download.csdn.net/detail/charein/6321071
@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {// TODO Auto-generated method stubswitch (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");}}