【Android应用开发】-(23)Android SIP 支持
来源:互联网 发布:金蝶软件标准版教程 编辑:程序博客网 时间:2024/05/13 10:30
一、什么是sip?
请移步SIP
二、Android中如何使用sip?
目前比较完善的Sip应用:Sipdroid, Demo: android-sdk-windows\samples\android-9\ SipDemo
三、系统不支持sip?
Android自2.3之后就提供了SIP功能,SIP相关的API在目录frameworks/base/voip/java/android/net/sip中,存在android.net.sip包中。这里是解决不支持SIP的整个过程, 要看结果的直接移步文章最后。
在操作SIP之前必须获得SipManager的实例:
SipManager.newInstance(Context);
这里,发现有些设备得到的instance为空。找到SipManager.java中的newInstance方法
/** * Creates a manager instance. Returns null if SIP API is not supported. * * @param context application context for creating the manager object * @return the manager instance or null if SIP API is not supported */ public static SipManager newInstance(Context context) { return (isApiSupported(context) ? new SipManager(context) : null); } /** * Returns true if the SIP API is supported by the system. */ public static boolean isApiSupported(Context context) { return context.getPackageManager().hasSystemFeature( PackageManager.FEATURE_SIP); }
通过调试,发现hasSystemFeature为空。继续深入,查看在PackageManager.java的方法hasSystemFeature,尽然是抽象的。
/** * Check whether the given feature name is one of the available * features as returned by {@link #getSystemAvailableFeatures()}. * * @return Returns true if the devices supports the feature, else * false. */ public abstract boolean hasSystemFeature(String name);
其中这个方法在services/java/com/android/server/pm/ PackageManagerService.java中实现了。
public boolean hasSystemFeature(String name) { synchronized (mPackages) { return mAvailableFeatures.containsKey(name); } }
在成员mAvailableFeatures中没有查找到PackageManager.FEATURE_SIP,返回flase。所以无法创建SipManager对象。在PackageManagerService类中,成员变量mAvailableFeatures的值是通过读取/system/permissions下的xml文件进行设置的。通过查找常量PackageManager.FEATURE_SIP很容易找到两个和SIP相关的xml文件,在目录frameworks/base/data/etc/下。根据以往的经验,这两个文件既然存在,但/system/permissions目录下没有。肯定是没有拷贝。
继续查找,发现在device目录下的Vending.mk文件中。将frameworks/base/data/etc/下的两个和sip相关的文件拷贝添加进去make即可。
PRODUCT_COPY_FILES += \ device/amlogic/g04ref/tablet_core_hardware.xml:system/etc/permissions/tablet_core_hardware.xml \ frameworks/base/data/etc/android.hardware.camera.front.xml:system/etc/permissions/android.hardware.camera.front.xml \ ... frameworks/base/data/etc/android.software.sip.voip.xml:system/etc/permissions/android.software.sip.voip.xml \ frameworks/base/data/etc/android.software.sip.xml:system/etc/permissions/android.software.sip.xml
如果不编译系统,直接将两个文件拷贝到/system/permissions目录下也是可以的。
原创文章,转载请注明出处:http://blog.csdn.net/tangcheng_ok
- 【Android应用开发】-(23)Android SIP 支持
- Android SIP开发资源
- Android应用开发:Android 多屏幕支持
- Android 开发 voip/sip 程序
- Android应用开发之(支持各种密度的屏幕)
- android sip 开发中SipManager.newInstance()return null 解决方法
- 开发文档:移动应用支持微信小程序类型分享(Android应用)
- Android 原生应用开发得到Go语言支持
- Android新增C/C++语言支持:应用开发更快
- Android 应用开发支持不同的语言国际化操作
- Kotlin 为何能成为 Android 官方支持开发语言及Kotlin开发Android应用初体验
- Android启动其他应用(支持跳转应用市场下载)
- Android-Session Initiation Protocol(SIP)
- SIP for android
- android sip协议框架
- android sip 简介
- Android SIP 网络通话
- Android 中的SIP协议
- 基本数据类型包装类
- VC6.0与matlab混合编程( 脱离matlab运行环境)方法
- VSS设置默认登录用户
- VC中使用GetModuleFileName获取应用程序路径(整理)
- 日省其身,有则改之,无则加勉!
- 【Android应用开发】-(23)Android SIP 支持
- Codeforces-134D2A
- P2P协议与P4P协议
- _CrtSetBreakAlloc
- java.lang.reflect.InvocationTargetException
- MFC单文档中修改窗口标题和标题栏图标
- 青春划过指尖
- hdu 1010 Tempter of the Bone
- c++ 虚继承详解