我想知道如何在Android设备上检测传入的视频通话?实际上有很多关于检测来电的文档,但我找不到任何关于在android中检测传入原生视频通话的信息?
我找到了三星Phone.apk
的源代码,并找到了检测VideoCall的方法localConnection.getCall().isVideoCall()
或this.mPhone.getForegroundCall().isVideoCall()
但是此方法需要导入com.android.internal.telephony.*
,并且第三方应用程序不允许这样做
我认为这个类需要使用反射
那你可以告诉我这个吗?
对不起,我说英语不太好,但我想你了解我。
答案 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的例子。
答案 2 :(得分:-1)
Android没有内置的视频通话系统。是的,API可用于访问摄像头,但没有本机应用程序来处理视频呼叫。您要捕获哪些视频通话?使用Google环聊进行视频通话? Skype的?雅虎信使?所有这些应用都允许视频通话,因此如果他们提供自己的API,您需要独立支持。