学习Android不能不学习照相机,现在各种美容相机,微信朋友圈发图,现在升级之后直接下拉就可以照相了,各种艳照的的源头也是照相机,扯远了,有点邪恶了,还是简单学习一下Android中照相机的使用,Android中照相机的使用一般分为两种使用已有的照相App(可以理解为系统内置的照相机)和单独创建一个照相App,第一种方式简单易懂,第二种方式如果做的好的话可以养活一个公司~今天就简单的描述一下第一种的调用~

基础工作

调用照相机需要照相,照相就需要存储,存在外部存储中需要设置权限,本次设置的三个权限:一个是调用Camera权限,第二个是要求设备有照相机,第三个是在外部设备写的权限:

   <uses-permission android:name="android.permission.CAMERA" />    <uses-feature android:name="android.hardware.camera" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

  简单的页面,一个Buttom,一个ImageView:

Android硬件入门-照相机

Demo实现

简单的三部曲,首先创建Intent,然后启动Intent,最后接收结果,没有前置摄像头,就用的是模拟的:

Android硬件入门-照相机

拍照事件:

public void cameraEvent(View view) {intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);// 创建一个意图去获取图片file= getOutputMediaFile(); // 获取路径intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file)); // 设置文件名// 启动IntentstartActivityForResult(intent, IMAGE_REQUEST_CODE);}

获取文件路径的方法:

// 图片路径private static File getOutputMediaFile() {File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),tag);if (!mediaStorageDir.exists()) {if (!mediaStorageDir.mkdirs()) {Log.d(tag, "存储目录创建失败");return null;}}// 创建文件名String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());File mediaFile = null;mediaFile = new File(mediaStorageDir.getPath() + File.separator+ "IMG_" + timeStamp + ".jpg");Log.d(tag, "存储目录:" + mediaFile);return mediaFile;}

 完成之后的接收事件需要重写Activity中的onActivityResult方法:

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubif(requestCode == IMAGE_REQUEST_CODE&&resultCode==RESULT_OK) {imageView=(ImageView) findViewById(R.id.camera_img);//两种设置方式//图片较大的时候可以使用这种Bitmap  bitmap=BitmapFactory.decodeFile(file.toString());imageView.setImageBitmap(bitmap);//    imageView.setImageURI(Uri.fromFile(file));}super.onActivityResult(requestCode, resultCode, data);}

  效果如下:

Android硬件入门-照相机

主要参考资料:http://developer.android.com/guide/topics/media/camera.html

更多相关文章

  1. 探索新的Android权限模式
  2. Linux文件的特殊权限位SUID、SGID作用及编程设置/读取
  3. Android 事件全局监听(二)需要root权限 ,使用getevent监听Android输
  4. Android运行时权限,6.0—9.0多版本,多终端(手机,TV盒子)130行代码一劳
  5. Android之权限管理
  6. Android 为【apk】文件签名,增加修改系统时间等权限
  7. Android兼容android7.0、及Android8.0以上apk安装权限问题(二)

随机推荐

  1. Android(安卓)AIDL运用总结
  2. Android官方文档翻译--How Android(安卓)
  3. Android开发之 混淆加固和反编译
  4. android的Notifications的例子demo
  5. Android(安卓)Studio的使用 及 JDK环境配
  6. Android开发体会与心得
  7. Android(安卓)APK文件在电脑(PC虚拟机)上
  8. Android常见内存泄漏及优化总结
  9. 使用HTML5开发Android本地应用(一)
  10. android之MediaPlayer播放音频或者视频文