public class CameraActivity extends Activity
{
private SurfaceView surfaceView;
private SurfaceHolder sh;
private boolean ispraw = false;
private Camera camera;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(getWindow().FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
surfaceView = (SurfaceView) findViewById(R.id.surfaceView1);
sh = surfaceView.getHolder();
sh.addCallback(new callback());
sh.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
private class callback implements SurfaceHolder.Callback
{
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height)
{
}
@Override
public void surfaceCreated(SurfaceHolder holder)
{
try
{
camera = Camera.open();
camera.setPreviewDisplay(holder);
Camera.Parameters parameters = camera.getParameters();
parameters.setPictureFormat(ImageFormat.JPEG);
parameters.setPreviewFpsRange(2, 10);
// parameters.setPreviewSize(480, 800);
// camera.setParameters(parameters);
camera.startPreview();
ispraw = true;
} catch (Exception e)
{
camera.release();
camera = null;
e.printStackTrace();
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder)
{
if (camera != null)
{
if (ispraw)
{
camera.stopPreview();
}
camera.release();
camera = null;
}
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (camera != null)
{
switch (keyCode)
{
case KeyEvent.KEYCODE_SEARCH:
camera.autoFocus(new AutoFocusCallback()
{
public void onAutoFocus(boolean success, Camera camera)
{
if(success)
{
testTakePicture();
}
}
});
break;
case KeyEvent.KEYCODE_MENU:
// camera.autoFocus(null);
testTakePicture();
break;
default:
break;
}
}
return super.onKeyDown(keyCode, event);
}
public void testTakePicture()
{
camera.takePicture(null, null, callback);
}
Camera.PictureCallback callback = new PictureCallback()
{
@Override
public void onPictureTaken(byte[] data, Camera camera)
{
if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
{
Toast.makeText(CameraActivity.this, "sdk", Toast.LENGTH_LONG).show();
return;
}
try
{
if (data != null)
{
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
FileOutputStream stream = new FileOutputStream(Environment.getExternalStorageDirectory() + File.separator + System.currentTimeMillis() + ".png");
bitmap.compress(CompressFormat.PNG, 85, stream);
stream.close();
camera.stopPreview();
camera.startPreview();
System.out.println("222222222222222222222222222");
}
} catch (Exception e)
{
e.printStackTrace();
}
}
};
}