From 109781b69ed1bc67ad24bbd4df9ade3abc548007 Mon Sep 17 00:00:00 2001 From: linminjie <1004644107@qq.com> Date: Thu, 25 May 2023 14:21:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=8B=E6=9C=BA=E9=AA=8C=E8=AF=81=E7=A0=81?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B9=20=20?= =?UTF-8?q?=E7=BB=8F=E7=BA=AC=E5=BA=A6=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../unionmed/unionmedtv/activity/MainActivity.java | 164 +------------------ .../unionmed/unionmedtv/api/MobileLoginApi.java | 2 +- .../unionmedtv/login/activity/LoginActivity.java | 178 +++++++++++++++++++++ .../activity/fragment/LoginAccountFragment.java | 3 + .../activity/fragment/LoginPhoneFragment.java | 4 +- .../com/unionmed/unionmedtv/utils/CacheUtil.java | 27 ++++ app/src/main/res/values/strings.xml | 2 + 7 files changed, 217 insertions(+), 163 deletions(-) diff --git a/app/src/main/java/com/unionmed/unionmedtv/activity/MainActivity.java b/app/src/main/java/com/unionmed/unionmedtv/activity/MainActivity.java index 670ba34..62f0a6e 100644 --- a/app/src/main/java/com/unionmed/unionmedtv/activity/MainActivity.java +++ b/app/src/main/java/com/unionmed/unionmedtv/activity/MainActivity.java @@ -1,6 +1,7 @@ package com.unionmed.unionmedtv.activity; import android.Manifest; +import android.annotation.SuppressLint; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -210,9 +211,7 @@ public class MainActivity extends BaseActivity implements ContentFragment.OnFrag } } - public static final int LOCATION_CODE = 301; - private LocationManager locationManager; - private String locationProvider = null; + @Override protected void onCreate(Bundle savedInstanceState) { @@ -223,35 +222,7 @@ public class MainActivity extends BaseActivity implements ContentFragment.OnFrag initListener(); initBroadCast(); - XXPermissions.with(this) - // 申请单个权限 - .permission(Manifest.permission.WRITE_EXTERNAL_STORAGE, Permission.ACCESS_FINE_LOCATION, Permission.ACCESS_COARSE_LOCATION) - // 设置权限请求拦截器(局部设置) - //.interceptor(new PermissionInterceptor()) - // 设置不触发错误检测机制(局部设置) - //.unchecked() - .request(new OnPermissionCallback() { - - @Override - public void onGranted(@NonNull List permissions, boolean all) { - if (!all) { -// toast("获取部分权限成功,但部分权限未正常授予"); - return; - } - getLocation(); - - } - @Override - public void onDenied(@NonNull List permissions, boolean never) { - if (never) { - // 如果是被永久拒绝就跳转到应用权限系统设置页面 - XXPermissions.startPermissionActivity(MainActivity.this, permissions); - } else { - Toast.makeText(MainActivity.this, "位置权限获取失败", Toast.LENGTH_LONG).show(); - } - } - }); } // private boolean isPressUpDownLeftRightBack = false; @@ -295,10 +266,7 @@ public class MainActivity extends BaseActivity implements ContentFragment.OnFrag } unregisterReceiver(networkChangeReceiver); - if (locationManager != null) { - // 关闭程序时将监听器移除 - locationManager.removeUpdates(locationListener); - } + } private HorizontalGridView mHorizontalGridView;//导航栏Tab @@ -494,133 +462,7 @@ public class MainActivity extends BaseActivity implements ContentFragment.OnFrag } - private void getLocation() { - //1.获取位置管理器 - locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); - - //2.获取位置提供器,GPS或是NetWork - List providers = locationManager.getProviders(true); - - if (providers.contains(LocationManager.NETWORK_PROVIDER)) { - //如果是Network - locationProvider = LocationManager.NETWORK_PROVIDER; - Log.v("TAG", "定位方式Network"); - } else if (providers.contains(LocationManager.GPS_PROVIDER)) { - //如果是GPS - locationProvider = LocationManager.GPS_PROVIDER; - Log.v("TAG", "定位方式GPS"); - } else { - Toast.makeText(this, "没有可用的位置提供器", Toast.LENGTH_LONG).show(); - return; - } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - //获取权限(如果没有开启权限,会弹出对话框,询问是否开启权限) - if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) - != PackageManager.PERMISSION_GRANTED || - ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) - != PackageManager.PERMISSION_GRANTED) { - //请求权限 - ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, - Manifest.permission.ACCESS_COARSE_LOCATION}, LOCATION_CODE); - } else { - //3.获取上次的位置,一般第一次运行,此值为null - Location location = null; - try { - location = locationManager.getLastKnownLocation(locationProvider); - } catch (Exception e) { - Log.v("TAG", "locationManager.getLastKnownLocation异常了" + e); - } - - if (location != null) { - Toast.makeText(this, location.getLongitude() + " " + - location.getLatitude() + "", Toast.LENGTH_LONG).show(); - Log.v("TAG", "获取上次的位置-经纬度:" + location.getLongitude() + " " + location.getLatitude()); -// TODO 保存经纬度 - - } else { - //监视地理位置变化,第二个和第三个参数分别为更新的最短时间minTime和最短距离minDistace - locationManager.requestLocationUpdates(locationProvider, 3000, 1, locationListener); - } - } - } else { - Location location = locationManager.getLastKnownLocation(locationProvider); - if (location != null) { - Toast.makeText(this, location.getLongitude() + " " + - location.getLatitude() + "", Toast.LENGTH_LONG).show(); - Log.v("TAG", "获取上次的位置-经纬度:" + location.getLongitude() + " " + location.getLatitude()); -// TODO 保存经纬度 - - } else { - //监视地理位置变化,第二个和第三个参数分别为更新的最短时间minTime和最短距离minDistace - locationManager.requestLocationUpdates(locationProvider, 5000, 20, locationListener); - } - } - } - - public LocationListener locationListener = new LocationListener() { - // Provider的状态在可用、暂时不可用和无服务三个状态直接切换时触发此函数 - @Override - public void onStatusChanged(String provider, int status, Bundle extras) { - } - - // Provider被enable时触发此函数,比如GPS被打开 - @Override - public void onProviderEnabled(String provider) { - } - // Provider被disable时触发此函数,比如GPS被关闭 - @Override - public void onProviderDisabled(String provider) { - } - - //当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发 - @Override - public void onLocationChanged(Location location) { - if (location != null) { - //如果位置发生变化,重新显示地理位置经纬度 - Toast.makeText(MainActivity.this, location.getLongitude() + " " + - location.getLatitude() + "", Toast.LENGTH_LONG).show(); - Log.v("TAG", "监视地理位置变化-经纬度:" + location.getLongitude() + " " + location.getLatitude()); - - // TODO 保存经纬度 - } - } - }; - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - switch (requestCode) { - case LOCATION_CODE: - if (grantResults.length > 0 && grantResults[0] == this.getPackageManager().PERMISSION_GRANTED - && grantResults[1] == PackageManager.PERMISSION_GRANTED) { - Toast.makeText(this, "申请定位权限", Toast.LENGTH_LONG).show(); - try { - List providers = locationManager.getProviders(true); - if (providers.contains(LocationManager.NETWORK_PROVIDER)) { - //如果是Network - locationProvider = LocationManager.NETWORK_PROVIDER; - } else if (providers.contains(LocationManager.GPS_PROVIDER)) { - //如果是GPS - locationProvider = LocationManager.GPS_PROVIDER; - } - Location location = locationManager.getLastKnownLocation(locationProvider); - if (location != null) { - // TODO 保存经纬度 - Log.v("TAG", "获取上次的位置-经纬度:" + location.getLongitude() + " " + location.getLatitude()); - } else { - // 监视地理位置变化,第二个和第三个参数分别为更新的最短时间minTime和最短距离minDistace - locationManager.requestLocationUpdates(locationProvider, 5000, 20, locationListener); - } - - } catch (SecurityException e) { - e.printStackTrace(); - } - } else { - Toast.makeText(this, "缺少定位权限", Toast.LENGTH_LONG).show(); - } - break; - } - } } diff --git a/app/src/main/java/com/unionmed/unionmedtv/api/MobileLoginApi.java b/app/src/main/java/com/unionmed/unionmedtv/api/MobileLoginApi.java index 0bf9c28..a1162fc 100644 --- a/app/src/main/java/com/unionmed/unionmedtv/api/MobileLoginApi.java +++ b/app/src/main/java/com/unionmed/unionmedtv/api/MobileLoginApi.java @@ -25,7 +25,7 @@ public final class MobileLoginApi implements IRequestApi, IRequestType { @NonNull @Override public String getApi() { - return "/index/sendMessageCode"; + return "/login/loginByCode"; } private String mobile; diff --git a/app/src/main/java/com/unionmed/unionmedtv/login/activity/LoginActivity.java b/app/src/main/java/com/unionmed/unionmedtv/login/activity/LoginActivity.java index 2d5fdfc..910f9d3 100644 --- a/app/src/main/java/com/unionmed/unionmedtv/login/activity/LoginActivity.java +++ b/app/src/main/java/com/unionmed/unionmedtv/login/activity/LoginActivity.java @@ -1,17 +1,38 @@ package com.unionmed.unionmedtv.login.activity; +import android.Manifest; +import android.annotation.SuppressLint; +import android.content.Context; import android.content.Intent; +import android.content.pm.PackageManager; +import android.location.Location; +import android.location.LocationListener; +import android.location.LocationManager; +import android.os.Build; import android.os.Bundle; +import android.util.Log; +import android.widget.Toast; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; import androidx.fragment.app.FragmentActivity; +import com.hjq.permissions.OnPermissionCallback; +import com.hjq.permissions.Permission; +import com.hjq.permissions.XXPermissions; import com.unionmed.unionmedtv.R; import com.unionmed.unionmedtv.activity.MainActivity; import com.unionmed.unionmedtv.login.activity.fragment.LoginPhoneFragment; import com.unionmed.unionmedtv.utils.CacheUtil; +import java.util.List; + public class LoginActivity extends FragmentActivity { + public static final int LOCATION_CODE = 301; + private LocationManager locationManager; + private String locationProvider = null; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -25,6 +46,163 @@ public class LoginActivity extends FragmentActivity { .replace(R.id.main_browse_fragment, new LoginPhoneFragment()) .commitNow(); } + XXPermissions.with(this) + // 申请单个权限 + .permission(Manifest.permission.WRITE_EXTERNAL_STORAGE, Permission.ACCESS_FINE_LOCATION, Permission.ACCESS_COARSE_LOCATION) + // 设置权限请求拦截器(局部设置) + //.interceptor(new PermissionInterceptor()) + // 设置不触发错误检测机制(局部设置) + //.unchecked() + .request(new OnPermissionCallback() { + + @Override + public void onGranted(@NonNull List permissions, boolean all) { + if (!all) { +// toast("获取部分权限成功,但部分权限未正常授予"); + return; + } + getLocation(); + + } + + @Override + public void onDenied(@NonNull List permissions, boolean never) { + if (never) { + // 如果是被永久拒绝就跳转到应用权限系统设置页面 + XXPermissions.startPermissionActivity(LoginActivity.this, permissions); + } else { + Toast.makeText(LoginActivity.this, "位置权限获取失败", Toast.LENGTH_LONG).show(); + } + } + }); + } + } + + private void getLocation() { + //1.获取位置管理器 + locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); + + //2.获取位置提供器,GPS或是NetWork + List providers = locationManager.getProviders(true); + + if (providers.contains(LocationManager.NETWORK_PROVIDER)) { + //如果是Network + locationProvider = LocationManager.NETWORK_PROVIDER; + Log.v("TAG", "定位方式Network"); + } else if (providers.contains(LocationManager.GPS_PROVIDER)) { + //如果是GPS + locationProvider = LocationManager.GPS_PROVIDER; + Log.v("TAG", "定位方式GPS"); + } else { + Toast.makeText(this, "没有可用的位置提供器", Toast.LENGTH_LONG).show(); + return; + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + //获取权限(如果没有开启权限,会弹出对话框,询问是否开启权限) + if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) + != PackageManager.PERMISSION_GRANTED || + ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) + != PackageManager.PERMISSION_GRANTED) { + //请求权限 + ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, + Manifest.permission.ACCESS_COARSE_LOCATION}, LOCATION_CODE); + } else { + //3.获取上次的位置,一般第一次运行,此值为null + Location location = null; + try { + location = locationManager.getLastKnownLocation(locationProvider); + } catch (Exception e) { + Log.v("TAG", "locationManager.getLastKnownLocation异常了" + e); + } + + if (location != null) { + Log.v("TAG", "获取上次的位置-经纬度:" + location.getLongitude() + " " + location.getLatitude()); +// TODO 保存经纬度 + CacheUtil.saveLongitude(location.getLongitude()); + CacheUtil.saveLatitude(location.getLatitude()); + } else { + //监视地理位置变化,第二个和第三个参数分别为更新的最短时间minTime和最短距离minDistace + locationManager.requestLocationUpdates(locationProvider, 3000, 1, locationListener); + } + } + } else { + Location location = locationManager.getLastKnownLocation(locationProvider); + if (location != null) { + Log.v("TAG", "获取上次的位置-经纬度:" + location.getLongitude() + " " + location.getLatitude()); +// TODO 保存经纬度 + CacheUtil.saveLongitude(location.getLongitude()); + CacheUtil.saveLatitude(location.getLatitude()); + } else { + //监视地理位置变化,第二个和第三个参数分别为更新的最短时间minTime和最短距离minDistace + locationManager.requestLocationUpdates(locationProvider, 5000, 20, locationListener); + } + } + } + + public LocationListener locationListener = new LocationListener() { + // Provider的状态在可用、暂时不可用和无服务三个状态直接切换时触发此函数 + @Override + public void onStatusChanged(String provider, int status, Bundle extras) { + } + + // Provider被enable时触发此函数,比如GPS被打开 + @Override + public void onProviderEnabled(String provider) { + } + + // Provider被disable时触发此函数,比如GPS被关闭 + @Override + public void onProviderDisabled(String provider) { + } + + //当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发 + @Override + public void onLocationChanged(Location location) { + if (location != null) { + //如果位置发生变化,重新显示地理位置经纬度 + Log.v("TAG", "监视地理位置变化-经纬度:" + location.getLongitude() + " " + location.getLatitude()); + // TODO 保存经纬度 + CacheUtil.saveLongitude(location.getLongitude()); + CacheUtil.saveLatitude(location.getLatitude()); + } + } + }; + + @SuppressLint("MissingSuperCall") + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + switch (requestCode) { + case LOCATION_CODE: + if (grantResults.length > 0 && grantResults[0] == this.getPackageManager().PERMISSION_GRANTED + && grantResults[1] == PackageManager.PERMISSION_GRANTED) { + Toast.makeText(this, "申请定位权限", Toast.LENGTH_LONG).show(); + try { + List providers = locationManager.getProviders(true); + if (providers.contains(LocationManager.NETWORK_PROVIDER)) { + //如果是Network + locationProvider = LocationManager.NETWORK_PROVIDER; + } else if (providers.contains(LocationManager.GPS_PROVIDER)) { + //如果是GPS + locationProvider = LocationManager.GPS_PROVIDER; + } + Location location = locationManager.getLastKnownLocation(locationProvider); + if (location != null) { + // TODO 保存经纬度 + Log.v("TAG", "获取上次的位置-经纬度:" + location.getLongitude() + " " + location.getLatitude()); + CacheUtil.saveLongitude(location.getLongitude()); + CacheUtil.saveLatitude(location.getLatitude()); + } else { + // 监视地理位置变化,第二个和第三个参数分别为更新的最短时间minTime和最短距离minDistace + locationManager.requestLocationUpdates(locationProvider, 5000, 20, locationListener); + } + + } catch (SecurityException e) { + e.printStackTrace(); + } + } else { + Toast.makeText(this, "缺少定位权限", Toast.LENGTH_LONG).show(); + } + break; } } } diff --git a/app/src/main/java/com/unionmed/unionmedtv/login/activity/fragment/LoginAccountFragment.java b/app/src/main/java/com/unionmed/unionmedtv/login/activity/fragment/LoginAccountFragment.java index a9c6387..5df080b 100644 --- a/app/src/main/java/com/unionmed/unionmedtv/login/activity/fragment/LoginAccountFragment.java +++ b/app/src/main/java/com/unionmed/unionmedtv/login/activity/fragment/LoginAccountFragment.java @@ -31,6 +31,9 @@ import com.unionmed.unionmedtv.utils.ToastUtils; import me.jessyan.autosize.utils.LogUtils; +/** + * 账号登录 + */ public class LoginAccountFragment extends Fragment implements View.OnClickListener { private static final String ARG_PARAM1 = "param1"; private static final String ARG_PARAM2 = "param2"; diff --git a/app/src/main/java/com/unionmed/unionmedtv/login/activity/fragment/LoginPhoneFragment.java b/app/src/main/java/com/unionmed/unionmedtv/login/activity/fragment/LoginPhoneFragment.java index 940a9e2..a7c20fb 100644 --- a/app/src/main/java/com/unionmed/unionmedtv/login/activity/fragment/LoginPhoneFragment.java +++ b/app/src/main/java/com/unionmed/unionmedtv/login/activity/fragment/LoginPhoneFragment.java @@ -30,7 +30,9 @@ import java.util.List; import me.jessyan.autosize.utils.LogUtils; - +/** + * 手机验证码登录 + */ public class LoginPhoneFragment extends Fragment implements View.OnClickListener { private static final String ARG_PARAM1 = "param1"; private static final String ARG_PARAM2 = "param2"; diff --git a/app/src/main/java/com/unionmed/unionmedtv/utils/CacheUtil.java b/app/src/main/java/com/unionmed/unionmedtv/utils/CacheUtil.java index 9466adc..f3a8084 100644 --- a/app/src/main/java/com/unionmed/unionmedtv/utils/CacheUtil.java +++ b/app/src/main/java/com/unionmed/unionmedtv/utils/CacheUtil.java @@ -103,6 +103,33 @@ public class CacheUtil { } /** + * 获取精度 + */ + public static Double getLongitude() { + return kv.decodeDouble(StringUtils.getString(R.string.longitude), 0); + } + + /** + * 保存精度 + */ + public static void saveLongitude(Double longitude) { + kv.encode(StringUtils.getString(R.string.longitude), longitude); + } + + /** + * 获取纬度 + */ + public static Double getLatitude() { + return kv.decodeDouble(StringUtils.getString(R.string.latitude), 0); + } + + /** + * 保存纬度 + */ + public static void saveLatitude(Double longitude) { + kv.encode(StringUtils.getString(R.string.latitude), longitude); + } + /** * 获取融云im_token */ public static String getImTokenRong() { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index dced76f..cee708e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -23,4 +23,6 @@ im_user_pwd im_token ip_address + longitude + latitude