Linphone探索:1.Linphone官⽅源码探究
项⽬地址:
1 . org.linphone
AboutFragment.java:关于界⾯⽚段。
AccountPreferencesFragment:⽤户参数界⾯⽚段。
BandwidthManager:带宽管理器。
更新当前profile的带宽设置,当带宽不⾜以⽀持视频时,设置⾳频带宽最⼤为40kbits/s,当带宽⾜以⽀持视频时不限制⾳频最⼤带宽。
BluetoothManager:蓝⽛管理器。
BootReceiver:继承⾃BroadcastReceiver的类,⽤于在设备启动时⾃动启动LinphoneService。
CallActivity:通话界⾯。
CallAudioFragment:通话⾳频界⾯。
CallIncomingActivity:来电界⾯。电话的接听,挂断。
当前没有活动电话的情况下:可以通过按键挂断和接听来电。
通过LinphoneCoreListenerBase类,复写callState(电话⽅法)监听liphone内核电话状态,如果电话已经被挂断(分两种情况,对⽅挂断,本⽅挂断)则挂断电话。如果linphone内核已经检测到⾳频流(这⾥是铃声的流)则使linphone内核打开⼿机的喇叭,此时来电铃声就会播放。
CallManager:通话管理。
inviteAddress:向某个地址发起invite 请求
reinviteWithVideo:向当前的⾳频通路发起视频的invite请求,若当前带宽太窄或当前通路已经有视频流,
这不发起invite请求。
reinvite:根据当前的profile向当前通路发起invite请求。
updateCall:改变当前视频通话的视频尺⼨,调⽤该⽅法将会在重新建⽴流媒体通道和重新设置电话参数时重新打开摄像头。
CallOutgoingActivity:拨出电话界⾯。
CallVideoFragment:视频通话界⾯。
在当前的Activity中放置了⼀个继承⾃viewsurface的控件,⽤来绘制视频界⾯。
ChatFragment:短信息界⾯。⼀个类似⼿机短信的界⾯。
ChatListFragment:短消息列表界⾯。
ChatMessage:短信的数据封装类。定义了⼀条短信应该有的数据。
ChatStorage:短信的存储类。使⽤sqlite数据库保存短信。
Contact:联系⼈的数据封装类。
ContactDetailsFragment:联系⼈详情界⾯。
ContactEditorFragment:联系⼈编辑界⾯。
ContactsListFragment:联系⼈列表界⾯。
ContactsManager:联系⼈管理。
ContactsManager:联系⼈管理。
DialerFragment:拨号界⾯。
该界⾯包含了拨号号码的显⽰。
该界⾯直接发起了拨号动作:newOutgoingCall⽅法直接发起了拨号动作。
EmptyFragment:空界⾯。
FragmentsAvailable:⽚段界⾯切换到业务逻辑控制。设定在某些情况下只能显⽰某些特定的Fragment界⾯。HistoryDetailFragment:历史通话记录详情界⾯。(针对某个特定的号码的详情)
KeepAliveHandler:保持linphone core和linphone manager活动的类,监听所有的⼴播,若linphone manager已经被销毁或者没有被创建,则刷新参数,并且向服务器再次发起注册动作。
KeepAliveReceiver:保持存活(?在线?)的接收器。如果在收到ACTION_SCREEN_ON(屏幕点亮)的⼴播后,LC向服务器发送⼩的UDP包,以维持UDP NAT的会话。
LinphoneActivity:Linphone主界⾯。
LinphoneContact:Linphone联系⼈。
LinphoneException:Linphone异常。
LinphoneLauncherActivity:Linphone软件启动时的第⼀个界⾯。
LinphoneManager:Linphone管理器。
启动管理:linphone内核(core),
如何阅读java源码⽂件管理:来电铃声、信息铃声、暂停铃声、配置⽂件
在线状态:在线,离线。
⽹络状态:⽹络状态发⽣变化。
通话管理:拨出,挂断,DTMF,接听。
短消息:状态
设备管理:摄像头,
编码器管理:⾳、视频编码器的检测
通道管理(Tunnel):
⾳量管理
⾳频通道:喇叭或者蓝⽛
铃声管理:启动或者停⽌
LinphoneNumberOrAddress:Linphone号码和地址。
LinphonePreferences:Linphone参数设置。
LinphoneService:Linphone后台服务。
初始化LinphoneManager。
通过LinphoneManager启动C库的libLinphone。
LinphoneManager的状态发⽣变化时产⽣反应。
将GUI应有的变化传递给GUI的。
LinphoneUtils:Linphone⼯具,都是静态⽅法,⽤户获取各种参数的⼯具库。
NetworkManager:⽹络管理器。通过⼴播监听⽹络的变化状况,并将连接状况相Linphone core汇报。
OpenGLESDisplay
PhoneStateChangedReceiver:监听⼿机状态的变化,主要是⼿机的打电话的状态的改变。
当⼿机在振铃(普通电话,不是SIP电话)是,要暂停所有的SIP电话。
当普通电话在休眠时则允许SPI电话的各种业务。
PreferencesMigrator:参数变形(通过这个类可以修改LinphonePreferences的参数,并且将其保存在⽂件中)。SettingsFragment:设置界⾯。
StatusFragment:状态界⾯。
显⽰视频、⾳频上下⾏带宽
显⽰⾳频、视频编码⽅式
UIThreadDispatcher:UI线程调度。
2 . org.linphone.assistant
AssistantActivity:助理界⾯。通过按键等判断选择不同的界⾯。
AssistantFragmentsEnum:助理界⾯枚举。
WELCOME:欢迎界⾯
CREATE_ACCOUNT:创建账户
CREATE_ACCOUNT_ACTIVATION:激活账户
LINPHONE_LOGIN:Linphone 登陆界⾯
LOGIN:登陆界⾯
REMOTE_PROVISIONING:远程设置
ECHO_CANCELLER_CALIBRATION:回声消除校正设置CreateAccountActivationFragment:创建账户完成界⾯
CreateAccountFragment:创建账户第⼀界⾯
EchoCancellerCalibrationFragment:
LinphoneLoginFragment:
LoginFragment:
RemoteProvisioningActivity:
-
RemoteProvisioningFragment:RemoteProvisioningLoginActivity:储存账户-点击按钮后储存
WelcomeFragment: