在我的Xamarin Forms应用程序中,我使用媒体插件拍照。我使用的代码在Moto G 3rd Gen上运行良好,但是当我在Samsung S6上运行相同的代码时,返回的文件始终为null,并且无法启动相机。
我已经升级到插件的预发行版本(2.4.0),但仍然得到相同的结果。
这是我的TakePhoto方法:
public async Task TakePhoto()
{
var result = await CrossMedia.Current.Initialize();
if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
{
_analyticsService.TagEvent("AndroidCameraService : Camera Not Available");
}
else
{
var file = await CrossMedia.Current.TakePhotoAsync(new StoreCameraMediaOptions
{
DefaultCamera = CameraDevice.Rear,
Directory = "Test",
Name = "Original.jpg",
PhotoSize = PhotoSize.Full,
SaveToAlbum = false
});
if (file == null)
{
_analyticsService.TagEvent("AndroidCameraService : File Null");
}
else
{
var rotationNeeded = GetNeededRotation(file.Path);
ResizeImage(file.Path, file.Path.Replace("Original", "Resized"), 320, 240);
var byteArray = File.ReadAllBytes(file.Path.Replace("Original", "Resized"));
PhotoAsBase64String = Convert.ToBase64String(byteArray);
CleanUpFiles(file.Path);
}
}
}
我不确定为什么三星S6在另一台设备上运行时不能正常工作。
有人有什么想法吗?
最佳答案
我认为这是与棉花糖更新有关的问题。现在,我必须从我的应用程序明确请求访问摄像头和文件系统;插件无法正确执行。一旦我授予了应用程序许可权,该插件就会按预期工作。这是不理想的,因为该插件应该为我们做到这一点,但这就是我使其工作的方式。
关于android - CrossMedia.Current.TakePhotoAsync不适用于Samsung S6,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37023370/