Android 自带Sipdemo的使用讲解

万分感谢!!我这稍作些许修改
目录 三:打电话四:接受电话五:接受到对方挂电话的状态六:主动挂电话一:SIP 接口

Android 自带Sipdemo的使用讲解

文章插图
一: 权限

权限说明
如果你开发一个用到SIP API的应用程序,记住它需要.3(API9)或者更高版本的平台的支持 。所以在你的设备上要运行.3(API9)或者更高的版本,并不是所有的设备都提供SIP的支持 。
ps:并不是所有的项目都需要写这句话,因为越高版本的手机越提示你这句话使用上有问题,所有可加可不加 。
二:注册 1.初始化
SipManager manager = SipManager.newInstance(this);//很多手机这里依然会返回null,原因就是不支持SIP//之后会说PJSIP,比较通用if (manager == null) {return;}
2.
//uesrname表示注册用户名,domain表示域,实际就是sip服务器ipSipProfile.Builder builder = new SipProfile.Builder(username, domain); builder.setPassword(password); //注册用户密码SipProfile me = builder.build();//添加一个本地的过滤器,用于接受电话//构造一个PendingIntent对象,这样当sip Service收到一个通话请求时,//SipService会调用PendingIntent的send方法发送相应广播消息给调用者,也就是当前的SipProfile对象.Intent i = new Intent();i.setAction("android.SipDemo.INCOMING_CALL");PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, Intent.FILL_IN_DATA);//此处就是用于注册一个账户到sip服务器manager.open(me, pi, null);
【Android 自带Sipdemo的使用讲解】3. 注册状态监听
//注册一个监听器,用于获取注册账户时的通知状态,当然也可以不注册.manager.setRegistrationListener(me.getUriString(), new SipRegistrationListener() {public void onRegistering(String localProfileUri) { //正在注册}public void onRegistrationDone(String localProfileUri, long expiryTime) {//注册成功}public void onRegistrationFailed(String localProfileUri, int errorCode,String errorMessage) {//注册失败}});
三:打电话
public void initiateCall(String Adress) {try {SipAudioCall.Listener listener = new SipAudioCall.Listener() {//准备打电话@Overridepublic void onReadyToCall(SipAudioCall call) {Logger.i("onReadyToCall---->");}@Overridepublic void onRinging(SipAudioCall call, SipProfile caller) {Logger.i("onRinging---->");}@Overridepublic void onCallEstablished(SipAudioCall call) {Logger.i("onCallEstablished---->");call.startAudio();call.setSpeakerMode(true);call.toggleMute();}@Overridepublic void onCallEnded(SipAudioCall call) {Logger.i("onCallEnded----start");handler.post(new Runnable() {@Overridepublic void run() {ToastView.newInstance(mContext).setToastMessage("通话结束");}});}};call = MyApplication.mSipManager.makeAudioCall(mSipProfile.getUriString(), Adress + "@" + ip, listener, 30);call.toggleMute();} catch (Exception e) {if (mSipProfile != null) {try {mSipManager.close(mSipProfile.getUriString());} catch (Exception ee) {ee.printStackTrace();}}if (call != null) {call.close();}}}
的格式
xxx@ip 例如 202@192.198.1.101 (目标id+sip的服务ip地址)