android后台定位,Android百度地图SDK,为何只有将App放在后台才能定位?

看了郭霖的第一行代码,照着上面的百度地图SDK教程敲了一遍,发现第一次进App的时候是不定位的,只有回到桌面,也就是把App后台运行,再打开App才会进行定位功能,这是什么原因呢?代码确认了好几遍了

public class MainActivity extends AppCompatActivity

{

public LocationClient mLocationClient;

private TextView positionText;

@Override

protected void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

mLocationClient=new LocationClient(getApplicationContext());

mLocationClient.registerLocationListener(new MyLocationListener());

setContentView(R.layout.activity_main);

positionText= (TextView) findViewById(R.id.position_text_view);

List permissionList=new ArrayList<>();

if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION)

!= PackageManager.PERMISSION_GRANTED)

{

permissionList.add(Manifest.permission.ACCESS_FINE_LOCATION);

}

if (ContextCompat.checkSelfPermission(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)

!=PackageManager.PERMISSION_GRANTED)

{

permissionList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);

}

if (ContextCompat.checkSelfPermission(this,Manifest.permission.READ_PHONE_STATE)

!=PackageManager.PERMISSION_GRANTED)

{

permissionList.add(Manifest.permission.READ_PHONE_STATE);

}

if (!permissionList.isEmpty())

{

String[] permissions=permissionList.toArray(new String[permissionList.size()]);

ActivityCompat.requestPermissions(this,permissions,1);

}

else

{

requestLocation();

}

}

private void requestLocation()

{

initLocation();

mLocationClient.start();

}

private void initLocation()

{

LocationClientOption option=new LocationClientOption();

option.setScanSpan(1000);

mLocationClient.setLocOption(option);

}

public class MyLocationListener implements BDLocationListener

{

@Override

public void onReceiveLocation(BDLocation bdLocation)

{

//当绑定的LocationClient获取到位置信息的时候就会回调这个方法,BDLocation中存放的就是位置信息

StringBuilder currentPosition=new StringBuilder();

currentPosition.append("纬度:").append(bdLocation.getLatitude()).append("\n");

currentPosition.append("经度:").append(bdLocation.getLongitude()).append("\n");

currentPosition.append("定位方式:");

if (bdLocation.getLocType()==BDLocation.TypeGpsLocation)

{

currentPosition.append("GPS");

}

else if (bdLocation.getLocType()==BDLocation.TypeNetWorkLocation)

{

currentPosition.append("网络");

}

positionText.setText(currentPosition);

}

@Override

public void onConnectHotSpotMessage(String s, int i)

{

}

}

@Override

public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)

{

switch (requestCode)

{

case 1:

{

if (grantResults.length>0)

{

for (int results:grantResults)

{

if (results!=PackageManager.PERMISSION_GRANTED)

{

Toast.makeText(this,"拒绝权限将无法使用本产品",Toast.LENGTH_SHORT).show();

finish();

return;

}

}

requestLocation();

}

else

{

Toast.makeText(this,"发生未知错误",Toast.LENGTH_SHORT).show();

finish();

}

break;

}

}

}

@Override

protected void onDestroy()

{

super.onDestroy();

mLocationClient.stop();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值