Estou tendo problemas ao pegar o caminho da imagem.
O erro acontece no metodo OnActivityResult na linha
using (var stream = new Java.IO.FileInputStream(arquivoImagem))
mas acredito que o problema é na linha de pegar o caminho
Java.IO.File diretorio = new Java.IO.File(System.IO.Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "Imagens"));
Só não consigo prosseguir
Erro: Unhandled Exception:
Java.IO.FileNotFoundException: /data/user/0/com.companyname.ClubeDoFutebol.Android.Android/files/Imagens/MinhaFoto.jpg (No such file or directory) occurred
using System;
using Java.Net;
using Android.App;
using Android.Content.PM;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using ClubeDoFutebol.Droid;
using Android.Content;
using Android.Provider;
using Xamarin.Forms;
using ClubeDoFutebol.Media;
using Android;
[assembly: Xamarin.Forms.Dependency(typeof(MainActivity))]
namespace ClubeDoFutebol.Droid
{
[Activity(Label = "ClubeDoFutebol", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity, ICamera
{
//Criando Objeto para receber imagem
static Java.IO.File arquivoImagem;
public void TirarFoto()
{
Intent intent = new Intent(MediaStore.ActionImageCapture);
//Criando Objeto para receber imagem
Java.IO.File arquivoImagem;
arquivoImagem = PegarArquivoImagem();
var caminho = global::Android.Net.Uri.FromFile(arquivoImagem);
//Salvando a Imagem
intent.PutExtra(MediaStore.ExtraOutput,caminho );
var activity = Forms.Context as Activity;
activity.StartActivityForResult(intent, 0);
}
private static Java.IO.File PegarArquivoImagem()
{
//Tive que ALTERAR pois o modo apresentado no curso não funcionou
//Criando Variavel e Selecionado a pasta para Salvar
Java.IO.File diretorio = new Java.IO.File(System.IO.Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "Imagens"));
//Verificando se o diretorio existe para salvar a foto
if (!diretorio.Exists())
{
diretorio.Mkdirs();
}
//Criando o objeto que recebe a imagem e definindo o nome dela.
arquivoImagem = new Java.IO.File(diretorio, "MinhaFoto.jpg");
return arquivoImagem;
}
protected override void OnCreate(Bundle savedInstanceState)
{
//TabLayoutResource = Resource.Layout.Tabbar;
//ToolbarResource = Resource.Layout.Toolbar;
StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
StrictMode.SetVmPolicy(builder.Build());
base.OnCreate(savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
LoadApplication(new App());
//var x = typeof(Xamarin.Forms.Themes.DarkThemeResources);
}
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
if (resultCode == Result.Ok)
{
byte[] bytes;
using (var stream = new Java.IO.FileInputStream(arquivoImagem))
{
bytes = new byte[arquivoImagem.Length()];
stream.Read(bytes);
}
MessagingCenter.Send<byte[]>(bytes, "FotoTirada");
}
}
}
}