Как получить имя захваченного изображения с помощью камеры в Xamarin Android

Я хочу получить имя захваченного изображения с помощью камеры. Когда пользователь нажимает кнопку, камера открывается нормально, но я хочу получить имя текущего захваченного изображения.

Это событие нажатия кнопки, когда пользователь нажимает кнопку, а затем открывается камера.

fab3.Click += (o, e) =>
            {
              Intent intent = new Intent(MediaStore.ActionImageCapture);
              StartActivityForResult(intent, 0);
              CloseFabMenu();

            };

И вот я хочу прочитать название захваченного изображения.

 protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
    {
      base.OnActivityResult(requestCode, resultCode, data);
      //if ((requestCode == PickImageId) && (resultCode == Result.Ok) && (data != null))
      //{

        switch (requestCode)
        {
          case 0:
            if (resultCode == Result.Ok)
            {
              Bitmap bitmap = (Bitmap)data.Extras.Get("data");


            }

            break;
}

В режиме отладки я получаю этот вывод. введите описание изображения здесь


person zubairz    schedule 19.04.2019    source источник
comment
Какая проблема у вас возникла? Разве вы не получили uri от data.Data? Если это так, я предлагаю вам создать новый файл uri takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,pictureUri); перед StartActivityForResult   -  person Leon Lu - MSFT    schedule 22.04.2019
comment
что на картинке   -  person zubairz    schedule 22.04.2019
comment
создать такой URI Uri pictureUri = Uri.FromFile(new File(GetExternalFilesDir(Environment.DirectoryDcim), "test.jpg"));   -  person Leon Lu - MSFT    schedule 22.04.2019
comment
Uri.FromFile не найден в Xamarin android   -  person zubairz    schedule 22.04.2019
comment
@zubariz, Вы решаете этот вопрос?   -  person Leon Lu - MSFT    schedule 25.04.2019
comment
@zubariz, используйте Android.Net.Uri.FromFile (...   -  person GaryP    schedule 13.02.2020


Ответы (1)


Как получить имя захваченного изображения с помощью камеры в Xamarin Android

Преобразовать Android.Net.Uri в фактический путь и получить имя изображения по этому пути .

Затем вы можете получить фактический путь и имя файла в OnActivityResult:

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
    base.OnActivityResult(requestCode, resultCode, data);
    if (requestCode == 0)
    {
        var uri = data.Data;
        string path = GetActualPathFromFile(uri);
        System.Diagnostics.Debug.WriteLine("Image path == " + path);
        string fileName = Path.GetFileName(path);
    }
}

Обновлять:

Вы можете обратиться к ответу Аамирхана Получение пути захваченного изображение в Android с помощью камеры, на моей стороне он работает нормально.

person Eren Shen    schedule 23.04.2019
comment
Когда я снимаю изображение с помощью камеры, данные намерения пусты. И я только что получил растровое изображение. Как указано выше Var uri = data.Date; нулевой , - person zubairz; 23.04.2019
comment
@zubairz, вам нужен дополнительный getImageUri метод, тогда получите изображение uri из вашего растрового изображения с помощью этого getImageUri метода. пожалуйста, проверьте мой обновленный ответ. - person Eren Shen; 23.04.2019
comment
Хорошо, сэр, давай проверим - person zubairz; 23.04.2019
comment
Сэр, у меня есть еще одна проблема, не связанная с этим Вопросом .. Если вы позволите, я могу спросить? - person zubairz; 23.04.2019
comment
@zubairz, не стесняйтесь говорить - person Eren Shen; 23.04.2019
comment
Могу ли я использовать xam.plugin.Madia с Xamarin android - person zubairz; 23.04.2019
comment
@zubairz, я бы порекомендовал вам использовать xam.plugin.Madia исходный код части Android. напрямую. - person Eren Shen; 23.04.2019