2014-01-08 35 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

@ trackflag'的默認值爲真 – Lal

+0

你最終會在'onCheckChangedListener'的'else'部分嗎? – 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

感謝您的答案..但廣播接收器的工作來電..我想是這樣..我希望應用程序運行後,執行一個傳出的電話正常,應刪除位置僅在更改togglebutton的狀態後才更新。 – Lal

+0

在intent過濾器中添加'''。我認爲它應該工作。請嘗試後讓我知道。 –

+0

上述代碼在'MyCallReceiver'上給出空指針異常 – Lal

相關問題