android中点击电源按钮camera出现上一次停留的画面,android-拍照后恢复camera.preview()...

我有一个Surfaceview,它正在显示相机预览,我要拍照并显示在Surfaceview上,但是当我按“后退”按钮时,它关闭了应用程序,但我希望它显示原始的相机预览.

我也只想在显示图片时重置显示,并且在显示相机预览时通常将功能返回到“后退”按钮.

public class cameraView extends Activity implements SurfaceHolder.Callback{

private SurfaceView preview=null;

private SurfaceHolder previewHolder=null;

private Camera camera=null;

private ImageButton bt = null;

private Toast t = null;

private Camera.Parameters param = null;

private Button b = null;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.cam);

t = Toast.makeText(this, "Just Click The Magnifying Glass To Search", 5000);//creates a new pop up message that lasts for 5 seconds

t.setGravity(Gravity.CENTER|Gravity.CENTER, 0, 0);

t.show();

b = (Button)findViewById(R.id.test);

b.setOnClickListener(search);

bt = (ImageButton)findViewById(R.id.button);//creates instance of button

bt.setOnClickListener(search);//starts an on click listener for button

preview=(SurfaceView)findViewById(R.id.myview);//creates instance of surfaceview

previewHolder=preview.getHolder();//creates a surfaceholder

previewHolder.addCallback(this);//sets surfaceholder callback as the activity

previewHolder.setType(3);//sets the type to SURFACE_TYPE_PUSH_BUFFERS

}

public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { //creates a method that is called automatically when the surface is changed

// TODO Auto-generated method stub

Camera.Parameters param = camera.getParameters();//sets param to be equal to camera parametors

param.setPreviewSize(width, height);//sets width and height to that of what is passed back to it when callback calls it

//param.setFlashMode(Parameters.FLASH_MODE_TORCH);

camera.setParameters(param);//sets the camera parameters to param

camera.startPreview();//starts the preview

camera.autoFocus(cb);//calls autofocus callback method

}

public void surfaceCreated(SurfaceHolder holder) {//called when the surface has been created

// TODO Auto-generated method stub

camera = Camera.open();//opens the camera and sets it to the camera variable

try{

camera.setPreviewDisplay(previewHolder);//sets the display area to previewHolder

}catch(Throwable t){

Log.e(""+t, null);

}

}

public void surfaceDestroyed(SurfaceHolder holder) {//called when sureface is destroyed or when activity is closed

// TODO Auto-generated method stub

camera.stopPreview();//stops the preview

camera.release();//releases the camera

camera = null;// clears the camera so it contains no information

}

AutoFocusCallback cb = new AutoFocusCallback(){

public void onAutoFocus(boolean success, Camera camera) {

// TODO Auto-generated method stub

//return true;

}

};

private OnClickListener search = new OnClickListener() {

public void onClick(View v) {

// do something when the button is clicked

switch(v.getId()){

case R.id.test:

param = camera.getParameters();

if(param.getFlashMode().equals(Parameters.FLASH_MODE_TORCH)){

/*

* IF statement to check the current flash mode and change it appropriately

*/

param.setFlashMode(Parameters.FLASH_MODE_OFF);

camera.setParameters(param);

}else{

param.setFlashMode(Parameters.FLASH_MODE_TORCH);

camera.setParameters(param);

}

break;

case R.id.button:

camera.autoFocus(cb);//calls autofocus with call back of cb

Handler handler = new Handler();

handler.postDelayed(new Runnable() {

public void run() {

camera.takePicture(null, mPictureCallback, mPictureCallback);

}

}, 2000);

break;

}

}

};

Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {

public void onPictureTaken(byte[] imageData, Camera c) {

bt.setVisibility(4);

b.setVisibility(4);

b.setEnabled(false);

bt.setEnabled(false);

}

};

上面是我的整个活动代码(减去导入次数).

任何帮助是极大的赞赏.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值