zoukankan      html  css  js  c++  java
  • 【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

  • 相关阅读:
    C++资源之不完全导引(下)
    Box2D:给你的Qt程序加上物理引擎
    优秀程序员45种习惯
    Android中AVD的使用以及错误处理方法
    C++资源之不完全导引(上)
    CSS制作横向菜单,如何让li元素在ul中居中?
    PHP SESSION
    函数返回值
    鼠标经过tr背景变色的js代码
    点击按钮下载
  • 原文地址:https://www.cnblogs.com/zhangjiawei/p/Android_photo.html
Copyright © 2011-2022 走看看