Я смотрел несколько примеров, которые запускают намерение android.media.action.IMAGE_CAPTURE
и используют переменную уровня класса для хранения полученного изображения. Я не хочу этого делать. Я думаю, что должен уметь указать URI файла, а затем вернуть этот URI из намерения, когда он будет завершен. Я пытаюсь сделать это:Как извлечь URI файла из камеры?
void snapPixButton_Click(object sender, EventArgs e)
{
Intent cameraIntent = new Intent(MediaStore.ActionImageCapture);
File file = new File(Home.SnapStorageLocation, string.Format("{0}.jpg", Guid.NewGuid()));
cameraIntent.PutExtra(MediaStore.ExtraOutput, file.ToURI().ToString());
StartActivityForResult(cameraIntent, SnapPixIntentRequestCode);
}
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
if (requestCode == SnapPixIntentRequestCode && resultCode == Result.Ok)
{
URI uri = new URI(data.GetStringExtra(MediaStore.ExtraOutput));
File file = new File(uri);
using (Bitmap bitmap = LoadAndResizeBitmap(file.Path, this.ImageView.Width, this.ImageView.Height))
{
this.ImageView.SetImageBitmap(bitmap);
}
}
}
Но в OnActivityResult
, вызов data.GetStringExtra(MediaStore.ExtraOutput)
результатов в сообщении: Неизвестный идентификатор: MediaStore
Что я делаю неправильно? Я не думаю, что мне придется держать переменные уровня класса, я должен уметь передавать данные в намерение, а затем извлекать их потом, не так ли?
check: http://stackoverflow.com/questions/6341329/built-in-camera-using-the-extra-mediastore-extra-output-stores-pictures-twice –
@PareshMayani: Спасибо, этот пост не " Однако я полностью отвечаю на мой вопрос. –