2013-04-24 2 views
0

수신 전화 및 발신 전화를 듣고 싶습니다.이 프로세스는 서비스로 실행되어야합니다. 수신 및 발신 통화를 인식하기 위해 잘 작동하는 작업을 만들었지 만 다음으로 변경해야합니다.수신 전화 및 발신 전화를 듣고 싶습니다.

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    TelephonyManager mTelephonyMgr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
    mTelephonyMgr.listen(new TeleListener(), PhoneStateListener.LISTEN_CALL_STATE); 
} 

class TeleListener extends PhoneStateListener 
{ 
    public void onCallStateChanged(int state, String incomingNumber) 
    { 
     super.onCallStateChanged(state, incomingNumber); 
     switch (state) 
     { 
     case TelephonyManager.CALL_STATE_IDLE: 
      //CALL_STATE_IDLE; 
      Toast.makeText(getApplicationContext(), "CALL_STATE_IDLE", 10000).show(); 
      break; 
     case TelephonyManager.CALL_STATE_OFFHOOK: 
      //CALL_STATE_OFFHOOK; 
      Toast.makeText(getApplicationContext(), "CALL_STATE_OFFHOOK", 10000).show(); 
      break; 
     case TelephonyManager.CALL_STATE_RINGING: 
      //CALL_STATE_RINGING 
      Toast.makeText(getApplicationContext(), "CALL_STATE_RINGING", 10000).show(); 
      break; 
     default: 
      break; 
     } 
    } 

    } 
} 

을 그리고 내 두 번째 질문는 내 휴대 전화에 활동하지 않고 서비스를 설치할 수 있습니다 : 그것은 it.My 활동을 변경하는 방법을 찾을 수 없습니다 background.I으로 실행할 수 있도록 서비스는 다음과 같습니다.

답변

3

그냥 extendsService 대신 Activity입니다. 서비스를 시작하려면 활동이 필요합니다. 부팅시 서비스를 시작하려면 ACTION_BOOT_COMPLETED을 등록하고 broadcast receiver 서비스를 시작하십시오. 그러나 ICS 위쪽에서 적어도 한 번 서비스를 시작하는 활동이 필요합니다. 그 후 활동은 결코 다시는 필요하지 않을 것입니다.

+0

을 실행 다른 작업을 만들 확인 그러면 ACTION_BOOT_COMPLETED? 나는 어떤 활동도 사용하고 싶지 않다. – Anirban

+0

ICS 이상의 경우, 수신기를 호출하기 위해 부팅을 위해 한 번 활동에서 서비스를 시작해야합니다. 나는 이것이 보안상의 이유라고 생각한다. –

+0

서비스를 제공하기 위해이 활동을 수행하려면 다른 것을 추가해야합니다. 'TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService (Context.TELEPHONY_SERVICE); mTelephonyMgr.listen (새 TeleListener(), PhoneStateListener.LISTEN_CALL_STATE); – Anirban

2

서비스를 시작하려면 의도를 전달해야합니다. 서비스 만 시작하는 활동을 작성할 수 있으며이 활동에는보기가 없습니다. 내가 사용하여이 서비스를 시작 하겠어 경우 클래스는 Activity보다는 Service을 확장하고, ICS 위쪽으로 당신이 당신의 서비스를 시작하는 활동을 필요로 ** ** 서비스를 인스턴스화하고 startService(yourserviceInstance);

관련 문제