首页 > 解决方案 > 关于 xamarin 表单中的相机设置

问题描述

我正在 Android 设备上运行使用 xamarin 表单创建的应用程序。即使使用Android标准相机应用程序打开位置信息,当使用创建的应用程序调用相机时也会关闭位置信息。在哪里检查

↓ 使用 Android 标准相机应用程序将位置信息设置为 ON 在 此处输入图像描述

↓ 使用创建的应用程序启动相机时,位置信息将关闭。 在此处输入图像描述

■AndroidManifest.xml

<uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" />

■AssemblyInfo.cs

[assembly: UsesPermission(Android.Manifest.Permission.Internet)]
[assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)]
[assembly: UsesPermission(Android.Manifest.Permission.AccessCoarseLocation)]   
[assembly: UsesPermission(Android.Manifest.Permission.AccessFineLocation)]    
[assembly: UsesFeature("android.hardware.location", Required = false)]    
[assembly: UsesFeature("android.hardware.location.gps", Required = false)]    
[assembly: UsesFeature("android.hardware.location.network", Required = false)]    
[assembly: UsesFeature("android.hardware.camera", Required = false)]    
[assembly: UsesFeature("android.hardware.camera.autofocus", Required = false)]    
[assembly: UsesPermission(Android.Manifest.Permission.Vibrate)]    
[assembly: UsesPermission(Android.Manifest.Permission.AccessNetworkState)]    
[assembly: UsesPermission(Android.Manifest.Permission.AccessMediaLocation)]    
[assembly: UsesPermission(Android.Manifest.Permission.ReadExternalStorage)]

■相机

private async void OnImageClicked()
{

    try
    {

        await Plugin.Media.CrossMedia.Current.Initialize();

        if (!Plugin.Media.CrossMedia.Current.IsCameraAvailable || !Plugin.Media.CrossMedia.Current.IsTakePhotoSupported)
        {
            return;
        }

        DateTime dt = DateTime.Now;
        string result = dt.ToString("yyyyMMddHHmmss");
        result += ".jpg";

        Plugin.Media.Abstractions.MediaFile file = await Plugin.Media.CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
        {
            Name = result
        });

        if (file == null)
        {
            return;
        }

        Queue<byte> bytes = new Queue<byte>();
        using (Stream s = file.GetStream())
        {
            long length = s.Length;
            int b;
            while ((b = s.ReadByte()) != -1)
            {
                bytes.Enqueue((byte)b);
            }
        }

        File.Copy(file.Path, "XXXXXXXXXXXX/Pic");

        file.Dispose();

    }
    catch (Exception)
    {
    }
}

标签: xamarin.formscamera

解决方案


推荐阅读