1
resposta

A câmera não está respeitando o Intent

Ao tirar a foto o arquivo não está sendo salvo no diretório e nem com o nome que eu informei no intent.

public void TirarFoto()
{
    Intent intent = new Intent(MediaStore.ActionImageCapture);

    arquivoImagem = CriarArquivoImagem();

    intent.PutExtra(MediaStore.ExtraOutput, arquivoImagem);

    var activity = Forms.Context as Activity;
    activity.StartActivityForResult(intent, 0);
}

public Java.IO.File CriarArquivoImagem()
{
    Java.IO.File diretorio = new Java.IO.File(
        Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryPictures), "tmws_app");
    if (!diretorio.Exists())
        diretorio.Mkdirs();
    return arquivoImagem = new Java.IO.File(diretorio, DateTime.Now.ToString("yyyyMMddHHmmss") + ".jpg");
}

Por causa disso ao chamar o OnActivityResult o arquivo não é encontrado para ser convertido em byte[]

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
    base.OnActivityResult(requestCode, resultCode, data);

    if (resultCode == Result.Ok)
    {
        byte[] bytes = new byte[arquivoImagem.Length()];
        using (var stream = new Java.IO.FileInputStream(arquivoImagem))
        {
            stream.Read(bytes);

        }
        MessagingCenter.Send<byte[]>(bytes, "ArquivoImagem");
    }
}

Estou usando vs2017. Eu notei que o Forms.Context está marcado como obsoleto, seria essa a origem do problema ou é alguma outra coisa?

1 resposta

Oi Lineu, tudo bem?

Por causa disso ao chamar o OnActivityResult o arquivo não é encontrado para ser convertido em byte[]

Acontece algum erro neste momento? Você pode copiar e colar a exceção para darmos uma olhada? Assim podemos analisar melhor e tentar reproduzir o problema.