Camera.Parameters parameters = myCamera.getParameters();
parameters.setFocusMode("macro"); <---这里设置
myCamera.setParameters(parameters);  /**
         * Auto-focus mode.
         */
        public static final String FOCUS_MODE_AUTO = "auto";        /**
         * Focus is set at infinity. Applications should not call
         * {@link #autoFocus(AutoFocusCallback)} in this mode.
         */
        public static final String FOCUS_MODE_INFINITY = "infinity";
        public static final String FOCUS_MODE_MACRO = "macro";

解决方案 »

  1.   

    1楼你好,parameters.setFocusMode("macro"); <---这里设置-----------"macro"这个值是什么?下面是我的源码,你帮我看看是在什么地方实现远近焦距调节,十分感谢!
    package com.gsta.test;import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;import android.app.Activity;
    import android.content.Context;
    import android.content.Intent;
    import android.graphics.PixelFormat;
    import android.hardware.Camera;
    import android.hardware.Camera.OnZoomChangeListener;
    import android.hardware.Camera.Parameters;
    import android.hardware.Camera.PictureCallback;
    import android.hardware.Camera.ShutterCallback;
    import android.media.AudioManager;
    import android.media.ToneGenerator;
    import android.net.Uri;
    import android.os.Bundle;
    import android.os.Environment;
    import android.os.StatFs;
    import android.view.KeyEvent;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.SurfaceHolder;
    import android.view.SurfaceView;
    import android.view.Window;public class CameraActivity extends Activity { private CameraPreview preview;
    private Camera camera;
    private ToneGenerator tone;
    private static final int OPTION_SNAPSHOT = 0; @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    preview = new CameraPreview(this);
    setContentView(preview);
    } @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub if (camera != null && event.getRepeatCount() == 0) {
    switch (keyCode) {
    case KeyEvent.KEYCODE_CAMERA:
    // camera.takePicture(shutterCallback, null, jpegCallback);
    camera.takePicture(shutterCallback, null, null);
    break; case KeyEvent.KEYCODE_VOLUME_DOWN:
    System.out.println("KeyEvent.KEYCODE_VOLUME_DOWN");
    break; case KeyEvent.KEYCODE_VOLUME_UP:
    System.out.println("KeyEvent.KEYCODE_VOLUME_UP");
    break; }
    } return super.onKeyDown(keyCode, event);
    } // @Override
    // public boolean onOptionsItemSelected(MenuItem item) {
    // int itemId = item.getItemId();
    // switch (itemId) {
    // case OPTION_SNAPSHOT:
    // // 拍摄照片
    // // camera.takePicture(shutterCallback, null, jpegCallback);
    // camera.takePicture(shutterCallback, null, null);
    // System.out.println("----->>>>>>>>>>>menu");
    // break;
    // }
    // return true;
    // } // 返回照片的JPEG格式的数据
    private PictureCallback jpegCallback = new PictureCallback() { public void onPictureTaken(byte[] data, Camera camera) {
    System.out.println("----->>>>>>>>>>>jpegCallback");
    Parameters ps = camera.getParameters();
    if (ps.getPictureFormat() == PixelFormat.JPEG) {
    // 存储拍照获得的图片
    String path = save(data);
    System.out.println("----->>>>>>>>>>>save()");
    // 将图片交给Image程序处理
    Uri uri = Uri.fromFile(new File(path));
    Intent intent = new Intent();
    intent.setAction("android.intent.action.VIEW");
    intent.setDataAndType(uri, "image/jpeg");
    startActivity(intent);
    System.out.println("----->>>>>>>>>>>startActivity()");
    }
    }
    };

    private OnZoomChangeListener onZoomChangeListener=new OnZoomChangeListener(){ @Override
    public void onZoomChange(int zoomValue, boolean stopped, Camera camera) {
    // TODO Auto-generated method stub

    System.out.println("OnZoomChangeListener");

    }

    };




    // 快门按下的时候onShutter()被回调
    private ShutterCallback shutterCallback = new ShutterCallback() {
    public void onShutter() {
    if (tone == null)
    // 发出提示用户的声音
    tone = new ToneGenerator(AudioManager.STREAM_MUSIC,
    ToneGenerator.MAX_VOLUME);
    tone.startTone(ToneGenerator.TONE_PROP_BEEP2);
    }
    }; private String save(byte[] data) { System.out.println("----->>>>>>>>>>>save2()");
    String path = "/sdcard/" + System.currentTimeMillis() + ".jpg";
    System.out.println("----->>>>>>>>>>>" + path);
    try {
    // 判断是否装有SD卡
    if (Environment.getExternalStorageState().equals(
    Environment.MEDIA_MOUNTED)) {
    // 判断SD卡上是否有足够的空间
    String storage = Environment.getExternalStorageDirectory()
    .toString();
    StatFs fs = new StatFs(storage);
    long available = fs.getAvailableBlocks() * fs.getBlockSize();
    if (available < data.length) {
    // 空间不足直接返回空
    return null;
    }
    File file = new File(path);
    if (!file.exists())
    // 创建文件
    file.createNewFile();
    FileOutputStream fos = new FileOutputStream(file); fos.write(data);
    System.out.println("----->>>>>>>>>>>write()");
    fos.close();
    }
    } catch (Exception e) {
    e.printStackTrace();
    return null;
    }
    return path;
    } // @Override
    // public boolean onCreateOptionsMenu(Menu menu) {
    // menu.add(0, OPTION_SNAPSHOT, 0, R.string.snapshot);
    // return super.onCreateOptionsMenu(menu);
    // } private class CameraPreview extends SurfaceView implements
    SurfaceHolder.Callback {
    SurfaceHolder mHolder; public CameraPreview(Context context) {
    super(context);
    mHolder = getHolder();
    mHolder.addCallback(this);
    mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    } // Sureface创建的时候,此方法被调用
    public void surfaceCreated(SurfaceHolder holder) {
    // 打开摄像头,获得Camera对象
    camera = Camera.open();
    try {
    // 设置显示
    camera.setPreviewDisplay(holder);
    } catch (IOException exception) {
    camera.release();
    camera = null;
    }
    } // Surface销毁的时候,此方法被调用
    public void surfaceDestroyed(SurfaceHolder holder) {
    camera.stopPreview();
    // 释放Camera
    camera.release();
    camera = null;
    } public void surfaceChanged(SurfaceHolder holder, int format, int w,
    int h) {
    // 已经获得Surface的width和height,设置Camera的参数
    Camera.Parameters parameters = camera.getParameters();
    parameters.setPreviewSize(w, h);
    // parameters.setFocusMode("macro");
    System.out.println(">>>>>>>>>>>>>>>>>>>>>"
    + parameters.getPictureSize()); camera.setParameters(parameters);
    // 开始预览
    camera.startPreview();
    }
    }}
      

  2.   

    rivate OnZoomChangeListener onZoomChangeListener=new OnZoomChangeListener(){@Override
    public void onZoomChange(int zoomValue, boolean stopped, Camera camera) {
    // TODO Auto-generated method stubSystem.out.println("OnZoomChangeListener");}};这一段是的,可惜没有实现。
      

  3.   

    找到了。分享一下!
    mZoomBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {  
                  
                public void onStopTrackingTouch(SeekBar seekBar) {  
                    // TODO Auto-generated method stub  
                      
                }  
                  
                public void onStartTrackingTouch(SeekBar seekBar) {  
                    // TODO Auto-generated method stub  
                      
                }  
                  
                public void onProgressChanged(SeekBar seekBar, int progress,  
                        boolean fromUser) {  
                    // TODO Auto-generated method stub  
                    Parameters p = myCamera.getParameters();  
                    p.setZoom(progress);  
                    myCamera.setParameters(p);  
                }  
            });