使用Xamarin.Android拍照,想把拍照的图片保存到程序目录下,代码如下
private void TakeAPicture(object sender, EventArgs eventArgs)
{
var intent = new Intent(MediaStore.ActionImageCapture);
File finalFile = new File(
this.GetExternalFilesDir(Android.OS.Environment.DirectoryPictures), "1.jpg");
if (!finalFile.ParentFile.Exists())
{
finalFile.ParentFile.Exists();
}
if (Build.VERSION.SdkInt >= BuildVersionCodes.N)
{
photoURI = FileProvider.GetUriForFile(
this,
"com.mydomain.fileprovider",
finalFile);
intent.PutExtra(MediaStore.ExtraOutput, photoURI);
}
else
{
intent.PutExtra(MediaStore.ExtraOutput, Android.Net.Uri.FromFile(finalFile));
}
StartActivityForResult(intent, Display_RequestCode);
}
摄像头启动成功,可拍照,在OnActivityResult中获取了resultCode为Result.OK,但是在指定位置文件夹创建了但没有生成文件(路径是fileprovider生成的content://)。
但是修改代码,不指定图片位置
private void TakeAPicture(object sender, EventArgs eventArgs)
{
var intent = new Intent(MediaStore.ActionImageCapture);
StartActivityForResult(intent, Display_RequestCode);
}
然后在OnActivityResult中,通过
Bitmap bm = (Bitmap)data.Extras.Get("data");
System.IO.FileStream fos = new System.IO.FileStream( string.Format("{0}/{1}.{2}",this.GetExternalFilesDir(Android.OS.Environment.DirectoryPictures),"1","jpg"), System.IO.FileMode.CreateNew);
来另存图片,反而是成功了,请各位指定迷津啊。
测试机用的华为P10,android版本为8.1。