ICS SIP Call移植

最近在移植ICS的sip call。现把移植经历分享一下。
sip call拨打电话过程跟正常拨打电话过程没什么两样。但是sip call需要有WiFi的支持。并且有sip server可以提供账户。
SipSettings.java是sip call的通话设置。ICS已经做好。只需要开启WiFi,可以添加账户。并可以选择允许接听电话否?

接下来,你就可以拨打电话了。下面说说拨打电话的过程。

1.首先,要打开sip call的权限。可以在.*.mk文件中。添加

 PRODUCT_COPY_FILES += \ 
 frameworks/base/data/etc/android.software.sip.xml:$(PRODUCT_OUT)/system/etc/permissions/android.software.sip.xml \
 frameworks/base/data/etc/android.software.sip.voip.xml:$(PRODUCT_OUT)/system/etc/permissions/android.software.sip.voip.xml

2.在DialpadFragment.java中。可以设置一个sip的拨号键。
 ->dialButtonPressed(),设置一个intent = new Intent(Intent.ACTION_CALL_PRIVILEGED,
                            Uri.fromParts("sip", number, null));
3.其他过程同ICS打电话过程一样,请参考我之前的ICS来电话,打电话过程。此处不再赘述。需要注意的是。在SipCallOptionHandler.java中createSipPhoneIfNeeded()会创建并注册sip phone。如何没有创建,需要检查PhoneApp.java中是否需要创建。
如果没有意外,那么恭喜你,sip call已经可以拨打通话了。


接听电话过程。
首先需要在sip setting中,将允许接听电话的选项勾选上。
1,在SipBroadcastReceiver.java中。onReceive()中当勾选允许接听以后,action.equals(SipManager.ACTION_SIP_ADD_PHONE)会创建并注册一个sip phone.
2.当电话来之后,会收到ACTION_SIP_INCOMING_CALL广播。调用
 ->takeCall()
3.SipPhone.java
 ->canTake()
 如果没有意外,恭喜你。sip可以接听电话了。

你可能感兴趣的:(server,null,action,电话)