如何为VoIP呼叫制作PhoneStateListener

时间:2012-06-05 10:00:34

标签: android voip

iam使用PhoneStateListener我想听听是否已经从Viper或Skype或类似的东西进行了VoIP呼叫,我实现了对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而不是其他人,任何人都可以帮助我吗?提前谢谢

1 个答案:

答案 0 :(得分:1)

这可能不起作用的一些原因。大部分时间Voip都是通过wifi发生的,PhoneStateListener.LISTEN_DATA_ACTIVITY仅适用于蜂窝网络。此外,我不确定Viper,但Skype使用它自己的Voip协议在混合中投入另一个扳手。

可能的解决方案是轮询AudioManager以获取通信模式。

这是一个显示某人设置此链接的链接。

How implement the VOIP application using android.net.rtp package