Android应用程序如何作为桌面应用程序的远程控制器? (Spotify的)

时间:2014-06-18 19:20:04

标签: java android spotify remote-access libspotify

我正处于开发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的
  5. ,点击UI按钮会向网络服务器发送请求,在那里它解析数据,完成一个动作,然后将响应返回给Android应用程序
  6. 我对于需要学习和使用的工具有点失落。非常感谢对实施的任何建议!

    谢谢!

2 个答案:

答案 0 :(得分:3)

你的方法是正确的。

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

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

这就是你如何进行沟通的方式。

然后,您可以开始将数据发布到桌面并在网页中返回数据。

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

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

答案 1 :(得分:1)

是的,你走在正确的轨道上。如果您了解java,那么您可以使用Java套接字连接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

创建一个简单的遥控器来解释这个完整的过程