Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用MonoDroid从照相机访问全分辨率图片_C#_Android_.net_Xamarin.android_Android Camera - Fatal编程技术网

C# 使用MonoDroid从照相机访问全分辨率图片

C# 使用MonoDroid从照相机访问全分辨率图片,c#,android,.net,xamarin.android,android-camera,C#,Android,.net,Xamarin.android,Android Camera,我正试图找到一种从MonoDroid访问全分辨率图片的方法,经过长时间尝试将Java示例移植到MonoDroid,并了解其他人是如何获得这些图片的,我目前有以下内容(这不起作用) 此时会显示“拍照”屏幕,我可以拍照,但该照片会保存到设备上的默认DCIM文件夹中,忽略我为其指定的文件名和路径 当我保存图片时,会调用OnActivityResult,但其Intent数据参数包含一个空的Intent 如何访问我刚刚拍摄的全分辨率图片和/或缩略图?我将简单地发布我在项目中使用的代码。希望它能帮助你。我还

我正试图找到一种从MonoDroid访问全分辨率图片的方法,经过长时间尝试将Java示例移植到MonoDroid,并了解其他人是如何获得这些图片的,我目前有以下内容(这不起作用)

此时会显示“拍照”屏幕,我可以拍照,但该照片会保存到设备上的默认DCIM文件夹中,忽略我为其指定的文件名和路径

当我保存图片时,会调用OnActivityResult,但其
Intent数据
参数包含一个空的Intent


如何访问我刚刚拍摄的全分辨率图片和/或缩略图?

我将简单地发布我在项目中使用的代码。希望它能帮助你。我还尝试通过ContentValues类设置文件名和路径,就像Android wiki中描述的那样,但都没有效果,我认为这是一些MonoDroid bug

private string _imageUri;

private Boolean isMounted
{
    get
    {
        return Android.OS.Environment.ExternalStorageState.Equals(Android.OS.Environment.MediaMounted);
    }
}

public void BtnCameraClick(object sender, EventArgs eventArgs)
{
      var uri = ContentResolver.Insert(isMounted ? MediaStore.Images.Media.ExternalContentUri
                              : MediaStore.Images.Media.InternalContentUri, new ContentValues());
     _imageUri = uri.ToString();
      var i = new Intent(MediaStore.ActionImageCapture);
      i.PutExtra(MediaStore.ExtraOutput, uri);
      StartActivityForResult(i, CAPTURE_PHOTO);
}

    protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
    {
        if (resultCode == Result.Ok && requestCode == CAPTURE_PHOTO)
        {
          Toast.MakeText(this, string.Format("Image URI is {0}",_imageUri), ToastLength.Short).Show();    
        }
    }

工作起来很有魅力!我为我添加了getter,以备将来参考。(请参阅编辑)非常感谢。_imageUri在运行此代码时为空。活动是否在摄影机意图期间被垃圾收集?在这种情况下,在整个活动被取消之前,imageUri不应被垃圾收集。您确定已连接
BTNCameralClick
吗?
private string _imageUri;

private Boolean isMounted
{
    get
    {
        return Android.OS.Environment.ExternalStorageState.Equals(Android.OS.Environment.MediaMounted);
    }
}

public void BtnCameraClick(object sender, EventArgs eventArgs)
{
      var uri = ContentResolver.Insert(isMounted ? MediaStore.Images.Media.ExternalContentUri
                              : MediaStore.Images.Media.InternalContentUri, new ContentValues());
     _imageUri = uri.ToString();
      var i = new Intent(MediaStore.ActionImageCapture);
      i.PutExtra(MediaStore.ExtraOutput, uri);
      StartActivityForResult(i, CAPTURE_PHOTO);
}

    protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
    {
        if (resultCode == Result.Ok && requestCode == CAPTURE_PHOTO)
        {
          Toast.MakeText(this, string.Format("Image URI is {0}",_imageUri), ToastLength.Short).Show();    
        }
    }