常量连接android套接字

时间:2016-04-10 00:21:28

标签: java android python multithreading sockets

我几天来一直在研究stackoverflow,但似乎找不到像我这样的问题。

我有一个 Raspberry Pi ,其中 python套接字服务器正在侦听传入的消息。我还有一个连接到它的 Android应用

我的想法是使用 pygame 模块在树莓派上创建一个“简单”音乐播放器。您可以将Android应用视为音乐播放器的控制器(Sonos)。

我已经有了一个开始,连接Android应用程序与Raspberry pi不是问题。 更多的是两者之间的沟通需要如何流动。

我已经考虑过的一些“解决方案”:

  1. 目前Android应用程序在新线程中创建套接字对象和连接然后关闭线程(因此线程不接收或发送消息,但套接字仍然存在)。当用户单击一个按钮(假设更新音乐列表)时,它会打开一个新线程,然后使用已创建的套接字对象发送命令,获取响应并更新UI,然后再次终止线程。我为每一个需要发生的动作(播放,暂停,停止等)执行此操作。使用此方法,只有Android应用程序才有权要求操作,因为它不会经常侦听服务器消息
  2. 那么如果我创建一个单独的线程,它在一个常量循环中发送一条消息然后得到一个响应:如何从主UI线程(如点击一个按钮)与循环交互。我想到了一个synchronized List<String> MessageQueue主线程推送命令,在连接线程的while循环中检查是否有任何需要发送的消息。
  3. 我制作了一个小模式,我是如何记住的:

    架构(带有while循环的单线程): single thread with while loop

    我选择套接字而不仅仅是简单的HTTP请求的原因是因为后来想要更新UI以便您可以看到实时音乐播放(几秒钟更新和几乎每个音乐播放器都有的东西,以及谁知道还有更多。

    如果你们有任何想法,或者知道任何主题,关于如何创建这个的示例应用程序请分享!如果有些事情不清楚或有点模糊,请随意提问/评论,因为我刚开始在论坛上提问。

    欢迎使用持久套接字连接和实时通信的示例应用程序!

    方面问题:JSON是两种应用程序之间进行通信的好方法吗?

    像这样

    {
       currentsong: "song1.mp3"
       position: "1.30" // The current position the music is playing on the server
       songlist: ["song1.mp3","song2.mp3","song4.mp3"]
       ...
    }
    

0 个答案:

没有答案