我尝试了以下链接: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();
}
谢谢您的帮助。