About camera settings in xamarin forms
木幡 弘文
1
Reputation point
I'm running an app created with xamarin forms on an Android device. Even if the location information is turned on with the Android standard camera app, it will be turned off when the camera is called with the created app. Where to check
↓ Set location information to ON with the Android standard camera app
↓ When you start the camera with the created app, the location information is turned off
■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)]
■camera
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)
{
}
}