Я пытаюсь найти способ получить доступ к изображениям в полном разрешении из MonoDroid, после долгого времени попытки портировать примеры Java на MonoDroid и посмотреть, как другие, кажется, получили, у меня в настоящее время есть следующее (которое не работает)
private const int TAKE_PICTURE = 1;
protected Uri fileUri;
private void takePhoto(object sender, EventArgs e)
{
Intent intent = new Intent(Android.Provider.MediaStore.ActionImageCapture);
string path = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal),
"hqxmmc/pictures/ikbeneenplaatje.jpg");
Java.IO.File xfile = new Java.IO.File(path);
if (xfile.Exists())
{
Android.Util.Log.Warn("FILE", "file exists {0} \n overwriting!", xfile.Name);
xfile.Delete();
xfile.CreateNewFile();
}
else
{
Android.Util.Log.Warn("FILE", "file does not exist {0}, creating", xfile.Name);
xfile.Mkdirs();
xfile.CreateNewFile();
}
fileUri = Android.Net.Uri.FromFile(xfile);
Android.Util.Log.WriteLine(LogPriority.Warn, "FILE", fileUri.ToString());
intent.PutExtra(Android.Provider.MediaStore.ExtraOutput, fileUri);
StartActivityForResult(intent, TAKE_PICTURE);
}
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
if (requestCode == TAKE_PICTURE)
{
Uri imageUri = null;
// Check if the result includes a thumbnail Bitmap
if (data != null)
{
if (data.HasExtra("data"))
{
var thumbnail = data.GetParcelableArrayExtra("data");
Android.Util.Log.WriteLine(LogPriority.Info, "DATA", thumbnail.ToString());
// TODO Do something with the thumbnail
var outputFileUri = data.GetParcelableArrayExtra("outputFileuri");
Android.Util.Log.WriteLine(LogPriority.Info, "DATA", outputFileUri.ToString());
// TODO Do something with the full image stored
// in outputFileUri
}
}
else
{
//todo : reload full image form fileuri
Android.Util.Log.WriteLine(LogPriority.Info, "PATH", fileUri.ToString());
}
}
}
Отображается экран «сделать снимок», я могу сделать снимок, но затем этот снимок сохраняется в папке DCIM по умолчанию на устройстве, игнорируя имя файла и путь, который я для него указал.
Когда я сохраняю картинку, вызывается OnActivityResult, но его параметр Intent data
содержит пустое намерение.
как получить доступ к изображению в полном разрешении и / или к уменьшенному изображению только что снятого изображения?