2

如果从 Viper 或 Skype 或任何类似的东西发出 VoIP 呼叫,我正在使用PhoneStateListener我想收听,我正在实现侦听器,PhoneStateListener.LISTEN_DATA_ACTIVITY但它无法正常工作。这是我的代码

public class VoIPDetectionActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);


        TelephonyManager obj =  (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
       PhoneStateListener listener1 = new PhoneStateListener(){    
       @Override
      public void onDataActivity (int direction){
          String stateString = "N/A";
          switch (direction) {
        case TelephonyManager.DATA_ACTIVITY_NONE:
          stateString = "Idle";
          break;
        case TelephonyManager.DATA_ACTIVITY_IN:
          stateString = "Off Hook";
          break;
        case TelephonyManager.DATA_ACTIVITY_INOUT:
          stateString = "Ringing";
          break;
        case TelephonyManager.DATA_ACTIVITY_OUT:
            stateString = "Ringing";
            break;
          }
       }
       };



       // Register the listener with the telephony manager
       obj.listen(listener1, PhoneStateListener.LISTEN_DATA_ACTIVITY);
      }

我得到了TelephonyManager.DATA_ACTIVITY_NONE但没有其他人,有人可以帮我吗?提前致谢

4

1 回答 1

1

这可能不起作用的一些原因。大多数情况下,Voip 是通过 wifi 进行的,PhoneStateListener.LISTEN_DATA_ACTIVITY根据文档,唯一适用于蜂窝网络。另外,我不确定 Viper,但 skype 使用它自己的 Voip 协议来混合使用另一个扳手。

一种可能的解决方案是轮询 AudioManager 的通信模式。

这是一个链接,显示有人设置它。

如何使用 android.net.rtp 包实现 VOIP 应用程序

于 2012-11-06T22:11:46.933 回答