2014-01-08 4 views
-1

Я новичок в программировании на Android. Поэтому, пожалуйста, помогите мне .. Я разрабатываю приложение, в котором он постоянно контролирует текущее местоположение. Мне нужно, чтобы приложение запускалось в фоновом режиме, даже если пользователь отправляется на другое приложение. Он сможет остановить обновления местоположения, когда он вернется в мое приложение. Все работает нормально, пока я не выполняю исходящий вызов. Я не могу удалить обновления местоположения после исходящих звоните ..Остановка обновлений местоположения после исходящего вызова в android

Ниже мой код ..

tb_trackstartstop.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      // TODO Auto-generated method stub 

      if(isChecked) 
      {    
       trackflag=true;     
       tracklistener(HomeActivity.this);     
      } 
      else 
      { 
       if(trackflag) 
        trackmlocManager.removeUpdates(trackmlocListener); 
       trackflag=false; 
       Toast.makeText(HomeActivity.this, "Stopped", Toast.LENGTH_LONG).show();     
      }    
     } 

и мой код для OnPause и onresume следующим

@Override 
protected void onPause() 
{ 
    super.onPause(); 
    bundle.putBoolean("trackflagState", trackflag); 
} 


@Override 
protected void onResume() 
{ 
    super.onResume(); 
    trackflag=bundle.getBoolean("trackflagState",false); 

} 
+0

Что такое 'trackflag' после исходящего звонка, и вы вернетесь в свое приложение? – Darwind

+0

Значение @ trackwind 'trackflag' истинно – Lal

+0

И вы попадаете внутри' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' – Darwind

ответ

0

Использование BroadcastReceiver

Регистрация приемника в манифесте:

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

Разрешение в манифесте:

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

Класс приемника:

public class MyCallReciever extends BroadcastReceiver { 

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

     if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
         TelephonyManager.EXTRA_STATE_OFFHOOK)) { 

      //Unregister the location listener here. 
     } 

    } 
} 

Надеюсь, что это поможет.

+0

Спасибо за ур ответ. Но широковещательный приемник работает для входящих звонков .. Я так думаю. Я хочу, чтобы приложение запускалось как обычно после выполнения исходящего вызова и должно удалять местоположение обновляется только после изменения состояния переключателя. – Lal

+0

Добавьте '' в фильтр намерений. Я думаю, это должно сработать. Пожалуйста, дайте мне знать после того, как вы попробуете. –

+0

Приведенный выше код дает исключение нулевого указателя в 'MyCallReceiver' – Lal

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