У меня проблема с Microsoft Azure Cognitive Services.
Когда я фотографирую на телефоне с помощью камеры, по умолчанию она сохраняется в пути:
DCIM / Camera
, но когда я фотографирую с помощью своего приложения, оно сохраняется в
Встроенное хранилище / Изображения / температура
Краткоеописание ситуации:
1) Я делаю фотографии, используя камеру по умолчанию, и я могу открыть ее в своем приложении, используя Plugin.Media
, и MCS
отлично работает, код:
private async void btnPick_Clicked(object sender, EventArgs e)
{
await CrossMedia.Current.Initialize();
var file = await CrossMedia.Current.PickPhotoAsync(new PickMediaOptions());
Image = ImageSource.FromStream(() => file.GetStream());
var result = client.RecognizeTextAsync(file.GetStream()).Result;
var words = from r in result.Regions
from l in r.Lines
from w in l.Words
select w.Text;
OutputText = string.Join(" ", words.ToArray());
await Navigation.PushAsync(new TextFromPhoto(OutputText, Image));
}
2) Когда я фотографирую, используя свое приложение, используя этот код:
private async void btnTake_Clicked(object sender, EventArgs e)
{
await CrossMedia.Current.Initialize();
if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
{
await DisplayAlert("No Camera", ":( No camera available.", "OK");
return;
}
var file = await CrossMedia.Current.TakePhotoAsync(new StoreCameraMediaOptions
{
SaveToAlbum = true
});
Image = ImageSource.FromStream(() => file.GetStream());
var myStream = file.GetStream();
var result = client.RecognizeTextAsync(myStream).Result;
var words = from r in result.Regions
from l in r.Lines
from w in l.Words
select w.Text;
OutputText = string.Join(" ", words.ToArray());
await Navigation.PushAsync(new TextFromPhoto(OutputText, Image));
}
Приложение переходит в режим прерывания, и разрыв начинается на этой строке:
var result = client.RecognizeTextAsync(myStream).Result;
Эта строка работала в предыдущем методе
Вот androidmanifest.xml
:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.OCRScannerForms.Android" android:installLocation="auto">
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="27" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application android:label="OCRScannerForms.Android">
<provider android:name="android.support.v4.content.FileProvider" android:authorities="${applicationId}.fileprovider" android:exported="false" android:grantUriPermissions="true">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"></meta-data>
</provider>
</application>
</manifest>
А вот Resources/xml/file_paths.xml
:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-files-path name="my_images" path="Pictures" />
<external-files-path name="my_movies" path="Movies" />
</paths>
Интересно, что яЯ не могу открыть в моем приложении, фотография, сделанная ранее в моем приложении.
Я подозреваю, что проблема с пути к фотографии, но я не могу 'отремонтировать это