https://github.com/zytc2009/BigTeam_learning
分类: 嵌入式
2012-08-24 13:46:15
此文档是只是介绍如何调用sdk包,libcallservice是在android手机终端上开发视音频通话的第三方lib库。通过它开发人员很容易的在android手机上开发出视音频通话的客户端,而不用关心服务端的部署。如果你有什么不明白的可以给我留言,我会及时回复的。
此节概要介绍在开发android程序前做的准备工作。主要以在ubuntu上开发为例,windows开发大同小异。
1.1下载并安装Eclipse 1.2下载并安装ADT下边是ADT的一个在线安装地址
方法如下:
eclipse---->help---->Install New Software。
1.3下载android-sdk-linux_x86图1 1 eclipse 设置android-sdk路径
在eclipse中,指定android-sdk的路经。具体操作如下:Project--->Properties--->Android 指定android-sdk路径(如图1-1)。
1.4下载jdk
在环境变量PATH中加入你的jdk/bin路径。
至此,Android环境准备完成。
2导入libcallservice工程Libcallservie下载地址:
/flychat.html
打开eclipse开发环境,选择File--->Import(如图2-1)--->General--->Existing Projects into workspaces(如图2-2)--->select root directory--->browse--->选择libcallservice文件夹--->finished(如图)。
图 2 1 eclipse 导入工程-1
图 2 2 eclipse 导入工程-2
图 2 3 eclipse 导入工程-3
在eclipse中选中工程,然后点击F5刷新。程序导入完成。如果没有错误,程序就可以下载到手机上运行了。
程序运行主界面如下:
图表 2 4 程序主界面
主界面有两个输入框,上边的输入框填被叫的注册ID,如上图的666666。下边的输入框为主叫的注册ID,如上图的888888。 注意:ID号也就是你的用户的ID号,不能包含@和 - 字符,推荐用字母或者数字的组合,只要不重就行。
图表 2 5 程序主界面及menu菜单
填入主叫ID号入888888后,点击MENU菜单,选择regedit,在连网状态下,主界面会弹出toast,注册成功消息。其它情况会弹出注册失败消息。
填入被叫ID后,如果对方也已经注册的话(假设对方注册号为666666),主叫就可以点击call按钮,进行呼叫了。被叫此时会响铃,被叫端点击MENU菜单,选择accept,就可以接听了。
图表 2 6 点击more按钮弹出的界面
accept 表示接听通话按钮。
cancelorHungup表示挂断通话按钮,无论是在通话中挂断,还是在响铃阶段都可以用此啊按钮挂断。
Speaker :切换扬声器、话筒模式.
Mic: 打开、关闭麦克.
如果在通话中:点击menu菜单会出现以下菜单
Front/Rear Camera:切换前后摄像头。(如果存在前置摄像头的话)
Terminate call:挂断通话。
3视频通话程序的总体结构DialerActivity.java是程序的主界面示例代码。
VideoActivity.java 是视频通话界面的示例代码。
libcallservice.jar是视音频通话的jar包。
libs是视音频通话的动态库。
assets文件夹存放的是视音频通话模块的配置文档以及资源文件。
doc.tar.gz是 libcallservice.jar的接口文档说明。
AndroidManifest.xml是程序的配置清单文件。
4如何调用libcallservice.jar 4.1视音频通话模块初始化DialerActivity.java中的oncreate完成了视音频通话模块的初始化:
1、首先创建一个ICallService接口的实现。
代码:iCallService = NufrontFactoryImpl.instance().createICallService();
2、然后启动一个视音频通话服务
代码:iCallService.start(this);
3.注册视音频事件的监听
代码:iCallService.addICallListener(this);
iCallService.addIGlobalPhoneListener(this);
iCallService.addISipListener(this);
ICallListener监听功能:从开始通话到通话结束,发生的通话事件的回调。
IGlobalPhoneListener:sip注册事件的监听。注册成功与否的回调。
IsipListener:监听sip注册到服务器到状态,回调时客户端到sip服务器的连接中 断。
4.startAlarm(this);
启动一个定时器,定时发送keepalive。客户端与服务器的连接靠 keepalive来保 持。
5.iCallService.Register(sipUserName);
sip客户端的注册。
4.2视音频通话模块退出1.stopAlarm();
退出定时器。
2.iCallService.stop();
服务的退出。
3.finish();
DialerActivity界面的退出。
4.3通话模块呼出 4.3.1主叫接口1.iCallService.startCall(string callee);
callee为被叫号码。
2.startVideoActivity();
如果客户端支持视频,开启视频功能。
3.iCallService.switchSpeaker(true);
切换扬声器。
4.如果被叫接受了这次通话,主叫会接收到onAnswer()事件。
如果被叫没有接受,或者是其它原因呼叫不成功,会调用以下事件之一:
void onHungUp(HungUpType type,String remoteInfo);
void onBusyNow();
void onErrorNumberOrOffLine();
void onErrorOccur();
4.3.2被叫接口如果有飞蚂蚁电话呼入,会调用 onCallIn()事件。
1.iCallService.acceptCallIfIncomingPending();
被叫接通通话。
2.startVideoActivity();
如果客户端支持视频,开启视频功能。
3. iCallService.stopCurrCall();
挂断通话。
4.如果被叫没有接受,或者是其它原因呼叫不成功,会调用以下事件:
void onHungUp(HungUpType type,String remoteInfo);
void onErrorOccur();
VideoActivity.java 是视频通话界面的主界面:
1、iCallService.setRemoteView(remoteSurfaceView)
设置远端图像的显示位置。
2、iCallService.setLocalView(localCaptureSurfaceView);
设置本地图像的显示位置。
3、CallService.hasFrontCamera()
判断是否有前置摄像头。
4、 iCallService.switchCamera();
如果有两个摄像头的话,切换摄像头。
5、iCallService.toggleCamera();
打开关闭摄像头。
5视音频通话配置文件以及资源文件相关说明 5.1 assets/nufrontrc为配置文件配置文件重点字段说明:
[sip]
inc_timeout=40
***双方已经响铃,被叫如果四十秒中不接通通话,被叫主动挂断通话。
[cn]
company_name=北京新岸线网络技术有线公司。
company_name字段的值不能更改,否则程序无法运行。
oldphone_mono.wav、ringback.wav、rootca.pem为资源文件。
oldphone_mono.wav暂时没用。
Ringback.wav为主叫响铃文件,可以根据需要修改。
rootca.pem 为软件证书文件,不用修改。
android:name="CLOUDCHAT_APPKEY"
android:value="5029edf093445941abd63153" />
CLOUDCHAT_APPKEY是key。
5029edf093445941abd63153是value。
此字段的value值可以向SDk提供商获得。或者通过访问n的飞聊不可版块下载获得。
<service android:name="org.nufront.NufrontService" />
<receiver android:name="org.nufront.AlarmReceiver" />
<receiver android:name="org.nufront.NetworkManager">
org.nufront.NufrontService是libcallservice的服务。
org.nufront.AlarmReceiver是计时器,定时发送keepAlive使用。
org.nufront.NetworkManager接收网络事件。
这三个是必须要写的。
<uses-permission android:name="android.permission.INTERNET">uses-permission>
<uses-permission android:name="android.permission.RECORD_AUDIO">uses-permission>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS">uses-permission>
<uses-permission android:name="android.permission.CALL_PHONE">uses-permission>
<uses-permission android:name="android.permission.BOOT_COMPLETED">uses-permission>
<uses-permission android:name="android.permission.VIBRATE">uses-permission>
<uses-permission android:name="android.permission.CAMERA" />
是必须使用的user-permission.
5.4doc.tar.gz是 libcallservice.jar的详细接口文档说明如果对接口有疑问的,可查看doc内容。里边对每个接口都有详细说明,或者给我留言