怎么样调用android系统的照相机 ?  谁给个能运行的程序啊???

解决方案 »

  1.   

    给你个代码看看吧:
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import android.app.Activity;
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.Canvas;
    import android.graphics.PixelFormat;
    import android.hardware.Camera;
    import android.hardware.Camera.PictureCallback;
    import android.os.Bundle;
    import android.view.KeyEvent;
    import android.view.SurfaceHolder;
    import android.view.SurfaceView;
    import android.view.Window;public class Activity01 extends Activity
    {
    private Preview mPreview;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE); // Create our Preview view and set it as the content of our activity.
    mPreview = new Preview(this);
    setContentView(mPreview);
    }
    public boolean onKeyUp(int keyCode, KeyEvent event)
    {
    switch (keyCode)
    {
    case KeyEvent.KEYCODE_DPAD_CENTER:
    mPreview.takePicture();
    break;
    }
    return true;
    }
    }/* Preview-显示Preview */
    class Preview extends SurfaceView implements SurfaceHolder.Callback 
    {
        SurfaceHolder mHolder;
        Camera mCamera;
        Bitmap CameraBitmap;
        
        Preview(Context context) 
        {
            super(context);
            mHolder = getHolder();
            mHolder.addCallback(this);
            mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
        }    public void surfaceCreated(SurfaceHolder holder) 
        {
         /* 启动Camera */
            mCamera = Camera.open();
            try 
            {
               mCamera.setPreviewDisplay(holder);
            } 
            catch (IOException exception) 
            {
             /* 释放mCamera */
                mCamera.release();
                mCamera = null;
                // TODO: add more exception handling logic here
            }
        }    public void surfaceDestroyed(SurfaceHolder holder) 
        {
         /* 停止预览 */
            mCamera.stopPreview();
            mCamera = null;
        }    
        public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) 
        {
         /* 构建Camera.Parameters对相机的参数进行设置 */
            Camera.Parameters parameters = mCamera.getParameters();
            /* 设置拍照的图片格式 */
            parameters.setPictureFormat(PixelFormat.JPEG);
            /* 设置Preview的尺寸 */
            parameters.setPreviewSize(320, 480);
            /* 设置图像分辨率 */
            //parameters.setPictureSize(320, 480);
            /* 设置相机采用parameters */
            mCamera.setParameters(parameters);
            /* 开始预览 */
            mCamera.startPreview();
        }
        /* 拍照片 */
        public void takePicture() 
        {
          if (mCamera != null) 
          {
           mCamera.takePicture(null, null, jpegCallback);
          }
        }
        /* 拍照后输出图片 */
        private PictureCallback jpegCallback = new PictureCallback() 
        {
          public void onPictureTaken(byte[] _data, Camera _camera)
          {
            // TODO Handle JPEG image data
         CameraBitmap = BitmapFactory.decodeByteArray(_data, 0, _data.length); 
            File myCaptureFile = new File("/sdcard/camera1.jpg");
            try
            {
              BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(myCaptureFile));
              CameraBitmap.compress(Bitmap.CompressFormat.JPEG, 80, bos);
              bos.flush();
              bos.close();
              /* 将拍到的图片绘制出来 */
              Canvas canvas= mHolder.lockCanvas();
              canvas.drawBitmap(CameraBitmap, 0, 0, null);
              mHolder.unlockCanvasAndPost(canvas);
              
            }
            catch (Exception e)
            {
             e.getMessage();
            }
          }
        };
    }
      

  2.   

    楼主,你能不能告诉我怎样调用系统带的那个照相功能,能不能简简单单地使用
    mCamera = Camera.open();这样?
    我拿真机试程序总是崩掉
    不需要什么预览,存储图片什么的,就仅仅跳转到系统自带的拍照界面去
      

  3.   

    解决了,原来就是
    Intent intent = new Intent(); //调用照相机
    intent.setAction("android.media.action.STILL_IMAGE_CAMERA"); 
    startActivity(intent);
      

  4.   

    解决了,原来就是
    Intent intent = new Intent(); //调用照相机
    intent.setAction("android.media.action.STILL_IMAGE_CAMERA");  
    startActivity(intent);
      

  5.   

    按楼主那样...如果拍完了 我想返回到我自己的一个activity 并且用一个imgaeview显示刚才拍的照片 请问怎么实现? 谢啦 
      

  6.   

    也需要在AndroidManifest.xml里面注册相机的信息的<uses-sdk android:minSdkVersion="8" />
    <uses-permission android:name="android.permission.CAMERA" /> 
    <uses-feature android:name="android.hardware.camera.autofocus" />

        <application android:icon="@drawable/icon" android:label="@string/app_name">中间两行....
      

  7.   

     public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            context=this;
            total=(total)getApplicationContext();
    //        setContentView(R.layout.main);
            if(!android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)){
    showdialog("提示", "请检查存储卡是否正确安装", "确定");
    }
    else{
            intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);  
            startActivityForResult(intent, 100);     
    }
        }
        
        
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         if (resultCode != RESULT_OK)  
                return;
         if(requestCode==100){
         Bundle bundle=data.getExtras();
         Bitmap bitmap=(Bitmap)bundle.get("data");//得到bitmap
         total.setbtm(bitmap);//放到全局变量中
         intent.setClass(context, photo_type.class);
         startActivity(intent);
         finish();
         }
        }
    希望有帮助
      

  8.   

    26楼的 如果想添加预览功能 是不是要创建一个新的Activity才行啊
      

  9.   

    void auotFocus()是不是就是当相机移到某个位置时,他会自动对焦?
      

  10.   

     拍了照片怎么显示在自己ImageView啊
      

  11.   

    同问怎么显示到mageView上啊