Android 无需保存即可捕获照片
我正在尝试使用以下代码拍照:Android 无需保存即可捕获照片,android,android-camera,Android,Android Camera,我正在尝试使用以下代码拍照: capturarFoto.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d("debugging","Has clicat al botó"); Intent cameraIntent = new Intent(android.provider.Med
capturarFoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("debugging","Has clicat al botó");
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, 1888);
}
});
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if( requestCode == 1888 && resultCode == -1) { //-1 = TOT HA ANAT BE.
Bitmap photo = (Bitmap) data.getExtras().get("data");
Log.d("debugging",""+photo.getHeight());
Log.d("debugging",""+photo.getWidth());
((ImageView) myFragmentView.findViewById(R.id.fotoCapturada)).setImageBitmap(photo);
}
}
这是完美的工作,当我拍摄照片时,它显示在ImageView中。但我正在尝试创建一些可编辑的选项、旋转等,所以我不想保存它(所以gallery已经缓存了!!)
我读过一些类似的问题,这是一件非常好的事情:
- 在SD卡上创建文件夹
- 在那里保存临时图片
- 创建一个.nomedia文件,使gallery无法访问它
- 删除或保存应用于图片,并将其保留在该文件夹中
最后,我发现了如何将图片保存到我们想要的URI中:
public void onClick(View v) {
Log.d("debugging","Has clicat al botó");
File folder = new File(Environment.getExternalStorageDirectory().toString()+"/ImagesFolder/");
folder.mkdirs();
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
Uri uriSavedImage=Uri.fromFile(new File(Environment.getExternalStorageDirectory().toString()+"/ImagesFolder/imatge.jpg"));
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
startActivityForResult(cameraIntent, 1888);
}
就这样
记得在SD卡上写权限。请注意,如果你正在使用这个方法,请考虑阅读:这将保存图片在IMASSHEMAX文件夹中…如果你有whatsapp,然后通过摄像头上传个人资料图片,它将上传你捕获的图像,但它不会将该图像存储在SD卡上,我们该怎么做?@Jayesh你可以在使用后删除“ImagesFolder”目录中保存的照片。
public void onClick(View v) {
Log.d("debugging","Has clicat al botó");
File folder = new File(Environment.getExternalStorageDirectory().toString()+"/ImagesFolder/");
folder.mkdirs();
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
Uri uriSavedImage=Uri.fromFile(new File(Environment.getExternalStorageDirectory().toString()+"/ImagesFolder/imatge.jpg"));
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
startActivityForResult(cameraIntent, 1888);
}