首页 > 代码库 > 调用系统相机

调用系统相机

import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import android.support.v7.app.AppCompatActivity;import android.text.format.DateFormat;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.ImageView;import android.widget.Toast;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.Calendar;import java.util.Locale;public class MainActivity extends AppCompatActivity {    private Button button;    private ImageView view;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        button = (Button) findViewById(R.id.button);        view= (ImageView)findViewById(R.id.image);        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);                startActivityForResult(intent, 1);            }        });    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        // TODO Auto-generated method stub        super.onActivityResult(requestCode, resultCode, data);        if (resultCode == Activity.RESULT_OK) {            String sdStatus = Environment.getExternalStorageState();            if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) { // 检测sd是否可用                Log.i("TestFile",                        "SD card is not avaiable/writeable right now.");                return;            }            new DateFormat();            String name = DateFormat.format("yyyyMMdd_hhmmss", Calendar.getInstance(Locale.CHINA)) + ".jpg";            Toast.makeText(this, name, Toast.LENGTH_LONG).show();            Bundle bundle = data.getExtras();            Bitmap bitmap = (Bitmap) bundle.get("data");// 获取相机返回的数据,并转换为Bitmap图片格式            FileOutputStream b = null;            File file = new File("/sdcard/Image/");            file.mkdirs();// 创建文件夹            String fileName = "/sdcard/Image/"+name;            try {                b = new FileOutputStream(fileName);                bitmap.compress(Bitmap.CompressFormat.JPEG, 100, b);// 把数据写入文件            } catch (FileNotFoundException e) {                e.printStackTrace();            } finally {                try {                    b.flush();                    b.close();                } catch (IOException e) {                    e.printStackTrace();                }            }            try            {                view.setImageBitmap(bitmap);// 将图片显示在ImageView里            }catch(Exception e)            {                Log.e("error", e.getMessage());            }        }    }}

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="de.hdodenhof.picture.MainActivity">    <Button        android:id="@+id/button"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="点击选择图片" />    <ImageView        android:id="@+id/image"        android:layout_width="250dp"        android:layout_height="250dp" /></LinearLayout>
 <!-- 在SDCard中创建与删除文件权限 -->    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />    <!-- 往SDCard写入数据权限 -->    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    <uses-feature android:name="android.hardware.camera" />    <uses-feature android:name="android.hardware.camera.autofocus" />

 

调用系统相机