socket sendto在Android上不起作用(kivy,buildozer)



我正在kivymd中编写一个脚本,以切换连接到微控制器的LED。该脚本应该向MCU服务器发送一个套接字UDP消息,其中包括一个切换LED的命令。该脚本在windows上运行良好,使用buildozer构建是成功的(尽管该脚本中没有显示,但我尝试了另一个版本,简单地将hello world打印到MDLabel,它成功了(,但每当我在Android上按下btn_led时,应用程序就会关闭。你知道为什么会发生这种情况以及如何解决吗?

from kivymd.app import MDApp
from kivymd.uix.button import MDFlatButton
from kivy.uix.screenmanager import Screen
import socket

class TableApp(MDApp):
def build(self):

# Add Widgets
screen = Screen()
btn_led = MDFlatButton(text="Toggle LED", on_release=self.toggle_led,
pos_hint={"center_x": 0.5, "center_y": 0.5})
screen.add_widget(btn_led)
return screen
def toggle_led(self, event):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.sendto(b"LED", ("10.0.0.167", 1111))
s.close()

TableApp().run()

我刚刚了解到buildozer.spec文件包含可以配置为包含INTERNET的权限。我取消了默认情况下包含INTERNET的权限行的注释,一切都很顺利!

最新更新