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

时间:2014-01-08 11:10:04

标签: 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);

}

1 个答案:

答案 0 :(得分:0)

使用BroadcastReceiver

在Manifest中注册接收器:

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

    }
}

希望这有帮助。