在android中完成传出呼叫后停止位置更新

在android中完成传出呼叫后停止位置更新,android,Android,我是android编程新手,所以请帮帮我。。 我正在开发一个应用程序,它会持续监控当前位置。我希望该应用程序在后台运行,即使用户使用其他应用程序。当他返回到我的应用程序时,他将能够停止位置更新。在我拨打外呼之前,一切都正常。在外呼后,我无法删除位置更新 下面是我的代码 tb_trackstartstop.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void

我是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);

}

使用
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>

希望这能有所帮助。

什么是
trackflag
在一个拨出的电话之后,你返回到你的应用程序?@Darwind
trackflag
的值是真的,你是否最终进入了
onCheckChangedListener
部分?@Darwind实际上我想要的是如果
trackflag
是真的,而
onCheckChanged
是真的false那么我希望停止locationlistener是的,我理解-这就是为什么问;-)是
trackmlocManager.removeUpdates(trackmlocListener)打过电话吗?谢谢你的回答。但广播接收器适用于来电。我想是的。我希望应用程序在执行传出呼叫后能正常运行,并且只有在我更改切换按钮的状态后才应该重新启动。在意向过滤器中添加
。我认为应该行得通。请在您尝试后让我知道。上面的代码在
MyCallReceiver
您从哪里获得NPE上给出了一个空指针异常@MyCallReceiver中的LalNullPointerException
<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.
        }

    }
}