• android 打开系统相机,


    1.第一步在androidmanifest。xml中注册

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

    2.第二步创建activity_creama.xml

    <RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:paddingBottom="@dimen/activity_vertical_margin"
        tools:context="com.cqytjr.www.networkreceiver.CramaActivity">
    
        <Button
            android:id="@+id/btn_creama"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
    
            android:text="@string/hello_world"
            tools:context=".CramaActivity" />
    
        <ImageView
            android:id="@+id/img_creama"
            android:layout_width="150dip"
            android:layout_height="150dip"
            android:layout_margin="15dip"
            android:layout_centerHorizontal="true"
            android:layout_below="@+id/btn_creama"
            android:scaleType="fitXY"
    
            />
        <TextView
            android:id="@+id/text"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/img_creama"
            android:textSize="16sp"
            android:background="#22000000"
    
            />
    
    </RelativeLayout>
    

    3. 第三步创建cramaactivity

    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    
    
    import android.net.Uri;
    import android.os.Bundle;
    import android.os.Environment;
    import android.provider.MediaStore;
    import android.app.Activity;
    import android.content.Intent;
    import android.graphics.Bitmap;
    import android.util.Log;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    public class CramaActivity extends Activity {
    
        private Button creama=null;
    
        private ImageView img=null;
    
        private TextView text=null;
    
        private File tempFile = new File(Environment.getExternalStorageDirectory(),
                getPhotoFileName());
    
        private static final int PHOTO_REQUEST_TAKEPHOTO = 1;// 拍照
        private static final int PHOTO_REQUEST_GALLERY = 2;// 从相册中选择
        private static final int PHOTO_REQUEST_CUT = 3;// 结果
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_crama);
            init();
            Log.i("TAG-->", ""+Environment.getExternalStorageDirectory());
        }
    
        private void init() {
            // TODO Auto-generated method stub
    
            creama=(Button) findViewById(R.id.btn_creama);
    
            img=(ImageView) findViewById(R.id.img_creama);
    
            creama.setOnClickListener(listener);
            text=(TextView) findViewById(R.id.text);
    
    
    
        }
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            switch (requestCode) {
                case PHOTO_REQUEST_TAKEPHOTO:// 当选择拍照时调用
                    startPhotoZoom(Uri.fromFile(tempFile));
                    break;
                case PHOTO_REQUEST_GALLERY:// 当选择从本地获取图片时
                    // 做非空判断,当我们觉得不满意想重新剪裁的时候便不会报异常,下同
                    if (data != null)
                        startPhotoZoom(data.getData());
                    break;
                case PHOTO_REQUEST_CUT:// 返回的结果
                    if (data != null)
                        // setPicToView(data);
                        sentPicToNext(data);
                    break;
            }
            super.onActivityResult(requestCode, resultCode, data);
        }
        private OnClickListener listener = new OnClickListener(){
    
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
    
                Intent cameraintent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                // 指定调用相机拍照后照片的储存路径
                cameraintent.putExtra(MediaStore.EXTRA_OUTPUT,
                        Uri.fromFile(tempFile));
                startActivityForResult(cameraintent, PHOTO_REQUEST_TAKEPHOTO);
    
            }};
    
    
    
    
        private void startPhotoZoom(Uri uri) {
            Intent intent = new Intent("com.android.camera.action.CROP");
            intent.setDataAndType(uri, "image/*");
            // crop为true是设置在开启的intent中设置显示的view可以剪裁
            intent.putExtra("crop", "true");
    
            // aspectX aspectY 是宽高的比例
            intent.putExtra("aspectX", 1);
            intent.putExtra("aspectY", 1);
    
            // outputX,outputY 是剪裁图片的宽高
            intent.putExtra("outputX", 300);
            intent.putExtra("outputY", 300);
            intent.putExtra("return-data", true);
            intent.putExtra("noFaceDetection", true);
            startActivityForResult(intent, PHOTO_REQUEST_CUT);
        }
    
        // 将进行剪裁后的图片传递到下一个界面上
        private void sentPicToNext(Intent picdata) {
            Bundle bundle = picdata.getExtras();
            if (bundle != null) {
                Bitmap photo = bundle.getParcelable("data");
                if (photo==null) {
                    img.setImageResource(R.drawable.ic_launcher);
                }else {
                    img.setImageBitmap(photo);
    //                设置文本内容为    图片绝对路径和名字
                    text.setText(tempFile.getAbsolutePath());
                }
    
                ByteArrayOutputStream baos = null;
                try {
                    baos = new ByteArrayOutputStream();
                    photo.compress(Bitmap.CompressFormat.JPEG, 100, baos);
                    byte[] photodata = baos.toByteArray();
                    System.out.println(photodata.toString());
                    // Intent intent = new Intent();
                    // intent.setClass(RegisterActivity.this, ShowActivity.class);
                    // intent.putExtra("photo", photodata);
                    // startActivity(intent);
                    // finish();
                } catch (Exception e) {
                    e.getStackTrace();
                } finally {
                    if (baos != null) {
                        try {
                            baos.close();
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        }
    
        // 使用系统当前日期加以调整作为照片的名称
        private String getPhotoFileName() {
            Date date = new Date(System.currentTimeMillis());
            SimpleDateFormat dateFormat = new SimpleDateFormat(
                    "'IMG'_yyyyMMdd_HHmmss");
            return dateFormat.format(date) + ".jpg";
        }
    }
    

    第二种方式,我们不需要剪裁,直接用:

    androidmanifest注册

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

     第二部:

    xml文件添加一个imageview

     <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:src="@drawable/ic_launcher"
            android:id="@+id/imageView"/>
    

     activity代码

    public class MainActivity extends Activity {
    
        GridView gridView;
        ImageView imageView;
        private Bitmap bitmap;
    
        final  static  int REQUEST_CODE_PICK_IMAGE = 1;
        final  static  int REQUEST_CODE_CAPTURE_CAMEIA = 2;
    
        protected void getImageFromAlbum() {
            Intent intent = new Intent(Intent.ACTION_PICK);
            intent.setType("image/*");//相片类型
            startActivityForResult(intent, REQUEST_CODE_PICK_IMAGE);
        }
        protected void getImageFromCamera() {
            String state = Environment.getExternalStorageState();
            if (state.equals(Environment.MEDIA_MOUNTED)) {
                Intent getImageByCamera = new Intent("android.media.action.IMAGE_CAPTURE");
                startActivityForResult(getImageByCamera, REQUEST_CODE_CAPTURE_CAMEIA);
            }
            else {
                Toast.makeText(getApplicationContext(), "请确认已经插入SD卡", Toast.LENGTH_LONG).show();
            }
        }
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            setContentView(R.layout.activity_main);
    
    //        gridView = (GridView)findViewById(R.id.grid_view);
    
            imageView = (ImageView) findViewById(R.id.imageView);
            imageView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    getImageFromAlbum();
                }
            });
    
    
        }
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            if (requestCode == REQUEST_CODE_PICK_IMAGE) {
    
                Uri uri = data.getData();
    //            Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), uri);
    
                try {
                    Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(),uri);
                    imageView.setImageBitmap(bitmap);
                } catch (IOException e) {
                    e.printStackTrace();
                }
    
            } else if (requestCode == REQUEST_CODE_CAPTURE_CAMEIA ) {
    
                Bundle extras = data.getExtras();
                Bitmap map = (Bitmap)extras.get("data");
                imageView.setImageBitmap(map);
    
            } }
    
    
    }
    
  • 相关阅读:
    Could not obtain transaction-synchronized Session for current thread
    Spring 具名参数NamedParameterJdbcTemplate
    Could not load driverClass jdbc:mysql://localhost:3306/spring
    Spring 使用AspectJ的三种方式
    Excel 若某列包含某个字符则特定列显示特定字符
    使用Spring的隐式注解和装配以及使用SpringTest框架
    Eclipse Oxygen 解决 自动导包的问题
    C3P0 WARN: Establishing SSL connection without server's identity verification is not recommended
    Eclipse 多行复制并且移动失效
    正则表达式 使用代码
  • 原文地址:https://www.cnblogs.com/hualuoshuijia/p/6911435.html
Copyright © 2020-2023  润新知