xamarin.forms - 关于 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)
{
}
}
解决方案
推荐阅读
- java - Android Java:倒计时在一个活动中开始,在另一个活动中结束。可以吗?
- javascript - 如何在 html 中制作一个元素而不是整行
- awk - 如何使用 awk 根据匹配模式打印数字索引?
- java - 使用默认服务帐户的 Hangout Chat API 身份验证失败
- java - Spring Keycloak Adapter 为每个请求加载 Open-ID 配置
- jquery - 输入 $(window).height() 以返回数字 | 不明确的
- reactjs - 在加载所有 js 文件之前调用渲染,因此 owl carousel 无法正常工作
- javascript - 基于单个属性从javascript中的两个数组中删除重复项
- c# - 此代码会损坏文件吗?安全吗?
- javascript - Select2 Jquery在选择一个项目后删除搜索词