socket sendto 在 Android 上不工作(kivy,buildozer)
socket sendto not working on Android (kivy, buildozer)
我正在 kivymd 中编写脚本来切换连接到微控制器的 LED。该脚本应该向 MCU 服务器发送一个套接字 UDP 消息,其中包括一个切换 LED 的命令。该脚本在 windows 上工作正常,并且使用 buildozer 构建成功(虽然未在此脚本中显示,但我尝试了另一个版本来简单地将 hello world 打印到 MDLabel 并且它有效)但是每当我按下 btn_led 在 Android,应用程序关闭。知道为什么会发生这种情况以及如何解决它吗?
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 的权限行的注释,一切都很顺利!
我正在 kivymd 中编写脚本来切换连接到微控制器的 LED。该脚本应该向 MCU 服务器发送一个套接字 UDP 消息,其中包括一个切换 LED 的命令。该脚本在 windows 上工作正常,并且使用 buildozer 构建成功(虽然未在此脚本中显示,但我尝试了另一个版本来简单地将 hello world 打印到 MDLabel 并且它有效)但是每当我按下 btn_led 在 Android,应用程序关闭。知道为什么会发生这种情况以及如何解决它吗?
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 的权限行的注释,一切都很顺利!