My favorites | Sign in
Project Home Downloads Wiki Issues Source
Search
for
1gcommander  

Featured
Updated Aug 18, 2010 by z.bai...@gmail.com

1gcommander - 用程序控制亦歌播放

1gcommander是一个很小的swf(不到4KB)程序,它通过LocalConnection什么是LocalConnection?)和正在运行的亦歌程序交互, 并向外提供“播放/暂停”、“下一首”、“静音”等接口。因此,将1gcommander.swf嵌入本地程序,即可实现对亦歌播放器的各种控制功能。

同时,1gcommander还可以监听亦歌的运行状态,如歌曲进度、当前歌词等。

1gcommander位于http://commander.1g1g.com/commander.swf,可以将其下载后嵌入程序,也可以在代码中直接使用该URL引用此swf。在已有的亦歌扩展应用中,很多都利用了1gcommander对亦歌播放进行控制,例如亦歌桌面版亦歌热键工具等。

1gcommander的源代码在此。以下是API的详细说明和使用示例。


1gcommander的API说明

1gcommander提供两种和正在运行的亦歌交互的方法:一是command()命令,它向亦歌发出某操作命令(如下一首),正常情况下,亦歌会执行该命令;二是playerEventDispatcher()方法,在亦歌运行过程中,会不断调用外部的playerEventDispatcher()方法报告当前运行的各种状态(例如当前歌曲的播放进度),因此外部程序实现这一方法后,即可即时监听亦歌的状态,并作出相应处理。

command()的详细说明

command()命令的格式为command(commandName:String)或command(commandName:String, argument:String)。对于"playPause"、"next"等命令,不需附加参数,使用command(commandName)即可;对于"play"等命令,需给入相关参数,使用command(commandName, argument)。

以下是支持的所有commandName和调用方式,commandName是大小写敏感的。

  • command("is1g1gPlayerOpen") 检测当前是否有亦歌播放器打开,返回值为boolean
  • command("playPause") 播放/暂停
  • command("next") 下一首歌曲
  • command("volumeOnOff") 静音/恢复声音
  • command("volumeUp") 增大音量
  • command("volumeDown") 减小音量
  • command("changeVolume", value) 调整音量,value在0到1之间
  • command("play", song) 播放指定歌曲,song最好以“歌曲名-歌手” 或者 "#songId" 的形式给出
  • command("addToPlayList", song) 把指定歌曲加入到播放列表中,song最好以“歌曲名-歌手” 或者 "#songId" 的形式给出
  • command("setSearchText", query) 搜索,query为搜索关键词
  • command("lockCurrent") 锁定当前播放歌曲
  • command("saveCurrent") 收藏当前播放歌曲
  • command("changeColorStyle","colorStyle") 改变当前播放器的颜色方案, colorStyle可选的参数有lightblue,red,blue,black,google
  • command("openLyricWindow") 打开歌词窗口, 默认是如果打开状态,就关闭,如果是关闭状态就打开,也可以用另一个参数控制它
    1. command("openLyricWindow", {flag:"open"}) - 不论任何情况都打开歌词窗口
    2. command("openLyricWindow", {flag:"close"}) - 不论任何情况都关闭歌词窗口
  • command("getStatus", state) 获取当前亦歌的播放状态。实际上,它促使亦歌调用一次playerEventDispatcher(),发出当前state所指的状态。state的可用值见下playerEventDispatcher()的详细描述
  • command("getStatus", {type:state, callBackInfo:object}) 重载的getStatus方法,同样为促使亦歌调用一次playerEventDispatcher(),发出当前state所指的状态。state的可用值见下playerEventDispatcher()的详细描述。此方法第二个参数为Object,除type是state外,另有callBackInfo参数,当给入callBackInfo时,回调方法playerEventDispatcher()的参数body中也会含有此callBackInfo属性,其值与command()方法给入的相同。调用者可利用此参数在command()与playerEventDispatcher()之间传递数据

playerEventDispatcher()的详细说明

嵌入1gcommander的程序,如果实现了playerEventDispatcher()方法,即可监听亦歌的运行状态,并作出相应处理。playerEventDispatcher()的格式为playerEventDispatcher(type:String, body:Object)。嵌入1gcommander的程序可以通过判断不同的type,来进行有针对性的操作。

注意:外部程序对playerEventDispatcher()的实现必须轻且快(不占用大量CPU、内存等资源并且快速返回),否则将影响亦歌的正常运行!

以下是所有可用的type及其对应body的格式,type是大小写敏感的。

  • {type:"connect"} 获得连接。当1gcommander连接到亦歌播放器时发出
  • {type:"disconnect"} 连接断开。当1gcommander与亦歌播放器的连接断开(例如亦歌播放器被用户关闭)时发出
  • {type:"colorStyle", body:{colorStyle:String}} colorStye的可取值包括"lightblue"、"red"、"blue"、"black"、"google"。其值发生变化时,或command("getStatus", "colorStyle")被调用时发出
  • {type:"playerState", body:{state:String}} 播放器状态。state的可取值包括"playing"、"paused"、"loading"、"stop"。其值发生变化时或command("getStatus", "playerState")被调用时发出
  • {type:"playhead", body:{currentTime:double, totalTime:double}} 歌曲播放进度。currentTime为歌曲当前播放时间,以秒为单位;totalTime为歌曲已经下载的总时间,以秒为单位。每秒钟发出一次;command("getStatus", "playhead")被调用时也会发出
  • {type:"currentSongInfo", body:{name:String, singer:String, album:String, remark:String}} 当前播放歌曲信息。name为歌名;singer为歌手;album为歌曲所在专辑;remark为用户收藏歌曲时所注分类标签,多个分类标签时用英文逗号隔开。其值发生变化时,或command("getStatus", "currentSongInfo")被调用时发出
  • {type:"volume", body:{volume:double}} 音量。volume取值在0到1之间。其值发生变化时,或command("getStatus", "volume")被调用时发出
  • {type:"playMode", body:{mode:String}} 播放器的播放模式。mode的可取值包括"normal"、"single"、"fixed"。其值发生变化时,或command("getStatus", "playMode")被调用时发出
  • {type:"lrc", body:{lrc:String}} LRC歌词。其值发生变化时,或command("getStatus", "lrc")被调用时发出
  • {type:"lyricSentence", body:{lyricSentence:String}} 当前演唱歌词句。其值发生变化时,或command("getStatus", "lyricSentence")被调用时发出
  • {type:"display", body:{text:String}} 播放器的当前播放内容。当歌曲暂停或者切换歌曲时,text为当前播放歌曲的歌名和歌手;其他时候,text在歌曲演唱时为当前演唱歌词句,在更换歌曲时为当前播放歌曲的歌名和歌手。其值发生变化时,或command("getStatus", "display")被调用时发出
  • {type:"message", body:{text:String}} 播放器显示顶部信息时调用发出当前显示的文字。其值发生变化时,或command("getStatus", "message")被调用时发出
  • {type:"userInfo", body:{name:String}} 用户信息,当前仅含有用户名。用户登录成功、注销成功或command("getStatus", "userInfo")被调用时发出


1gcommander的使用示例

当前绝大多数语言都支持嵌入swf(swf文件或指向swf文件的网络链接)并对其进行操作。以下是一个将1gcommander嵌入网页并使用javacript操作的示例。如果您对使用1gcommander有任何问题,请写信与我们联系(1g1g.service@gmail.com),或者在亦歌吧中告诉我们。

将1gcommander嵌入页面并使用javacript操作的示例


Sign in to add a comment
Powered by Google Project Hosting