android 拍照的图片保存到系统图库

来源:互联网 发布:淘宝千牛发货流程 编辑:程序博客网 时间:2024/04/29 10:32

    拍照后照片要保存到系统相册,可以通过给系统发个广播,扫描相应存放照片的文件路径,这时照片才会保存到系统相册。代码如下:

package com.example.administrator.cameratest;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.net.Uri;import android.os.Environment;import android.provider.MediaStore;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.ImageView;import java.io.File;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Locale;public class MainActivity extends AppCompatActivity {    private Button camera ;    private ImageView image ;    private   String  path ;    private File cameraFile ;    private Uri imageUri ;    private final int  TAKE_PHOTO_LOCAL = 1;    private static  String filePath = null;    /** 外置存储卡根路径 */    public static final String SEPARATOR = System.getProperty("file.separator");    public static final String EXTERNAL_STORAGE_DIRECTORY_ROOT = Environment            .getExternalStorageDirectory().getAbsolutePath()+ SEPARATOR + "Test" + SEPARATOR+ "Image" + SEPARATOR ;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        camera = (Button)findViewById(R.id.camera);        image = (ImageView)findViewById(R.id.image);        camera.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //                path  = getPhotoFileName();                cameraFile = createNewFile(path);                imageUri = Uri.fromFile(cameraFile);                //打开相机的Intent                Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");                intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri);                startActivityForResult(intent, TAKE_PHOTO_LOCAL);            }        });    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        switch (requestCode)        {            case TAKE_PHOTO_LOCAL :            if(resultCode == RESULT_OK)            {                // 通知系统将所拍照片路径写入系统数据库                Intent intent = new Intent(                        Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);                intent.setData(Uri.fromFile(cameraFile));                sendBroadcast(intent);                Bitmap decodeFile = BitmapFactory.decodeFile(cameraFile.getAbsolutePath());                image.setImageBitmap(decodeFile);            }                break;        }    }    /**     * 创建文件夹     * @param path 路径     * @return     */    public static File createNewFile(String path) {        File file = new File(path);        try {           /* if (!file.getParentFile().exists()) {                file.getParentFile().mkdirs();            }*/            if (!file.exists()) {                file.mkdirs();            }            if (file.exists()) {                file.delete();            }            file.createNewFile();        } catch (IOException e) {            //LogUtil.e(TAG, e.getMessage());        }        return file;    }    public static String getPhotoFileName()    {        String status = Environment.getExternalStorageState();        if (!status.equals(Environment.MEDIA_MOUNTED)) {            //showToast(R.string.camera_error_no_sdcard);        } else {            try {                filePath = EXTERNAL_STORAGE_DIRECTORY_ROOT                        + getWorkCirlePhotoFileName();            }catch (Exception e)            {            }        }        return filePath ;    }    /**     * 对照片命名,按时间     * @return     */    public static String getWorkCirlePhotoFileName() {        Date date = new Date(System.currentTimeMillis());        SimpleDateFormat dateFormat = new SimpleDateFormat(                "'IMG'_yyyy-MM-dd-HH-mm-ss", Locale.CHINA);        return dateFormat.format(date) + ".jpg";    }}


添加相应的权限:

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



0 0
原创粉丝点击