6483e99bda06659063356a36d984d88b9f6cae31.svn-base 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. package eVVM.apk.ui.home;
  2. import android.Manifest;
  3. import android.app.PendingIntent;
  4. import android.content.Intent;
  5. import android.content.pm.PackageManager;
  6. import android.location.Criteria;
  7. import android.location.Location;
  8. import android.location.LocationManager;
  9. import android.nfc.NfcAdapter;
  10. import android.os.Build;
  11. import android.support.annotation.NonNull;
  12. import android.support.v4.app.ActivityCompat;
  13. import android.util.Log;
  14. import eVVM.apk.helper.GPS.LocationUtils;
  15. import eVVM.apk.helper.SPUtils;
  16. import eVVM.apk.mvp.MvpActivity;
  17. import eVVM.apk.ui.home.uploadChip.UploadChipPresenter;
  18. public class BaseGPSActivity extends MvpActivity<UploadChipPresenter> {
  19. private boolean flag;
  20. /**
  21. * onCreat->onStart->onResume->onPause->onStop->onDestroy
  22. * 启动Activity,界面可见时.
  23. */
  24. @Override
  25. protected void onStart() {
  26. super.onStart();
  27. //获取最新位置信息
  28. getBestLocation();
  29. }
  30. /**
  31. * 获得焦点,按钮可以点击
  32. */
  33. @Override
  34. public void onResume() {
  35. super.onResume();
  36. initPermission();//针对6.0以上版本做权限适配
  37. }
  38. private void initPermission() {
  39. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
  40. //检查权限
  41. if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED
  42. || ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
  43. //请求权限
  44. ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}, 1);
  45. } else {
  46. flag = true;
  47. }
  48. } else {
  49. flag = true;
  50. }
  51. }
  52. /**
  53. * 权限的结果回调函数
  54. */
  55. @Override
  56. public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
  57. super.onRequestPermissionsResult(requestCode, permissions, grantResults);
  58. if (requestCode == 1) {
  59. flag = grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED;
  60. }
  61. }
  62. /**
  63. * 暂停Activity,界面获取焦点,按钮可以点击
  64. */
  65. @Override
  66. public void onPause() {
  67. super.onPause();
  68. }
  69. @Override
  70. protected int getLayoutId() {
  71. return 0;
  72. }
  73. @Override
  74. protected int getTitleId() {
  75. return 0;
  76. }
  77. @Override
  78. protected void initView() {
  79. }
  80. @Override
  81. protected void initData() {
  82. }
  83. @Override
  84. public void onPointerCaptureChanged(boolean hasCapture) {
  85. }
  86. @Override
  87. protected UploadChipPresenter createPresenter() {
  88. return new UploadChipPresenter();
  89. }
  90. @Override
  91. protected void onStop() {
  92. super.onStop();
  93. }
  94. //定位
  95. /**
  96. * 通过GPS获取定位信息
  97. */
  98. protected void getGPSLocation() {
  99. Location gps = LocationUtils.getGPSLocation(this);
  100. if (gps == null) {
  101. //设置定位监听,因为GPS定位,第一次进来可能获取不到,通过设置监听,可以在有效的时间范围内获取定位信息
  102. LocationUtils.addLocationListener(getApplicationContext(), LocationManager.GPS_PROVIDER, new LocationUtils.ILocationListener() {
  103. @Override
  104. public void onSuccessLocation(Location location) {
  105. if (location != null) {
  106. SPUtils.put("LOCATION",location.getLatitude() + "," + location.getLongitude());
  107. Log.e("BaseNfcActivity", "gps onSuccessLocation location: lat==" + location.getLatitude() + " lng==" + location.getLongitude());
  108. } else {
  109. Log.e("BaseNfcActivity", "gps location is null");
  110. }
  111. }
  112. });
  113. } else {
  114. Log.e("BaseNfcActivity", "gps location: lat==" + gps.getLatitude() + " lng==" + gps.getLongitude());
  115. }
  116. }
  117. /**
  118. * 通过网络等获取定位信息
  119. */
  120. protected void getNetworkLocation() {
  121. Location location = LocationUtils.getNetWorkLocation(this);
  122. if (location == null) {
  123. Log.e("BaseNfcActivity", "net location is null");
  124. } else {
  125. SPUtils.put("LOCATION",location.getLatitude() + "," + location.getLongitude());
  126. Log.e("BaseNfcActivity", "network location: lat==" + location.getLatitude() + " lng==" + location.getLongitude());
  127. }
  128. }
  129. /**
  130. * 采用最好的方式获取定位信息
  131. */
  132. protected void getBestLocation() {
  133. Criteria c = new Criteria();//Criteria类是设置定位的标准信息(系统会根据你的要求,匹配最适合你的定位供应商),一个定位的辅助信息的类
  134. c.setPowerRequirement(Criteria.POWER_LOW);//设置低耗电
  135. c.setAltitudeRequired(true);//设置需要海拔
  136. c.setBearingAccuracy(Criteria.ACCURACY_COARSE);//设置COARSE精度标准
  137. c.setAccuracy(Criteria.ACCURACY_LOW);//设置低精度
  138. //... Criteria 还有其他属性,就不一一介绍了
  139. Location location = LocationUtils.getBestLocation(this, c);
  140. if (location == null) {
  141. Log.e("BaseNfcActivity", " best location is null");
  142. } else {
  143. SPUtils.put("LOCATION",location.getLatitude() + "," + location.getLongitude());
  144. Log.e("BaseNfcActivity", "best location: lat==" + location.getLatitude() + " lng==" + location.getLongitude());
  145. }
  146. }
  147. }