Android-打开相机拍照并跳转

来源:互联网 发布:mysql 删除表恢复 编辑:程序博客网 时间:2024/05/22 00:33

目标效果;

  

点金一个按钮打开相机,拍照后显示在另一个activity中,因为控件比较简单,就不贴xml页面的代码了。


1.MainActivity.java页面,拍照返回后,将bitmap转变为字符串存到文件中。

package com.example.weixu.camera;import android.content.Context;import android.content.Intent;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import android.graphics.Bitmap;import android.graphics.Bitmap.CompressFormat;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.util.Base64;import android.view.View;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;public class MainActivity extends AppCompatActivity {    private static int REQUEST_CAMERA=1;    private String mFilePath;    private Bitmap bitmap;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mFilePath = Environment.getExternalStorageDirectory().getPath();// 获取SD卡路径          mFilePath = mFilePath + "/" + "temp.png";// 指定路径      }    public void open(View view){        switch (view.getId()){            case R.id.btOpenCamera:                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);// 启动系统相机                  Uri photoUri = Uri.fromFile(new File(mFilePath)); // 传递路径                  intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);// 更改系统默认存储路径                  startActivityForResult(intent, REQUEST_CAMERA);                break;        }    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        if (resultCode == RESULT_OK) { // 如果返回数据             if (requestCode == REQUEST_CAMERA) {                FileInputStream fis = null;                try {                    fis = new FileInputStream(mFilePath); // 根据路径获取数据                    bitmap = BitmapFactory.decodeStream(fis);    //获取图片                    new Thread(new Runnable() {                        @Override                        public void run() {                            intentBitmap();                        }                    }).start();                    Intent intent=new Intent(MainActivity.this,DynamicActivity.class);                    startActivity(intent);                } catch (FileNotFoundException e) {                    e.printStackTrace();                }finally{                    try{                        fis.close();// 关闭流                    }catch(IOException e) {                        e.printStackTrace();                    }                }            }        }    }    //传递bitmap    private void intentBitmap() {        //把Bitmap转码成字符串        ByteArrayOutputStream baos = new ByteArrayOutputStream();        bitmap.compress(CompressFormat.PNG, 50,baos);        String imageBase64 = new String (Base64.encode(baos.toByteArray(), 0));        //把字符串存到SharedPreferences里面        SharedPreferences prePicture = getSharedPreferences("Picture", Context.MODE_PRIVATE);        Editor editor = prePicture.edit();        editor.putString("cameraImage", imageBase64);        editor.commit();    }}


2.DynamicActivity.java页面获取字符串并转变为bitmap并显示。
package com.example.weixu.camera;import android.content.Context;import android.content.SharedPreferences;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Base64;import android.widget.ImageView;import java.io.ByteArrayInputStream;public class DynamicActivity extends AppCompatActivity {    private ImageView ivDynamicPicture;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_dynamic);        ivDynamicPicture= (ImageView) findViewById(R.id.ivDynamicPicture);        getPicture();    }    private void getPicture() {        //获取字符串        SharedPreferences sPreferences = getSharedPreferences("Picture", Context.MODE_PRIVATE);        String imageBase64 = sPreferences.getString("cameraImage", "");        //把字符串解码成Bitmap对象        byte[] byte64 = Base64.decode(imageBase64, 0);        ByteArrayInputStream bais = new ByteArrayInputStream(byte64);        Bitmap bitmap = BitmapFactory.decodeStream(bais);        //显示图片        ivDynamicPicture.setImageBitmap(bitmap);    }}


源码:点击打开链接



0 0
原创粉丝点击