在android中检测传入的视频通话

时间:2013-09-05 15:04:09

标签: java android reflection

我想知道如何在Android设备上检测传入的视频通话?实际上有很多关于检测来电的文档,但我找不到任何关于在an​​droid中检测传入原生视频通话的信息​​? 我找到了三星Phone.apk的源代码,并找到了检测VideoCall的方法localConnection.getCall().isVideoCall()this.mPhone.getForegroundCall().isVideoCall() 但是此方法需要导入com.android.internal.telephony.*,并且第三方应用程序不允许这样做 我认为这个类需要使用反射 那你可以告诉我这个吗?


对不起,我说英语不太好,但我想你了解我。

3 个答案:

答案 0 :(得分:2)

就像@Ankit说的那样你可以像AutoAnswer代码一样使用iTelephony,但是你必须在this文件中添加一行(你必须把它放在你的项目上):

/**
 * Return TRUE, if current call is video call
 * First active call has priority
 */
boolean isVideoCall();

然后你可以像这样使用它:

private Boolean isVideoCall(Context context) {

    Class<?> c;
    try {
        c = Class.forName(manager.getClass().getName());
        Method m = c.getDeclaredMethod("getITelephony");
        m.setAccessible(true);
        telephonyService = (ITelephony) m.invoke(manager);

    return telephonyService.isVideoCall();
    } catch (Exception e) {
        telephonyService = null;
        e.printStackTrace();
return false;
    }
}

只需检测来电,就像自动应答中的代码一样,然后检查是否为视频。

答案 1 :(得分:1)

你的所有英语都是好的,所以别担心。

是的,如果你认为访问电话apis让你这样做,那么这里是一个直接从用户空间应用使用内部电话apis的例子。

Auto_answer app using internalTelephony by reflection

答案 2 :(得分:-1)

Android没有内置的视频通话系统。是的,API可用于访问摄像头,但没有本机应用程序来处理视频呼叫。您要捕获哪些视频通话?使用Google环聊进行视频通话? Skype的?雅虎信使?所有这些应用都允许视频通话,因此如果他们提供自己的API,您需要独立支持。