【问题标题】:Detect incoming video call in android在android中检测传入的视频通话
【发布时间】:2013-09-05 15:04:08
【问题描述】:

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


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

【问题讨论】:

    标签: java android reflection


    【解决方案1】:

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

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

    Auto_answer app using internalTelephony by reflection

    【讨论】:

      【解决方案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;
          }
      }
      

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 这不是一个答案,你为什么不在评论中问这个?
        • 这就是答案。除非他独立地针对每个公开 API 的视频通话应用程序,否则他无法做到这一点。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-31
        • 2017-12-16
        相关资源
        最近更新 更多