2013-04-24 3 views
0

Я хочу прослушивать входящие звонки и исходящие вызовы, и этот процесс должен выполняться как service.I сделал операцию, которая прекрасно работает, чтобы распознавать входящие и исходящие вызовы, но мне нужно изменить ее на сервис, так что она может работать в background.I не может узнать, как изменить it.My активность следующим образом:Хотите прослушивать входящие звонки и исходящие звонки

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; 
     } 
    } 

    } 
} 

И второй вопрос я могу установить службу без активности в мой телефон.

ответ

3

Только extendsService вместо Activity. Для запуска службы вам нужна операция. Вы можете начать свою службу при загрузке, зарегистрировав ACTION_BOOT_COMPLETED и запустите свой сервис broadcast receiver. Однако, начиная с ICS вверх, вам необходимо активировать услугу хотя бы один раз. После этого деятельность снова не понадобится.

+0

** от ICS вверх вам нужно, чтобы начать деятельность вашей службы ** Если я собираюсь начать эту услугу с помощью Затем ACTION_BOOT_COMPLETED? Я не хочу использовать какую-либо деятельность. – Anirban

+0

Для ICS и выше вам нужно запустить службу из одной операции, как только загрузка будет выполнена для вызова вашего ресивера. Думаю, это по соображениям безопасности. –

+0

еще одна вещь, если я собираюсь сделать эту операцию для обслуживания, где я должен положить это 'TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService (Context.TELEPHONY_SERVICE); mTelephonyMgr.listen (новый TeleListener(), PhoneStateListener.LISTEN_CALL_STATE); ' – Anirban

2

Необходимо передать намерение начать обслуживание. Вы можете создать активность, которая только запускает вашу службу, и эта активность не имеет представления. сделать ваш класс продлить Service вместо Activity и создать другую деятельность, которая инстанцирует вашу службу и выполняет startService(yourserviceInstance);

Смежные вопросы