C# Android与Xamarin的关系IGpioCallback的问题
我刚刚开始使用Xamarin的Android产品,我已经成功地打开了一个LED,但是我很难检测到按钮输入。 我认为问题在于下面代码中的C# Android与Xamarin的关系IGpioCallback的问题,c#,android,xamarin,xamarin.android,android-things,C#,Android,Xamarin,Xamarin.android,Android Things,我刚刚开始使用Xamarin的Android产品,我已经成功地打开了一个LED,但是我很难检测到按钮输入。 我认为问题在于下面代码中的“RegisterGpioCallback”,但我不确定,也不知道如何修复它。有人能帮我吗??这是我正在使用的代码: public class BlinkActivity : Activity { private IGpio gpio; private IGpio button; private IGpioCallback mButtonC
“RegisterGpioCallback”
,但我不确定,也不知道如何修复它。有人能帮我吗??这是我正在使用的代码:
public class BlinkActivity : Activity
{
private IGpio gpio;
private IGpio button;
private IGpioCallback mButtonCallback;
protected override void OnCreate(Bundle savedInstanceState)
{
this.mButtonCallback = mButtonCallback;
PeripheralManager peripheralManager = PeripheralManager.Instance;
gpio = peripheralManager.OpenGpio("BCM17");
gpio.SetDirection(Gpio.DirectionOutInitiallyLow);
gpio.Value = false;
button = peripheralManager.OpenGpio("BCM4");
button.SetDirection(Gpio.DirectionIn);
button.SetEdgeTriggerType(Gpio.EdgeNone);
button.RegisterGpioCallback(new Handler(), mButtonCallback);
base.OnCreate(savedInstanceState);
Task.Run(() =>
{
if (mButtonCallback.OnGpioEdge(button) == true)
{
gpio.Value = !gpio.Value;
}
});
}
}
您需要实际实现
IGpioCallback
接口,以便com.google.android.things.pio
库可以在GPIO值更改时对应用程序进行“回调”
将注册表rgpiocallback
分配给已实现接口的实际对象实例,在下面的示例中,该实例将位于活动中
public class BlinkActivity : Activity, IGpioCallback
{
~~~~
button.RegisterGpioCallback(new Handler(), this);
~~~~
// remove the Task.Run block
public OnGpioEdge(Gpio gpio)
{
Log.Debug("SO", gpio.Value.ToString());
}
~~~~
}