Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3398279
  • 博文数量: 864
  • 博客积分: 14125
  • 博客等级: 上将
  • 技术积分: 10634
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-27 16:53
个人简介

https://github.com/zytc2009/BigTeam_learning

文章分类

全部博文(864)

文章存档

2023年(1)

2021年(1)

2019年(3)

2018年(1)

2017年(10)

2015年(3)

2014年(8)

2013年(3)

2012年(69)

2011年(103)

2010年(357)

2009年(283)

2008年(22)

分类: 嵌入式

2012-08-24 13:46:15

此文档是只是介绍如何调用sdk包,libcallservice是在android手机终端上开发视音频通话的第三方lib库。通过它开发人员很容易的在android手机上开发出视音频通话的客户端,而不用关心服务端的部署。如果你有什么不明白的可以给我留言,我会及时回复的。


1。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.gzlibcallservice.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监听功能:从开始通话到通话结束,发生的通话事件的回调。

IGlobalPhoneListenersip注册事件的监听。注册成功与否的回调。

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();


4.4视频通话界面

VideoActivity.java 是视频通话界面的主界面:

1iCallService.setRemoteView(remoteSurfaceView

设置远端图像的显示位置。

2iCallService.setLocalView(localCaptureSurfaceView);

设置本地图像的显示位置。

3CallService.hasFrontCamera()

判断是否有前置摄像头。

4 iCallService.switchCamera();

如果有两个摄像头的话,切换摄像头。

5iCallService.toggleCamera();

打开关闭摄像头。

5视音频通话配置文件以及资源文件相关说明 5.1 assets/nufrontrc为配置文件

配置文件重点字段说明:

[sip]

inc_timeout=40

***双方已经响铃,被叫如果四十秒中不接通通话,被叫主动挂断通话。

[cn]

company_name=北京新岸线网络技术有线公司。

company_name字段的值不能更改,否则程序无法运行。


5.2 资源文件说明

oldphone_mono.wavringback.wavrootca.pem为资源文件。

oldphone_mono.wav暂时没用。

Ringback.wav为主叫响铃文件,可以根据需要修改。

rootca.pem 为软件证书文件,不用修改。


5.3AndroidManifest.xml文件说明

android:name="CLOUDCHAT_APPKEY"

android:value="5029edf093445941abd63153" />


CLOUDCHAT_APPKEYkey

5029edf093445941abd63153value


此字段的value值可以向SDk提供商获得。或者通过访问n的飞聊不可版块下载获得。


<service android:name="org.nufront.NufrontService" />

<receiver android:name="org.nufront.AlarmReceiver" />

<receiver android:name="org.nufront.NetworkManager">


org.nufront.NufrontServicelibcallservice的服务。

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.gzlibcallservice.jar的详细接口文档说明

如果对接口有疑问的,可查看doc内容。里边对每个接口都有详细说明,或者给我留言

阅读(4133) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~