【问题标题】:How can an Android application function as a remote controller to a desktop application? (Spotify)Android 应用程序如何充当桌面应用程序的遥控器? (Spotify)
【发布时间】:2014-08-09 05:13:17
【问题描述】:

我正处于开发 Android 应用程序以控制我的 Spotify 播放器的计划阶段。由于我在我的系统上运行 Debian,因此 Play 商店中可用的选项非常有限(我找不到任何正常运行的应用程序)。因此,我内心的程序员告诉我要构建一个。我以前没有构建过 Android 应用程序,但我在使用 API 方面有很好的经验,所以我认为这对我来说可能是一个相当不错的入门项目。

但是,我在掌握一些关于如何实现这一点的概念时遇到了一些困难。通过对 Spotify API 文档的一些研究,我相信Spotify Apps API 是我应该用来控制桌面播放的那个。

在 Android 方面,我想我会使用 Spotify Apps API 和 Libspotify API 来接收元数据并显示应用程序从桌面播放中获得的内容。

我无法理解的是 Android 应用程序如何与 Spotify 桌面客户端通信?我有一些想法,但我不确定...

到目前为止,我的思考过程如下:

  1. 在桌面上打开本地网络服务器并开始收听
  2. 在 Android 应用程序上,连接到桌面的网络服务器(如何做到这一点?)
  3. 连接后,桌面会发送元数据/其他信息以填充 Android 应用程序
  4. 在 Android UI 中,点击 UI 按钮会向网络服务器发送一个请求,在那里它会解析数据、完成一个操作,然后将响应返回给 Android 应用程序

我不知道我需要学习和使用哪些工具来完成这项工作。非常感谢您对实施的任何建议!

谢谢!

【问题讨论】:

    标签: java android spotify remote-access libspotify


    【解决方案1】:

    你的方法是正确的。

    在主机(桌面)上,打开一个套接字并监听端口 80(或其他端口,如果您愿意)并监听。它不需要是一个完整的网络服务器。

    在客户端 (Android) 上,首先向桌面的 IP 地址发送一个 http 请求。桌面响应一个简单的网页。

    这就是你让两个人交流的方式。

    然后就可以开始POST数据到桌面,在网页中返回数据了。

    然后您可以转向使用 JSON 而不是网页进行通信。

    您可以使用 Qt 对主机和客户端进行编程。您既可以在桌面上进行开发,也可以将客户端迁移到 Android(或 iPad)上。

    【讨论】:

    • 您好,感谢您的回复!这很有帮助,但是我有几个问题:1) Qt 到底是什么?我看到它用于构建与 Java Swing 相比的 GUI,但它在这里的应用是什么?您可以用它编写代码,但为什么要使用 Qt 而不是 Android Eclipse 环境呢?我可以用 Eclipse 实现同样的目标吗? 2)我只精通Java和PHP,这只能用这些工具来实现吗? Qt 主要是 C++ 从我能收集到的。谢谢!
    • 抱歉,您必须了解 C++ 才能使用 Qt。
    【解决方案2】:

    是的,你在正确的轨道上。如果您了解 java,那么您可以使用 Java Sockets 连接 android 和桌面。它应该适用于 Debian。在服务器端,您需要在指定端口上创建一个套接字。

    ServerSocket serverSocket = new ServerSocket(PORT);
    

    然后等待客户端连接

    Socket clientSocket = serverSocket.accept();
    

    在客户端,创建一个套接字并使用IP和端口连接到服务器

    InetAddress serverAddr = InetAddress.getByName(“SERVER_IP”);
    Socket socket = new Socket(serverAddr, PORT);
    

    您可以使用 java.awt.Robot 类在桌面上控制很多东西。它可以让您模拟键盘和鼠标事件。因此,如果您为 Spotify 启用了一些热键,那么您不需要 Spotify API 来控制它。只是模拟键盘事件。因此,如果空格键是播放/暂停的热键,则在服务器上运行它

    robot.keyPress(KeyEvent.VK_SPACE);
    

    This 文章通过为 vlc 创建一个简单的遥控器来解释这个完整的过程

    【讨论】:

      猜你喜欢
      • 2019-01-22
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      • 2011-07-29
      • 1970-01-01
      • 2011-02-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多