1个答案 按时间排序 按投票排序
-
Skype4Java架构
Skype4Java提供了一个较为完善的开发体系,使您可以非常容易地使用Java
开发Skype外壳程序。Skype插件程序与Skype的通信都是基于一些文本命令来完
成。
因此,要想开发Skype的插件应用,就需要依靠不同操作系统平台的系统调
用,发送Skype平台的相应命令来实现。
Skype4Java在最底层,也是通过操作系统的系统调用来完成消息的发送。针对
异构平台,Skype4Java提供了不同平台的底层实现,而Skype4Java的使用者不用
管具体的操作系统平台。因为抽象父类Connector类的静态方法getInstance()具体
判断当前操作系统是什么平台,采用简单的工厂模式,返回相应平台的子类对象,
如OSXConnector.,LinuxConnector, WindowsConnector, Win32Connector等,这
些都是Connector类的子类。Connector及其子类即实现了一些系统调用的方法,其
中被重载的一系列execute()方法最终调用不同子类的sendCommand (String
command)方法来实现了不同平台的消息发送。
而对于一些数据的接收和处理全局都是采用事件监听的机制(观察者模式),
用于完成数据的接收,处理机制的调用,错误的处理等Skype平台利用错误消息机
制提供了出错的处理。因此,在我们的错误处理中,只需分析错误消息的内容,然
后通过观察者调用相应的处理机制即可。
Skype4Java的实现是按照分层的方法来设计的,
Ø Skype4Java命令发送示例
Skype提供了几种形式的开发接口给不同的语言,但有一个共同点就是,都是通过相同的命令(命令由命令标识符来标识,主要是在确认一个详细的请求命令以及响应消息时用的,每个命令及响应的消息ID是一样的,而且是唯一的),通过这样的方式来操作Skype。对于Skype4Java来说,命令的发送都是通过执行SKYPE4Java的抽象连接层(详细说明见后面),其中有一个核心类Connector的核心方法,原型为protected final String execute(final String command, final String[] responseHeaders, final boolean checkAttached),这个方法体里包含了保证与SKYPE处于连接状态,如果没连接会连接上,并且激发各种事件以及注册对这事件感兴趣的监听器。
public abstract class Connector {
……
protected final String execute(final String command, final String[] responseHeaders, final boolean checkAttached) throws ConnectorException {
System.out.println("...准备执行命令...");
//先检验这次需要发送的命令,保证不为空
ConnectorUtils.checkNotNull("command", command);
ConnectorUtils.checkNotNull("responseHeaders", responseHeaders);
//输出这次需要发送的命令的有关内容
System.out.println("command: ->"+command);
if (checkAttached){
//在发送之前得先保证客户端与Skype Client处于连接状态
assureAttached();
}
//共享锁,因为这是一种请求-响应式的交互,正在执行此命令时要锁住程序专门
//处理这个命令的发送
final Object lock = new Object();
//命令的响应
final String[] response = new String[1];
//连接监听器的定义
ConnectorListener listener = new AbstractConnectorListener() {
//当命令发送后(下面的)完释放锁,客户程序将可以处理接收到的命令响应消
//息,查看此命令的执行结果:System.out.println("response: <-"+message);
public void messageReceived(ConnectorMessageEvent event) {
String message = event.getMessage();
System.out.println("response: <-"+message);
for (String responseHeader : responseHeaders) {
if (message.startsWith(responseHeader)) {
response[0]=message;
synchronized (lock) {
lock.notify();
}
return;
}
}
}
};
http://www.diybl.com/course/3_program/java/javajs/200797/70049.html
2009年4月15日 22:43
相关推荐
Webplugin视频插件是一款专为增强网页视频播放体验而设计的软件组件。它主要用于解决浏览器对某些特定视频格式不支持的问题,或者提供额外的功能,如高清播放、快进快退、弹幕互动等。在互联网内容日益丰富的今天,...
【压缩包子文件的文件名称列表】中的"TomcatPlugin"可能包含了该插件的安装文件、文档、示例或者其他相关资源。通常,这样的压缩包会包含以下内容: 1. **插件安装文件**:如`.jar`或`.zip`格式,用于在Eclipse中...
综上所述,大华摄像头直连插件webplugin.exe是一个功能强大的工具,专为实时视频监控和管理设计。它不仅提供基础的视频流控制,还具备截图、录像和缩放等高级功能,并且具有开发扩展性,便于开发者根据需求进行定制...
用户可以通过编写插件脚本或利用NotePad++的其他功能,进一步定制和扩展AnalysePlugin的功能,以满足个性化需求。 6. **易用性**:AnalysePlugin的界面简洁,操作直观,用户无须复杂的配置即可上手使用。这对于那些...
《大华摄像头直连插件WebPlugin及其文档说明详解》 在现代的监控系统中,摄像头的直连功能显得尤为重要,特别是在远程监控和实时视频流传输的场景下。大华作为国内知名的安防设备提供商,其推出的摄像头直连插件Web...
Maven 使用 tomcat8-maven-plugin 插件 Maven 是一个流行的构建自动化工具,它可以帮助开发者自动完成项目的编译、测试、打包、部署等任务。 Tomcat 是一个流行的 Web 服务器,Maven 提供了一个插件 tomcat8-maven-...
这32个常用的Origin.Plugin插件旨在扩展Origin的基本功能,以满足用户在数据分析、图形绘制以及特定任务处理上的需求。以下将详细介绍这些插件可能涉及的知识点: 1. 数据分析:Origin.Plugin中的插件提供了丰富的...
4. **IDE 支持**:Lombok-plugin 插件使得 IDEA 能够在编辑器中正确显示和处理 Lombok 注解的类。例如,它可以提供代码提示,避免因缺少 getter 或 setter 方法而出现的编译错误。此外,调试时也能正确地看到由 ...
大华摄像头web3.0二次开发 webplugin.exe视频插件。。
**Eclipse Scala Plugin 插件测试可用功能** Scala是一种强大的静态类型编程语言,它结合了面向对象和函数式编程的特点,被广泛应用于开发高性能、可维护的软件。Eclipse Scala Plugin是Eclipse集成开发环境(IDE)...
由于Mybatis Log Plugin现在已经收费了,所以我们...如果你不清楚或者不了解 Mybatis Log Plugin 是什不妨听我解释一下:Mybatis Log Plugin是控制台 sql 打印插件 帮助我们打印sql 更清楚 更清晰的打印执行的sql语句
idea插件 控制台sql idea插件 控制台sql idea插件 控制台sql
最新Unity插件SteamVR Plugin steamvr_2_8_0.unitypackage最新Unity插件SteamVR Plugin steamvr_2_8_0.unitypackage最新Unity插件SteamVR Plugin steamvr_2_8_0.unitypackage最新Unity插件SteamVR Plugin steamvr_2_...
一款免费的idea插件,实现快速在dao层接口和xml方法之间进行切换,在Settings->plugins->install plugin from disk后选择该压缩包 安装重启idea即可
使用jQuery开发Plugin插件指南
64位的notepad++和部分32位 没有PluginManager插件,所以提供PluginManager.dll下载
网上资源大多是针对32位的,这里提供一份64位的,实测可用在v7.2.3版本的Notepad++上。把压缩包中ComparePlugin.dll放入Notepad++的安装路径根目录即可。启动Notepad++自动加载该插件。Clt+Alt+C对比当前打开的两个...
在"自定义plugin插件实现phonegap与Android交互"这个主题中,我们主要关注的是如何通过编写自定义插件来打通JavaScript和Android之间的通信壁垒。在PhoneGap中,Plugin是连接Web层和Native层的桥梁,它们是用Java...
5. **kf-icon.png**:这是公式插件的图标文件,通常显示在ueditor的工具栏上,用户可以通过点击这个图标来打开公式编辑对话框。 6. **kityformula**:这个文件或文件夹可能是整个公式插件的核心库,包含了处理公式...
IDEA插件集合,提供几个常用的插件,省去下载安装的麻烦,目的只是跟大家提供一个方便. Alibaba Java Coding Guidelines idea-gitignore FindBugs-IDEA-1.0.1 LiveEdit MavenRunHelper MyBatis plugin 3.154 tomcat ...