android.os.ServiceSpecificException 来电者不拥有 BCM26(代码 13)

android.os.ServiceSpecificException Caller does not own BCM26 (code 13)

我写了一个 Xamarin.Android C# class 来管理我 Raspberry Pi 上 Android 事物 OS 运行 的 io 引脚3. 当我尝试读取 pin 时出现此异常:

android.os.ServiceSpecificException: Caller does not own BCM26 (code 13)

来自 :

1   // setup 
2   var io = new PeripheralManagerService();
3   Gpio p = io.OpenGpio("BCM26");
4   p.SetDirection(Gpio.DirectionIn);
5
6   // later I read it 
7   if (p.Value == HIGH)
8      Console.WriteLine("Pin is high");
9   // Exception raised 

我应该怎么做才能解决这个问题?

编辑: 上面的代码实际上可以工作。我试图只将相关部分提取到一小部分代码示例中,因为原始代码是多线程的并且太复杂 post,这导致了为什么引发异常的答案。它与 Android 服务和权限无关。我试图读取的引脚在设置方向后关闭。删除关闭调用解决了这个问题。

Pin 必须保持打开状态(在你真正完成之前不要关闭它)否则尝试读取 pin 会引发神秘的异常,这让我对 Android 权限感到困惑,例如互联网使用或录制音频权限。