Android Studio-如何在不确认保存或删除的情况下拍照?

时间:2019-03-27 15:38:33

标签: android android-intent android-camera android-image android-camera-intent

我尝试了以下链接:Stackoverflow 但是,仍然无法在我的应用程序中工作。 [Android 5.1.1,API 22]

实际上是这样,用户可以在库中的文件之间选择,也可以通过将结果存储在ArrayList中的摄像机中进行选择。

对于相机,我希望用户不经确认就连续拍摄,结果直接进入ArrayList,并显示在RecyclerView上。

因此,用户可以从RecyclerView中查看照片结果。

是否可以直接从Android设备使用内置摄像头?

拍照的动作

private void activeTakePhoto() {
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    takePictureIntent.putExtra("android.intent.extra.quickCapture",true);
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
        String fileName = "temp.jpg";
        ContentValues values = new ContentValues();
        values.put(MediaStore.Images.Media.TITLE, fileName);
        mCapturedImageURI = getContentResolver()
                .insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                        values);
        takePictureIntent
                .putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI);
        startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
    }
}

活动结果

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { //taken from camera
        String[] projection = {MediaStore.Images.Media.DATA};
        Cursor cursor =
                managedQuery(mCapturedImageURI, projection, null,
                        null, null);
        int column_index_data = cursor.getColumnIndexOrThrow(
                MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        String picturePath = cursor.getString(column_index_data);

        preparedObjectDataImage("_file", "Taken From Camera", picturePath);

    }
}

private void preparedObjectDataImage(String title, String description, 
String picturePath) {
    Image image = new Image();
    image.setTitle(title);
    image.setDescription(description);
    image.setDatetime(System.currentTimeMillis());
    image.setPath(picturePath);
    images.add(image);
    imageAdapter.notifyDataSetChanged();
}

谢谢您的帮助。

0 个答案:

没有答案