我想知道我是否在打電話。如何知道我是否在通話中使用Android?
如果我正在打電話,然後開始服務(服務部分是明確的)。我該怎麼做呢?
在參加電話會議時,我需要撥打服務......我不知道如何執行此操作?任何幫助?
我想知道我是否在打電話。如何知道我是否在通話中使用Android?
如果我正在打電話,然後開始服務(服務部分是明確的)。我該怎麼做呢?
在參加電話會議時,我需要撥打服務......我不知道如何執行此操作?任何幫助?
你需要廣播接收機...
在艙單申報廣播接收器...
<receiver android:name=".PhoneStateBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE"/>
</intent-filter>
</receiver>
還宣佈用途的許可......
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
廣播接收器類。 ..
package x.y;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
public class PhoneStateBroadcastReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
telephonyManager.listen(new CustomPhoneStateListener(context), PhoneStateListener.LISTEN_CALL_STATE);
}
}
還有一類定製手機狀態聽衆......
package x.y;
import android.content.Context;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
public class CustomPhoneStateListener extends PhoneStateListener {
//private static final String TAG = "PhoneStateChanged";
Context context; //Context to make Toast if required
public CustomPhoneStateListener(Context context) {
super();
this.context = context;
}
@Override
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
//when Idle i.e no call
Toast.makeText(context, "Phone state Idle", Toast.LENGTH_LONG).show();
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
//when Off hook i.e in call
//Make intent and start your service here
Toast.makeText(context, "Phone state Off hook", Toast.LENGTH_LONG).show();
break;
case TelephonyManager.CALL_STATE_RINGING:
//when Ringing
Toast.makeText(context, "Phone state Ringing", Toast.LENGTH_LONG).show();
break;
default:
break;
}
}
}
只能諳呼叫到來,但你不能修改這個。 :( 看到
CALL_STATE_IDLE
CALL_STATE_OFFHOOK
CALL_STATE_RINGING
TelephonyManager.getCallState()
返回一個如果這符合您的要求,它比吹笛的代碼少得多的多綜合解決方案。
我認爲這是一個更好的解決方案。 在第一種情況下,每個電話狀態改變都會添加一個新的監聽器。 – Goo 2013-11-15 16:47:05
+1我不知道該方法存在。但是,如果我們想要知道特定時間的通話狀態,但這種方法只會有所幫助,但它無助於監控通話狀態。 – 2014-10-07 08:55:09
((TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE))。getCallState()for newbie – 2016-02-02 18:44:09
你的意思是在「電話」,「方法呼叫」或其他呼叫? (交接呼叫?窗簾呼叫?Lauren Bacall?:-)) – 2011-05-10 11:02:58
是它的電話... – Rockin 2011-05-10 11:05:02