【Android学习】调用系统相机

Android调用系统相机分三步走:

首先是要设置调用相机的权限。

其次是给按钮加打开相机的事件。

最后是拍照后进行图片的保存。

第一步,添加权限:

1  <!-- 调用系统相机 -->
2      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
3     <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

第二步,添加打开相机的事件:

1  public void clickHandler(View source) 
2         {
3              Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
4              startActivityForResult(intent, 1); 
5         }

第三步,拍照后进行照片的保存

 1  //调用相机拍照后保存图片
 2      @Override  
 3     protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
 4         // TODO Auto-generated method stub  
 5         super.onActivityResult(requestCode, resultCode, data);  
 6         if (resultCode == Activity.RESULT_OK) {  
 7             String sdStatus = Environment.getExternalStorageState();  
 8             if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) { // 检测sd是否可用  
 9                 Log.i("TestFile",  
10                         "SD card is not avaiable/writeable right now.");  
11                 return;  
12             }  
13             String name = new DateFormat().format("yyyyMMdd_hhmmss",Calendar.getInstance(Locale.CHINA)) + ".jpg";     
14             Toast.makeText(this, name, Toast.LENGTH_LONG).show();  
15             Bundle bundle = data.getExtras();  
16             Bitmap bitmap = (Bitmap) bundle.get("data");// 获取相机返回的数据,并转换为Bitmap图片格式  
17           
18             FileOutputStream b = null;  
19            //???????????????????????????????为什么不能直接保存在系统相册位置呢????????????  
20             File file = new File("/sdcard/myImage/");  
21             file.mkdirs();// 创建文件夹  
22             String fileName = "/sdcard/myImage/"+name;  
23   
24             try {  
25                 b = new FileOutputStream(fileName);  
26                 bitmap.compress(Bitmap.CompressFormat.JPEG, 100, b);// 把数据写入文件  
27             } catch (FileNotFoundException e) {  
28                 e.printStackTrace();  
29             } finally {  
30                 try {  
31                     b.flush();  
32                     b.close();  
33                 } catch (IOException e) {  
34                     e.printStackTrace();  
35                 }  
36             }  
37             ((ImageView) findViewById(R.id.imageView1)).setImageBitmap(bitmap);// 将图片显示在ImageView里  
38         }  
39     }  

需要在XML界面加一个Button,ImageView

原文地址:https://www.cnblogs.com/zhangjiawei/p/Android_photo.html