MPD Android客户端

这几天学习了MPD(Music Player Daemon )这个开源框架,其实这个有点像Socket,是直接new 出来的,就像Socket那样,有多个构造方法(就把MPD类理解成Socket)。其中这个开源框架主要就是基于这个类来操作的,下面介绍一些相关联的类:

1、MPD:

java.lang.Object

org.bff.javampd.MPD

MPD represents a connection to a MPD server. The commands are maintained in a properties file called mpd.properties.

 

通过上面的构造方法,可以清楚的看到,构造方法的确很类似于Socket。

相同点:

(1).他们两个都可以传入ip和端口号,超时连接等,就可以与服务器进行信息的交互;

(2).他们都可以判断是否已经连接或都对连接进行关闭。

不同点:

(1).个人认为MPD不同于Socket的是Socket编程是基于IO流来操作的,而MPD可能是类似于代理模式。

(2).MPD还可以设置与服务器连接的密码而Socket则不行。

下面介绍这个类几个比较重要的方法:

(1) public MPDAdmin getMPDAdmin()

通过该类的getMPDAdmin可以得到管理MPD服务器类MPDAdmin。其中这个MPDAdmin也是比较有意思的,要想得到这个类就必需通过MPD对象得到,因为MPDAdmin是单例模式的,这个在后面介绍MPDAdmin这个类的时候会谈到。

(2). public MPDDatabase getMPDDatabase()

得到服务器数据操作对象,也是单例模式的。

(3) public MPDPlayer getMPDPlayer()

得到控制服务器播放的对象,也是单例模式。这个类很重要,一些播放的属性,还有声音等都是通过这个类来控制的。

(4) public MPDPlaylist getMPDPlaylist()

得到服务器上MPD播放列表,也是单例模式。

总结:当然这个类还一些其它很强的方法,比如说可以发送命令给服务器等,这里就不一一列举了。

2. java.lang.Object

  org.bff.javampd.MPDAdmin


public class MPDAdmin

extends Object

MPDAdmin represents a administrative controller to a MPD server. To obtain an instance of the class you must use the getMPDAdmin method from the MPD connection class. This class does not have a public constructor (singleton model) so the object must be obtained from the connection object.

管理服务器MPD一些属性,要得到这个对象,你必须用MPD这个类的getMPDAdmin 方法得到,因为这个类也没公共的构造方法,所以对象必须用连接对象得到。

(1) public void addMPDChangeListener(MPDChangeListener mcl)

添加服务器MPD发生改变时的监听,产生 MPDChangeEvent这个事件。与之相对应的移除监听:public void removePlayerChangedListener(MPDChangeListener mcl)
还有一些其监听。

 (2)

public void killMPD()

关闭与服务器的连接

3.

java.lang.Object
  
 
org.bff.javampd.MPDDatabase

public class MPDDatabase
extends Object

MPDDatabase represents a database controller to a MPD server. To obtain an instance of the class you must use the MPD.getMPDDatabase() method from the MPD connection class. This class does not have a public constructor (singleton model) so the object must be obtained from the connection object.

服务器MPD数据管理者,单例模式,。

注:

歌名及歌的一些信息都放在这里,通过这个可以得到服务器数据的各种数据。

(1)

public MPD getMpd()
返回使用这个数据库类的MPD对象。

(2)

public Collection<String> listPlaylists()

Returns a Collection of all available playlist names on the server.

返回服务器可以播放列表名字的集合。

(3)

public Collection<MPDSavedPlaylist> listSavedPlaylists()
Returns a Collection of MPDSavedPlaylists of all saved playlists. This is an expensive call so use it cautiously.

返回保存播放列表的集合,使用这个方法花费的代价很高,所以慎重使用它。

(4)

public Collection<MPDSong> findArtist(String artist)

Returns a Collection of MPDSongs for an artist. Please note this only returns an exact match of artist. To find a partial match use searchArtist(java.lang.String).

通过歌手名字,回歌的集合,请注意这个查找是精确查找,模糊查找请用searchArtist(java.lang.String).这个方法;

注:还有一些通过歌名、歌的年份、歌的标题名、等查找,也可以列出所有歌等,这些方法API上都说明了很清楚。

4.

java.lang.Object
  
 
org.bff.javampd.MPDPlayer

public class MPDPlayer
extends Object

MPDPlayer represents a player controller to a MPD server. To obtain an instance of the class you must use the getMPDPlayer method from the MPD connection class. This class does not have a public constructor (singleton model) so the object must be obtained from the connection object.

控制服务器MPD播放的属性,单例模式。

注:声音、是否重复、下一首、暂停、上一首、快进、快退、静音、播放状态、前播放时长、当前播放的歌等,这里不一一列出。

(1)

public void addPlayerChangeListener(PlayerChangeListener pcl)

Adds a PlayerChangeListener to this object to receive PlayerChangeEvents.

添加播放改变监听,这个对象收到一个PlayerChangeEvent事件。与之相对应的移除监听

public void removePlayerChangedListener(PlayerChangeListener pcl)

(2)

public void addVolumeChangeListener(VolumeChangeListener vcl)

添加声音改变监听,会收到一个 VolumeChangeEvents.事件。与之相对应的移除该监听

public void removeVolumeChangedListener(VolumeChangeListener vcl)

5.

java.lang.Object
  
 
org.bff.javampd.objects.MPDItem
      
 
org.bff.javampd.objects.MPDSong
public class MPDSong
extends MPDItem

MPDSong represents a song in the MPD database that can be inserted into a playlist.

 MPDSong表示在服务器数据库一条歌的属性,可以被插入播放列表。

注:歌的一些属性,都在这个类里了。

更多信息可以查看API: http://www.thejavashop.net/javampd/site/apidocs/index.html

这里有个比较详细的Demo:https://files.cnblogs.com/grnwich/AndroidMpdClient.rar

posted on 2013-08-05 12:27  啥孩子  阅读(1037)  评论(0)    收藏  举报