Android 当对方接听电话时,是否可以知道使用TelephonyManager(onCallStateChanged)的情况?
我正在开发一个应用程序,当我开始通话时,它会启动报警(铃声),并将扬声器模式设置为打开。所以我想在我打电话的人接听电话时停止闹钟。我怎样才能做到这一点 这是我的代码:Android 当对方接听电话时,是否可以知道使用TelephonyManager(onCallStateChanged)的情况?,android,telephonymanager,Android,Telephonymanager,我正在开发一个应用程序,当我开始通话时,它会启动报警(铃声),并将扬声器模式设置为打开。所以我想在我打电话的人接听电话时停止闹钟。我怎样才能做到这一点 这是我的代码: private PhoneStateListener phoneCallListener = new PhoneStateListener() { private int prevCallState=TelephonyManager.CALL_STATE_IDLE; public void onCallStat
private PhoneStateListener phoneCallListener = new PhoneStateListener() {
private int prevCallState=TelephonyManager.CALL_STATE_IDLE;
public void onCallStateChanged(int state, String incomingNumber) {
try {
AudioManager audiomanager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
switch (state) {
case TelephonyManager.CALL_STATE_OFFHOOK:
if (prevCallState == TelephonyManager.CALL_STATE_IDLE){
//Inicio de llamada saliente
audiomanager.setMode(AudioManager.MODE_IN_CALL);
audiomanager.setSpeakerphoneOn(true);
}
break;
case TelephonyManager.CALL_STATE_IDLE:
if (prevCallState == TelephonyManager.CALL_STATE_OFFHOOK){
//Fin de llamada saliente
audiomanager.setSpeakerphoneOn(false);
}
break;
}
} catch (Exception e) {
}
prevCallState = state;
}
};
我将感谢任何帮助。Thanx很多。
嘿,检查此链接可能会尝试此链接,它可以帮助您解决问题。#Ravindra我也有类似问题,无法检查此人是否已拿起电话,也无法联系到他/她的电话。在gsm网络中没有来自电话公司的反馈
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.buttonCall);
// add PhoneStateListener
PhoneCallListener phoneListener = new PhoneCallListener();
TelephonyManager telephonyManager = (TelephonyManager) this
.getSystemService(Context.TELEPHONY_SERVICE);
telephonyManager.listen(phoneListener,PhoneStateListener.LISTEN_CALL_STATE);
// add button listener
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:+9196203333"));
startActivity(callIntent);
}
});
}
//monitor phone call activities
private class PhoneCallListener extends PhoneStateListener {
private boolean isPhoneCalling = false;
String LOG_TAG = "LOGGING 123";
@Override
public void onCallStateChanged(int state, String incomingNumber) {
if (TelephonyManager.CALL_STATE_RINGING == state) {
// phone ringing
Log.i(LOG_TAG, "RINGING, number: " + incomingNumber);
}
if (TelephonyManager.CALL_STATE_OFFHOOK == state) {
// active
Log.i(LOG_TAG, "OFFHOOK");
isPhoneCalling = true;
}
if (TelephonyManager.CALL_STATE_IDLE == state) {
// run when class initial and phone call ended,
// need detect flag from CALL_STATE_OFFHOOK
Log.i(LOG_TAG, "IDLE");
if (isPhoneCalling) {
Log.i(LOG_TAG, "restart app");
// restart app
Intent i = getBaseContext().getPackageManager()
.getLaunchIntentForPackage(
getBaseContext().getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
isPhoneCalling = false;
}
}
}
}
同时在清单中给予许可我想知道对方什么时候接电话,但我认为@tamasJozsa是对的,没有办法得到那种状态