Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Android与Xamarin的关系IGpioCallback的问题_C#_Android_Xamarin_Xamarin.android_Android Things - Fatal编程技术网

C# Android与Xamarin的关系IGpioCallback的问题

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

我刚刚开始使用Xamarin的Android产品,我已经成功地打开了一个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值更改时对应用程序进行“回调”

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

    ~~~~
}