在我的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/

10-11 04:01