Android 如何为VoIP呼叫创建PhoneStateListener

Android 如何为VoIP呼叫创建PhoneStateListener,android,voip,Android,Voip,我使用的是PhoneStateListener我想监听如果有来自Viper或Skype或类似的东西的VoIP呼叫,我会实现对PhoneStateListener的监听。监听\u数据\u活动,但它无法工作。这是我的密码 public class VoIPDetectionActivity extends Activity { /** Called when the activity is first created. */ @Override public void onC

我使用的是
PhoneStateListener
我想监听如果有来自Viper或Skype或类似的东西的VoIP呼叫,我会实现对
PhoneStateListener的监听。监听\u数据\u活动
,但它无法工作。这是我的密码

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\u ACTIVITY\u NONE
但没有其他的,有人能帮我吗?提前感谢

这可能不起作用的一些原因。大多数情况下,Voip都是通过wifi进行的,
PhoneStateListener.LISTEN\u DATA\u活动
仅适用于蜂窝网络。另外,我也不确定Viper的情况,但skype使用了自己的Voip协议,这又是一个难题

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

这里有一个链接显示有人设置了这个