技术开发 频道

Lotus Sametime开发入门


Meeting类服务

1.Application Share服务(AppShareService):共享桌面

    到此为止,我们已经实现了登录、查找用户、和实时交谈的功能,接下来编写Application Share的代码。它允许几个在线的用户之间共享、操作某一个用户机器上的桌面或程序。正如介绍Place时提到的,Application Sharing 和下面要介绍的Whiteboard实际上都属于Place中的Activity。开发人员需要进入到一个Place中,添加一个特定类型的Activity, 然后才能进入后续操作。

步骤一:创建Application Share Service

meetingFactory = new MeetingFactoryComp(session,null,null,null); appShareService = new AppShareComp(session);

    MeetingFactoryComp用于维护到Server的连接,这些连接会被Application Sharing, Whiteboard,Audio/Vedio等组件所使用,所以必须创建一个MeetingFactoryComp实例。注意这里和上述的Service用法有所不同,并不是通过session.getCompApi()方法来获取,而是直接"new"一个组件服务。

步骤二:创建Place对象

    在Places服务中已经介绍过,略

步骤三:添加PlaceListener,进入到Place

    在Places服务中已经介绍过,略

步骤四:添加AppShare Activity

    在PlaceHandler的entered()中,我们增加了一个Activity。

public void entered(PlaceEvent event) { Place place = event.getPlace(); //增加一个AppShare的Activity place.addActivity(AppShare.APPSHARE_ACTIVITY_TYPE, null); }

步骤五:操作AppShare对象

    当Activity被成功添加以后,PlaceHandler的activityAdded()方法会被调用,在该方法中可以获得AppShare对象,并且增加一个AppShareListener。这个Listener会通知AppShare对象是否可以使用了。

    方便起见,我们假设用户A的机器桌面将要被共享,而用户B的将要显示、操作用户A的桌面。 先来看用户A机器上的代码:

public class PlaceHandler extends PlaceAdapter { …… public void activityAdded(PlaceEvent event) { //Activity 已经成功的增加了,获得在place中的一个AppShare对象 AppShare appShare = appShareService.getAppShareForPlace(event.getPlace()); appShare.addAppShareListener(new AppShareServerHandler()); } …… } class AppShareServerHandler extends AppShareAdapter { public void appshareAvailable(AppShareEvent event) { //创建一个ShareWindow对象,由它来负责共享整个桌面 ShareWindow window = appShare.createDesktopWindow(); window.share( ShareWindow.HIGH_PRIORITY, ShareWindow.FRAMED_CONTROL_BUTTONS, "Share desktop example", "Stop sharing desktop", "Allow control desktop"); window.allowRemoteControl(true); } }

    如果运行成功,在用户A的机器上会出现下图所示的工具条,允许用户进行控制

 

    对于用户B来讲,只需要改变AppShare对象的Listener即可

……
appShare.addAppShareListener(new AppShareClientHandler ()); …… class AppShareClientHandler extends AppShareAdapter { public void appshareAvailable(AppShareEvent event) { //客户端程序UI对象,该对象能够显示远程机器的桌面 Component remoteDesktop = appShare.getViewableComponent(true); //可以控制远程的应用程序或桌面 appShare.controlRemoteApp(true); //添加到一个frame中即可 Frame frame = 创建一个Frame ; frame.add(remoteDesktop); } }

    如果运行成功,则用户B的机器上就能显示用户A的桌面了。

    本小节详细的代码参见示例程序AbstractDesktopSharing,DesktopSharingHost和DesktopSharingViewer。

2.Whiteboard服务(WhiteboardService)

    Whiteboard Service提供一个虚拟的"白板",多个用户可以在其中进行基本的图形操作。它的使用方法和Application Sharing Service非常类似。读者可以自行实现。

0
相关文章