2012-07-07 67 views
0

我似乎無法找到一個好的課程/ API,可以告訴我我的手機何時撥打電話。我知道我可以使用TelephonyManager檢測何時接到電話,但是如何檢測用戶是否正在呼叫某人?我使用什麼API /類來檢查呼出電話? - Android

下面是代碼我目前:

public class hiWorld extends Activity { 

private int counter=0; 



@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 



    TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 




if(tm.getCallState()==1) //ringing 
{ 

    setContentView(R.layout.activity_hi_world); 
    TextView tcounter = (TextView)findViewById(R.id.textbox1); 

    tcounter.setText("calling"); 

} 

else if (tm.getCallState()==0) //idle 

{ 
    setContentView(R.layout.activity_hi_world); 
    TextView tcounter = (TextView)findViewById(R.id.textbox1); 

    tcounter.setText("not calling"); 
} 

回答

1

你需要註冊一個android.intent.action.NEW_OUTGOING_CALL接收器在您的應用程序接收呼出呼叫廣播爲:


AndroidManifest.xml中

<receiver android:name=".OutgoingCallReceiver" > 
     <intent-filter> 
      <action android:name="android.intent.action.NEW_OUTGOING_CALL" > 
      </action> 
     </intent-filter> 
    </receiver> 


OutgoingCallRecei ver.java:

public class OutgoingCallReceiver extends BroadcastReceiver { 


    @Override 
    public void onReceive(Context context, Intent intent) { 

    final String originalNumber = 
    intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); 
    //START YOUR SERVICE HERE FOR COUNTING MINS 
    Intent intent = new Intent(context, MyService.class); 
    intent.putExtra("number", originalNumber); 
    context.startService(intent); 
    } 
    } 


權限要求:

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/> 

+0

不錯,但我該怎麼放的背景和意圖變量? – fouadalnoor 2012-07-07 15:38:30

+0

@ user1508897:你能讓我清楚你想要什麼嗎?是的,你可以把上下文和意圖變量放在廣播接收器中,或者你也可以從廣播接收器中啓動一個服務或者活動來做你的項目需要的任何其他工作。 – 2012-07-07 15:40:52

+0

嗯,我想要做的只是檢查用戶是否正在撥打電話並計算多長時間呼叫持續時間。我真的是Java和Android的新手,所以請耐心等待我的noob問題:) – fouadalnoor 2012-07-07 15:42:19