当前位置: 首页 > 知识库问答 >
问题:

Android上的Kivy和OSC

韩嘉祯
2023-03-14

我在kivy上做了一个简单的OSC测试,看起来我在Android手机上运行它们时遇到了问题。为了更好地理解Kivy和OSC是如何工作的,我做了一个小测试,应该可以显示应用程序和另一台计算机之间的通信。特别是服务器

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.gridlayout import *
from kivy.uix.button import Button
from kivy.clock import Clock
from kivy.lib.osc import oscAPI

class CButton(Button):
    def __init__(self, **kwargs):
        kwargs['text'] = kwargs.get('text', 'empty')
        super(CButton, self).__init__(**kwargs)

class OscWidget(GridLayout):
    def __init__(self, **kwargs):
        super(OscWidget, self).__init__(**kwargs)

    def callback(self, instance, *args):
        self.oscbutton.text = instance[2]
        oscAPI.sendMsg('/current/reply', dataArray=['answer'], ipAddr='192.168.1.101', port=8889)

class OscButtonApp(App):
    def buttpress(self, *args):
        oscAPI.sendMsg('/current/reply', dataArray=['call'], ipAddr='192.168.1.101', port=8889)

    def build(self):
        btnapp = OscWidget()
        oscAPI.init()
        oscid = oscAPI.listen(port=8889)
        osc.bind(oscid, btnapp.callback, '/test/reply')
        Clock.schedule_interval(lambda *x: osc.readQueue(oscid), 0)
        return btnapp


if __name__ == '__main__':
    OscButtonApp().run()

当我在我的电脑上测试它时,它以两种方式工作,所以从另一个终端,我可以发送一条消息,Kivy应用程序会做出反应:

oscAPI.sendMsg('/test/reply', dataArray=['change'], ipAddr='localhost', port=8889)

发送此信息会让Kivy更改按钮上的标签。此外,在另一个终端上设置监听端口(并在脚本上编辑输出端口)会向我显示从Kivy发送的消息。不过,当我在手机上尝试这个简单的应用程序时,它看起来只能发送消息,而不能接收消息。我做错了什么?

谢谢

共有1个答案

濮阳钟展
2023-03-14

默认情况下,oscApi.listen只监听127.0.0.1。如果你想收到每个人的消息,你需要听0.0.0.0

oscid = oscAPI.listen(ipAddr='0.0.0.0', port=8889)
 类似资料:
  • Kivy 是一个开源的 Python 库,用于快速开发利用创新用户界面的应用程序,如多点触摸应用程序。 Kivy 是用 Python 和 Cython 编写的,基于OpenGL ES 2,支持各种输入设备并有一个广泛的部件库。使用同一个代码库,你可以针对Windows、macOS、Linux、Android和iOS。所有的Kivy部件都支持多点触摸。 示例代码: from kivy.app imp

  • 问题内容: 假设我正在制作健身应用程序,您可以在其中进行锻炼。配置锻炼后,您需要保存它。如何添加此功能,以便当他退出应用程序并再次打开它时,他可以查看他的锻炼? 我专门在Android上工作。 这可用于保存本地游戏保存和数据。 问题答案: 我相信Kivy具有处理此问题的模块。尽管它仍(在撰写本文时)仍处于实验阶段。在这里查看:http : //kivy.org/docs/api- kivy.sto

  • 我在OS X(10.10.1)上使用Kivy和buildozer,但我无法在我的android设备上运行Kivy相机应用程序。不使用相机的情况很好。代码如下,我还可以发布buildozer规范文件和调试信息。任何帮助都很感激。 从kivy.App导入应用程序从kivy.uix.Widget导入小部件从kivy.uix.Camera导入相机从kivy.uix.Button导入按钮从kivy.core

  • 问题内容: 假设我正在构建一个井字游戏(因为它与结构非常相似),我希望结果在弹出窗口中显示,并带有一个新的游戏按钮,并且希望此弹出窗口允许我访问设置(另一个按钮)并对其进行更改,使其始终位于弹出窗口中,然后离开并最终将其关闭并开始新游戏。 我希望我可以保持秩序,因此有一个单独的弹出窗口类,可以在其中构建自定义弹出窗口。 显而易见,我将newgame方法和reset方法作为我的游戏网格类的方法。另一

  • ZeroNet-kivy 简体中文Support This app is a simple GUI to control the ZeroNet client. It is packaged using buildozer and uses Kivy. Currently the code of this repo only works on Android, anyone interested

  • Kivy iOS,此工具旨在为 iOS 编译必要的库以运行应用程序并管理 Xcode 项目的创建。 在创建 Xcode 项目之前至少需要编译一次。 目前支持的设备: iPhone Simulator (x86 and x86_64) iPhone / iOS (armv7 and arm64)