android程序设计拍照,Android相机拍摄图片,保存或者发送到下一个 Activity_android-camera_开发99编程知识库...

我是初学者,需要帮助。 如何用照相机拍照,保存或者发送到下一个 Activity? 请帮助

我已经尝试了很多选项,( 带有图片回调和surfaceview的takepicture,带 Intent ) 在 Android 2.3.3上都不能正常工作

EDIT-我的代码:@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.sf_foto);

mCamera = getCameraInstance();

mCameraPreview = new SF_CameraPreview(this, mCamera);

FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview);

preview.addView(mCameraPreview);

ImageButton captureButton = (ImageButton) findViewById(R.id.button_capture);

captureButton.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

mCamera.takePicture(myShutterCallback, mPicture_RAW, mPicture);

}

});

}

private Camera getCameraInstance() {

Camera camera = null;

try {

camera = Camera.open(0);

camera.setDisplayOrientation(90);

} catch (Exception e) {

//cannot get camera or does not exist

}

return camera;

}

ShutterCallback myShutterCallback = new ShutterCallback(){

@Override

public void onShutter() {}

};

PictureCallback mPicture_RAW = new PictureCallback(){

@Override

public void onPictureTaken(byte[] arg0, Camera arg1) {}

};

PictureCallback mPicture = new PictureCallback() {

@Override

public void onPictureTaken(byte[] data, Camera camera) {

File pictureFile = getOutputMediaFile();

if (pictureFile == null) {

return;

}

try {

FileOutputStream fos = new FileOutputStream(pictureFile);

fos.write(data);

fos.flush();

fos.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

Intent i = new Intent(StyloveFoto.this, Filter.class);

startActivity(i);

}

};

protected File getOutputMediaFile() {

File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM),"KWAlbum");

if (!mediaStorageDir.exists()) {

if (!mediaStorageDir.mkdirs()) {

Log.d("KWAlbum","failed to create directory");

return null;

}

}

//Create a media file name

File mediaFile = new File(mediaStorageDir.getPath() + File.separator +"KW" +".jpg");

return mediaFile;

}

我的曲面视图:public class SF_CameraPreview extends SurfaceView implements SurfaceHolder.Callback{

private SurfaceHolder mSurfaceHolder;

private Camera mCamera;

public SF_CameraPreview(Context context, Camera camera) {

super(context);

this.mCamera = camera;

this.mSurfaceHolder = this.getHolder();

this.mSurfaceHolder.addCallback(this);

this.mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

}

@Override

public void surfaceCreated(SurfaceHolder surfaceHolder) {

try {

mCamera.setPreviewDisplay(surfaceHolder);

mCamera.startPreview();

} catch (IOException e) {

//left blank for now

}

}

@Override

public void surfaceDestroyed(SurfaceHolder surfaceHolder) {

//mCamera.stopPreview();

mCamera.release();

}

@Override

public void surfaceChanged(SurfaceHolder surfaceHolder, int format,

int width, int height) {

//start preview with new settings

try {

mCamera.setPreviewDisplay(surfaceHolder);

Camera.Parameters parameters = mCamera.getParameters();

parameters.set("orientation","portrait");

mCamera.setParameters(parameters);

mCamera.startPreview();

} catch (Exception e) {

//intentionally left blank for a test

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值