如何转换此代码以检测相机焦点?
How do I convert this code to detect camera focus?
我正在尝试将用于检测相机焦点的代码从 Xcode/Swift 转换为 Xamarin/C#。 [办公室政治不是很好吗?] 好像不管用,我也不知道为什么。
Swift代码:
private var _doneFocusing = false
let kFocusKeyPath = "adjustingFocus"
// this line in my startCamera method to watch for focus:
captureDevice.addObserver(self, forKeyPath:kFocusKeyPath, options: NSKeyValueObservingOptions.New, context: nil)
override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject : AnyObject], context: UnsafeMutablePointer<Void>) {
if keyPath == kFocusKeyPath {
if let changeValue = change[NSKeyValueChangeNewKey] as? NSNumber {
var adjustingFocus = (changeValue == 1)
if adjustingFocus {
_doneFocusing = false
} else {
_doneFocusing = true
}
}
}
}
C#代码。根本没有调用 ObserveValue 方法。
private bool _doneFocusing = false;
private const string kFocusKeyPath = "FocusKeyPath";
// this line in my startCamera method to watch for focus:
_captureDevice.AddObserver(this, kFocusKeyPath, NSKeyValueObservingOptions.New, IntPtr.Zero);
public override void ObserveValue(NSString keyPath, NSObject ofObject, NSDictionary change, IntPtr context)
{
System.Diagnostics.Debug.WriteLine(keyPath);
if (keyPath == kFocusKeyPath)
{
var changeValue = change.ValueForKey(ChangeNewKey) as NSNumber;
if (changeValue == null)
{
return;
}
var adjustingFocus = (changeValue.Int16Value == 1);
if (adjustingFocus)
{
_doneFocusing = false;
}
else
{
_doneFocusing = true;
}
}
}
我是否缺少某些东西才能正常工作?
不确定为什么我更改了 keyPath 常量,但这就是问题所在。
keyPath 必须具体为 "adjustingFocus"
我正在尝试将用于检测相机焦点的代码从 Xcode/Swift 转换为 Xamarin/C#。 [办公室政治不是很好吗?] 好像不管用,我也不知道为什么。
Swift代码:
private var _doneFocusing = false
let kFocusKeyPath = "adjustingFocus"
// this line in my startCamera method to watch for focus:
captureDevice.addObserver(self, forKeyPath:kFocusKeyPath, options: NSKeyValueObservingOptions.New, context: nil)
override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject : AnyObject], context: UnsafeMutablePointer<Void>) {
if keyPath == kFocusKeyPath {
if let changeValue = change[NSKeyValueChangeNewKey] as? NSNumber {
var adjustingFocus = (changeValue == 1)
if adjustingFocus {
_doneFocusing = false
} else {
_doneFocusing = true
}
}
}
}
C#代码。根本没有调用 ObserveValue 方法。
private bool _doneFocusing = false;
private const string kFocusKeyPath = "FocusKeyPath";
// this line in my startCamera method to watch for focus:
_captureDevice.AddObserver(this, kFocusKeyPath, NSKeyValueObservingOptions.New, IntPtr.Zero);
public override void ObserveValue(NSString keyPath, NSObject ofObject, NSDictionary change, IntPtr context)
{
System.Diagnostics.Debug.WriteLine(keyPath);
if (keyPath == kFocusKeyPath)
{
var changeValue = change.ValueForKey(ChangeNewKey) as NSNumber;
if (changeValue == null)
{
return;
}
var adjustingFocus = (changeValue.Int16Value == 1);
if (adjustingFocus)
{
_doneFocusing = false;
}
else
{
_doneFocusing = true;
}
}
}
我是否缺少某些东西才能正常工作?
不确定为什么我更改了 keyPath 常量,但这就是问题所在。
keyPath 必须具体为 "adjustingFocus"