Używam wtyczki medialnej Jamesa Montemagno'a do robienia zdjęć.Xamarin Forms - Media Plugin - Puste miniatury na telefonie
Z jakiegoś powodu i tylko podczas uruchamiania aplikacji na moim telefonie, podczas robienia zdjęć miniatury pojawiają się poprawnie w folderze TestFolder, ale pojawiają się jako puste.
Obrazy pojawiają się poprawnie podczas pracy w emulatorze.
To jest mój kod:
public async Task<MediaFile> TakePhoto() {
MediaFile result = null;
await CrossMedia.Current.Initialize();
if (CrossMedia.Current.IsCameraAvailable && CrossMedia.Current.IsTakePhotoSupported) {
// Supply media options for saving our photo after it's taken.
var mediaOptions = new Plugin.Media.Abstractions.StoreCameraMediaOptions {
SaveToAlbum = true,
Directory = "TestFolder",
Name="test.jpg"
};
// Take a photo of the business receipt.
result = await CrossMedia.Current.TakePhotoAsync(mediaOptions);
}
return result;
}
Edit 1:
W skrócie, z jakiegoś powodu media plugin nie działa na moim telefonie (Huawei P8 Lite). Próbowałem próbkę na GitHub:
https://github.com/jamesmontemagno/MediaPlugin
Zdjęcia są wyświetlane w emulatorze Ale nie przez telefon (aparat otwiera i robi zdjęcia) (Usage). Jak wspomniałem powyżej, jeśli mam dostęp do folderu z albumami, pojawiają się puste miniatury.
Edycja 2
To android plik manifestu:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-sdk android:minSdkVersion="15" />
<application android:label="MediaPluginTests.Droid"></application>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
</manifest>
także Dodałem:
var cameraStatus = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Camera);
var storageStatus = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Storage);
if (cameraStatus != PermissionStatus.Granted || storageStatus != PermissionStatus.Granted) {
var results = await CrossPermissions.Current.RequestPermissionsAsync(new[] { Permission.Camera, Permission.Storage });
cameraStatus = results[Permission.Camera];
storageStatus = results[Permission.Storage];
}
Oba uprawnienia powrócić jako pewnik.
Edycja 3
Próbowałem na Samsung Galaxy A3 i działa idealnie, pokazuje poprawnie w rolki aparatu i aplikacji.
Ale to jak wyglądają zdjęcia na rolce aparatu albumu mojego Huawei P8 telefonu:
Edycja 4
Próbowałem na innym urządzeniu Huawei P8 i otrzymuję ten sam problem .
Błąd występuje zarówno w systemie iOS, jak i Android? – apineda
Jestem w stanie przetestować go tylko na Androidzie. – rauland
Czy dodałeś manifest do pozwolenia? –