Android Xamarin 问题与 IGpioCallback

Android Things with Xamarin Issue with IGpioCallback

我刚开始 Android Xamarin 的事情,我已经成功地打开了 LED,但我无法检测到按钮输入。 我认为问题出在下面代码中的 "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 的值发生变化时将 "call back" 放入您的应用程序中。

RegisterGpioCallback 分配给实现接口的实际对象实例,在下面的示例中,它将位于 Activity.

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());
    }

    ~~~~
}