我要使用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
而不是别人,有人可以帮助我吗?提前致谢 最佳答案
有些原因可能不起作用。 Voip在大多数情况下都是通过wifi发生的,根据文档,PhoneStateListener.LISTEN_DATA_ACTIVITY
仅适用于蜂窝网络。另外,我不确定Viper,但skype使用它自己的Voip协议在混音中另加了一把扳手。
一种可能的解决方案是轮询AudioManager的通信模式。
这是显示有人设置此链接的链接。
How implement the VOIP application using android.net.rtp package
关于android - 如何使VoIP通话使用PhoneStateListener,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10895245/