基于Camera2 原生相机通过缩略图或者button调用图库

下面拿Butoon 举列

首先 在CameraAactivity  写一个Button 用来启动ImageShowActivity


public class ImageShowActivity extends AppCompatActivity implements View.OnClickListener {
    private final static String TAG = "ImageShowActivity";
    private String lastImagePath;

    //图片集合
    private ArrayList<String> imageList = new ArrayList<>();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.e(TAG, "onCreate success !!!!!");
        setContentView(R.layout.activity_image_show);

        getFilePath();
        lastImagePath = imageList.get(imageList.size() - 1);
        gotoGallery(lastImagePath);
    }

    //获取相册camera 图片路径
    private void getFilePath() {
        File file= new File(Environment.getExternalStorageDirectory().toString() + "/DCIM/Camera");
        File[] dirEpub = file.listFiles();
        if (dirEpub.length != 0){
            for (int i = 0; i < dirEpub.length; i++){
                String fileName = dirEpub[i].toString();
                Log.i("File", "File name = " + fileName);
                imageList.add(fileName);
            }
        }
    }

//    //   适配  ---
//    public String getLastImagePath(Context context) {
//        Log.e("TAG", "getLastImagePath                      success !!!!!");
//        ContentResolver resolver = context.getContentResolver();
//        Uri baseUri = MediaStore.Files.getContentUri("external");
//        Uri query = baseUri.buildUpon().appendQueryParameter("limit", "1").build();
//        String[] projection = new String[]{MediaStore.Images.ImageColumns._ID, MediaStore.Images.ImageColumns.ORIENTATION,
//                MediaStore.Images.ImageColumns.DATE_TAKEN, MediaStore.Images.ImageColumns.DATA, MediaStore.Files.FileColumns.MEDIA_TYPE,
//        };
//        String selection = MediaStore.Images.Media.BUCKET_ID + " = ?";
//        String[] selectionArgs = {getBucketId(Environment.getExternalStorageDirectory().toString() + "/DCIM/Camera")};
//        String order = MediaStore.Images.ImageColumns.DATE_TAKEN + " DESC, " + MediaStore.Images.ImageColumns._ID + " DESC";
//        Cursor cursor = null;
//        String filePath = null;
//        try {
//            cursor = resolver.query(query, projection, selection, selectionArgs, order);
//            if (cursor != null && cursor.moveToFirst()) {
//                int orientation = cursor.getInt(1);
//                filePath = cursor.getString(3);
//            }
//        } finally {
//            if (cursor != null) {
//                cursor.close();
//            }
//        }
//        return filePath;
//    }
//
//    private static String getBucketId(String path) {
//        Log.e("TAG", "getBucketId                   success !!!!!");
//        return String.valueOf(path.toLowerCase().hashCode());
//    }

    
    // 转到画廊   就是图库
        public void gotoGallery(String path) {
            Log.e("TAG", "gotoGallery success !!!!!");
            Uri uri =getMediaUriFromPath(this, path);
            Intent intent = new Intent("com.android.camera.action.REVIEW", uri);

            intent.setData(uri);
            startActivity(intent);

        }



    @SuppressLint("Range")
    public  Uri getMediaUriFromPath(Context context, String path) {
        Log.e("TAG", "getMediaUriFromPath                   success !!!!!");
        Uri uri = null;
        if(path.contains("jpg")){
            Uri picUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
            Cursor cursor = context.getContentResolver().query(picUri,
                    null,
                    MediaStore.Images.Media.DISPLAY_NAME + "= ?",
                    new String[] {path.substring(path.lastIndexOf("/") + 1)},
                    null);
            if(cursor.moveToFirst()) {
                uri = ContentUris.withAppendedId(picUri,
                        cursor.getLong(cursor.getColumnIndex(MediaStore.Images.Media._ID)));
            }
            cursor.close();
        }else if(path.contains("VID")){
            Uri mediaUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
            Cursor cursor = context.getContentResolver().query(mediaUri,
                    null,
                    MediaStore.Video.Media.DISPLAY_NAME + "= ?",
                    new String[] {path.substring(path.lastIndexOf("/") + 1)},
                    null);
            if(cursor.moveToFirst()) {
                uri = ContentUris.withAppendedId(mediaUri,
                        cursor.getLong(cursor.getColumnIndex(MediaStore.Video.Media._ID)));
            }
            cursor.close();
        }
        return uri;
    }



    @Override
    public void onClick(View v) {
        Log.e(TAG, "onClick success !!!!!!!");
    }

    
}

猜你喜欢

转载自blog.csdn.net/I_am_a_loser/article/details/120353916