Android硬件入门-照相机

简介:

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

基础工作

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

1
2
3
4
5
<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:

Demo实现

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

拍照事件:

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

获取文件路径的方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 图片路径
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方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
     @Override
     protected  void  onActivityResult( int  requestCode,  int  resultCode, Intent data) {
         // TODO Auto-generated method stub
         if (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);
     }

  效果如下:

 本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4086004.html,如需转载请自行联系原作者

相关文章
|
10天前
|
数据库 Android开发 开发者
Android Studio入门之内容共享ContentProvider讲解以及实现共享数据实战(附源码 超详细必看)
Android Studio入门之内容共享ContentProvider讲解以及实现共享数据实战(附源码 超详细必看)
57 0
|
10天前
|
存储 XML Android开发
Android Studio App开发入门之数据存储中共享参数SharedPreferneces的讲解及使用(附源码 超详细必看)
Android Studio App开发入门之数据存储中共享参数SharedPreferneces的讲解及使用(附源码 超详细必看)
37 0
|
10天前
|
Android开发
Android Studio APP开发入门之对话框Dialog的讲解及使用(附源码 包括提醒对话框,日期对话框,时间对话框)
Android Studio APP开发入门之对话框Dialog的讲解及使用(附源码 包括提醒对话框,日期对话框,时间对话框)
46 0
|
10天前
|
XML 监控 Android开发
Android Studio App开发入门之文本输入EditText的讲解及使用(附源码 包括编辑框、焦点变更监听器、文本变化监听器 )
Android Studio App开发入门之文本输入EditText的讲解及使用(附源码 包括编辑框、焦点变更监听器、文本变化监听器 )
135 0
|
8天前
|
数据库 Android开发
Android数据库框架-GreenDao入门,2024年最新flutter 页面跳转动画
Android数据库框架-GreenDao入门,2024年最新flutter 页面跳转动画
Android数据库框架-GreenDao入门,2024年最新flutter 页面跳转动画
|
10天前
|
Android开发
Android游戏引擎AndEngine入门资料
Android游戏引擎AndEngine入门资料
16 3
|
10天前
|
Java Android开发
android AsyncTask入门
android AsyncTask入门
11 0
|
10天前
|
Java API 开发工具
java与Android开发入门指南
java与Android开发入门指南
18 0
|
10天前
|
Java 物联网 Linux
Android硬件通信之 串口通信
Android硬件通信之 串口通信
11 0
|
10天前
|
XML Java Android开发
Android Studio App入门之列表视图ListView的讲解及实战(附源码 超详细必看)
Android Studio App入门之列表视图ListView的讲解及实战(附源码 超详细必看)
107 0