拍照
来源:互联网 发布:编程需要什么 编辑:程序博客网 时间:2024/06/03 01:52
横向,全屏,摄像头权限
<activity android:name=".MainActivity"
android:label="@string/app_name" android:screenOrientation="landscape">
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
<uses-permission android:name="android.permission.CAMERA"/>
使用了surfaceview控件,
.Camera.takePicture(ShutterCallback shutter,PictureCallback raw,PictureCallback jpeg)
该方法三个参数都为回调方法,最后一个为压缩后的图片,因为处理是异步的,该方法后不能立刻使用camera.startPreview()方法,容易黑屏,应该在回调方法完成后执行,进而防止照片不动
public class MainActivity extends Activity { private View layout; private Camera camera; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.main); layout = this.findViewById(R.id.buttonlayout); SurfaceView surfaceView = (SurfaceView) this.findViewById(R.id.surfaceView); surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); surfaceView.getHolder().setFixedSize(176, 144); surfaceView.getHolder().setKeepScreenOn(true); surfaceView.getHolder().addCallback(new SurfaceCallback()); } public void takepicture(View v){ if(camera!=null){ switch (v.getId()) { case R.id.takepicture: camera.takePicture(null, null, new MyPictureCallback()); break; case R.id.autofocus: camera.autoFocus(null); break; } } }
.Camera.takePicture(ShutterCallback shutter, PictureCallback raw, PictureCallback jpeg)
该方法三个参数都为回调方法,最后一个为压缩后的图片,因为处理是异步的,该方法后不能立刻使用camera.startPreview()方法,容易黑屏,应该在回调方法完成后执行,进而防止照片不动
private final class MyPictureCallback implements PictureCallback{public void onPictureTaken(byte[] data, Camera camera) {try {File jpgFile = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis()+".jpg");FileOutputStream outStream = new FileOutputStream(jpgFile);outStream.write(data);outStream.close();camera.startPreview();} catch (Exception e) {e.printStackTrace();}} }
private final class SurfaceCallback implements Callback{public void surfaceCreated(SurfaceHolder holder) {try{camera = Camera.open();//打开摄像头Camera.Parameters parameters = camera.getParameters();//Log.i("MainActivity", parameters.flatten());parameters.setPreviewSize(800, 480);parameters.setPreviewFrameRate(5);parameters.setPictureSize(1024,768);parameters.setJpegQuality(80);camera.setParameters(parameters);camera.setPreviewDisplay(holder);camera.startPreview();//开始预览}catch (Exception e) {e.printStackTrace();}}public void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {}public void surfaceDestroyed(SurfaceHolder holder) {if(camera!=null){camera.release();camera = null;}} }@Overridepublic boolean onTouchEvent(MotionEvent event) {if(event.getAction() == MotionEvent.ACTION_DOWN){layout.setVisibility(ViewGroup.VISIBLE);return true;}return super.onTouchEvent(event);} }
- 拍照
- 拍照
- 拍照
- 拍照
- 拍照
- 拍照
- 拍照
- 拍照
- 拍照
- 拍照
- 拍照
- 拍照
- 拍照、拍照裁剪
- Android拍照
- android拍照
- 住房公积金拍照
- android拍照
- 摄像头拍照
- java的不同验证器 validator
- 使用LineNumberReader方法来实现读取文件的方法
- 如何在Eclipse中Android Private Library中关联源码
- elasticsearch——入门(一)
- android提升之旅
- 拍照
- Html5 手机wap开发、微信开发、APP开发的优缺点-创业者必知
- HTML5新特性 canvas 实践
- 文件的输入输出流方法
- python 协程
- Warning: Attempt to present <...> on <…> which is already presenting null
- Html5 手机wap开发、微信开发、APP开发的优缺点-创业者必知
- 把异常信息输出到指定的文件中存储
- rtmplib rtmp协议过程分析