4

我想知道如何在 android 设备上检测传入的视频通话?实际上有很多关于检测来电的文档,但我找不到任何关于在 android 中检测来电的本地视频呼叫的信息?
我找到了三星的源代码Phone.apk并找到了这个方法localConnection.getCall().isVideoCall()this.mPhone.getForegroundCall().isVideoCall()检测 VideoCall 但这个方法需要导入com.android.internal.telephony.*,这对于第三方应用程序是不允许的。
我认为调用这些类需要使用反射。
那么你可以让我知道这件事吗?


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

4

3 回答 3

3

首先你的英语很好,所以不要担心。

是的,如果您认为访问电话 api 可以让您做到这一点,那么这里是一个直接从用户空间应用程序使用内部电话 api 的示例。

通过反射使用 internalTelephony 的 Auto_answer 应用

于 2013-09-05T15:17:48.997 回答
2

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

/**
 * 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;
    }
}

只需像自动应答代码一样检测来电,然后执行此检查以查看它是否是视频。

于 2013-09-05T15:40:34.647 回答
-1

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

于 2013-09-05T15:23:46.317 回答