在 xamain.forms 中控制闪光灯的强度
Control the intensity of the flash light in xamain.forms
我是 xamarin 表单的新手。现在正在开发用于制作 Torch 的示例应用程序。我得到了 On/Off 闪光灯的 nuget。 https://github.com/kphillpotts/Xamarin.Plugins/tree/master/Lamp。但我喜欢控制闪光灯的强度。我尝试使用本机代码,但没有成功。我搜索 google 但找不到它。有什么方法可以实现它。
提前致谢
我不知道实现它的插件。但是您可以轻松地扩展 lamp 插件。
您可以扩展 界面 ILamp,例如
public interface ILamp
{
///....
void TurnOn(float intensity);
}
然后通过复制TurnOn
功能实现它
iOS
public void TurnOn(float intensity)
{
var captureDevice = AVCaptureDevice.DefaultDeviceWithMediaType(AVMediaType.Video);
if (captureDevice == null)
{
Debug.WriteLine("No captureDevice - this won't work on the simulator, try a physical device");
return;
}
NSError error = null;
captureDevice.LockForConfiguration(out error);
if (error != null)
{
Debug.WriteLine(error);
captureDevice.UnlockForConfiguration();
return;
}
else
{
if (captureDevice.TorchMode != AVCaptureTorchMode.On)
{
captureDevice.TorchMode = AVCaptureTorchMode.On;
NSError err;
captureDevice.SetTorchModeLevel(intensity, out err); // add this line
}
captureDevice.UnlockForConfiguration();
}
}
关于Android我不确定是否有API来控制它。我找不到一个。如果有的话,就像 iOS.
一样继续
如果平台没有API,只需实现TurnOn(float intensity)
如
public void TurnOn(float intensity)
{
TurnOn();
}
我是 xamarin 表单的新手。现在正在开发用于制作 Torch 的示例应用程序。我得到了 On/Off 闪光灯的 nuget。 https://github.com/kphillpotts/Xamarin.Plugins/tree/master/Lamp。但我喜欢控制闪光灯的强度。我尝试使用本机代码,但没有成功。我搜索 google 但找不到它。有什么方法可以实现它。
提前致谢
我不知道实现它的插件。但是您可以轻松地扩展 lamp 插件。
您可以扩展 界面 ILamp,例如
public interface ILamp
{
///....
void TurnOn(float intensity);
}
然后通过复制TurnOn
功能实现它
iOS
public void TurnOn(float intensity)
{
var captureDevice = AVCaptureDevice.DefaultDeviceWithMediaType(AVMediaType.Video);
if (captureDevice == null)
{
Debug.WriteLine("No captureDevice - this won't work on the simulator, try a physical device");
return;
}
NSError error = null;
captureDevice.LockForConfiguration(out error);
if (error != null)
{
Debug.WriteLine(error);
captureDevice.UnlockForConfiguration();
return;
}
else
{
if (captureDevice.TorchMode != AVCaptureTorchMode.On)
{
captureDevice.TorchMode = AVCaptureTorchMode.On;
NSError err;
captureDevice.SetTorchModeLevel(intensity, out err); // add this line
}
captureDevice.UnlockForConfiguration();
}
}
关于Android我不确定是否有API来控制它。我找不到一个。如果有的话,就像 iOS.
一样继续如果平台没有API,只需实现TurnOn(float intensity)
如
public void TurnOn(float intensity)
{
TurnOn();
}