diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d968fda..4dd2d5f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -209,6 +209,12 @@ android:name=".ui.activity.DocumentActivity" android:launchMode="standard" android:screenOrientation="portrait" /> + + \ No newline at end of file diff --git a/app/src/main/java/com/kanglai/push/di/component/ServiceComponent.java b/app/src/main/java/com/kanglai/push/di/component/ServiceComponent.java index e5ca0df..ead4987 100644 --- a/app/src/main/java/com/kanglai/push/di/component/ServiceComponent.java +++ b/app/src/main/java/com/kanglai/push/di/component/ServiceComponent.java @@ -13,6 +13,7 @@ import com.kanglai.push.ui.vm.InstantDetailViewModel; import com.kanglai.push.ui.vm.InstantViewModel; import com.kanglai.push.ui.vm.LinkDetailViewModel; import com.kanglai.push.ui.vm.LinkViewModel; +import com.kanglai.push.ui.vm.LocationViewModel; import com.kanglai.push.ui.vm.LoginSurveyViewModel; import com.kanglai.push.ui.vm.LoginViewModel; import com.kanglai.push.ui.vm.MessageViewModel; @@ -64,4 +65,6 @@ public interface ServiceComponent { void inject(FocusDetailViewModel viewModel); void inject(LoginSurveyViewModel viewModel); + + void inject(LocationViewModel viewModel); } diff --git a/app/src/main/java/com/kanglai/push/ui/activity/LocationActivity.java b/app/src/main/java/com/kanglai/push/ui/activity/LocationActivity.java new file mode 100644 index 0000000..74abedf --- /dev/null +++ b/app/src/main/java/com/kanglai/push/ui/activity/LocationActivity.java @@ -0,0 +1,42 @@ +package com.kanglai.push.ui.activity; + +import android.content.Intent; +import android.os.Bundle; + +import com.blankj.utilcode.util.LogUtils; +import com.kanglai.push.R; +import androidx.databinding.library.baseAdapters.BR; + +import com.dolphin.core.base.BaseActivity; +import com.kanglai.push.databinding.ActivityLocationBinding; +import com.kanglai.push.ui.vm.LocationViewModel; + +/** + * 根据广播状态更新用户定位内容 + * + * @Author: liusixiang007 + * @since: 2024/4/2 + */ +public class LocationActivity extends BaseActivity { + + @Override + public int setContentView(Bundle savedInstanceState) { + return R.layout.activity_location; + } + + @Override + public int setVariableId() { + return BR.viewModel; + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + Intent mIntent = getIntent(); + + LogUtils.d("--LocationActivity 获取的------纬度"+mIntent.getStringExtra("latitude") + "-------------经度" + mIntent.getStringExtra("longitude")); + // todo 获取到经纬度之后进行 直接上传 上传之后 销毁界面 + if (mIntent != null) mViewModel.loadLocation(mIntent.getStringExtra("latitude"), mIntent.getStringExtra("longitude")); + } + +} diff --git a/app/src/main/java/com/kanglai/push/ui/fragment/UserFragment.java b/app/src/main/java/com/kanglai/push/ui/fragment/UserFragment.java index 4165a3f..49ec2f9 100644 --- a/app/src/main/java/com/kanglai/push/ui/fragment/UserFragment.java +++ b/app/src/main/java/com/kanglai/push/ui/fragment/UserFragment.java @@ -129,8 +129,6 @@ public class UserFragment extends BaseFragment { + + @Inject + PushService pushService; + + @Override + public void onCreate(@NonNull LifecycleOwner owner) { + super.onCreate(owner); + } + + public LocationViewModel(@NonNull Application application) { + super(application); + // 注入服务组件 + DaggerServiceComponent + .builder() + .appComponent(((AppApplication) Utils.getApp().getApplicationContext()).appComponent) + .build().inject(this); + } + + /** + * 上传经纬度信息 + * @param latitude 纬度 + * @param longitude 经度 + */ + public void loadLocation(String latitude, String longitude) { + // todo 暂时没有正式的上传定位信息接口 以获取用户信息接口模拟 + pushService.getUserInfo() + .compose(RxUtil.schedulersTransformer()) + .compose(RxUtil.exceptionTransformer()) + .doOnSubscribe(this) + .subscribe(new DisposableObserver>() { + @Override + public void onNext(ResultResponse R) { + if (R.getCode() == R.SUCCESS){ + LogUtils.d(TimeFormatUtil.getCurrentTime() + "定位请求上传成功-" + latitude + "/" + longitude); + }else LogUtils.d("定位成功 请求却未成功"); + + } + + @Override + public void onError(Throwable e) { + ExceptionHandle.baseExceptionMsg(e); +// mActivity.finish(); + } + + @Override + public void onComplete() { + // todo 无论成功与否 全部停止当前活动 +// mActivity.finish(); + } + }); + } +} diff --git a/app/src/main/java/com/kanglai/push/util/AlarmReceiver.java b/app/src/main/java/com/kanglai/push/util/AlarmReceiver.java index b39d370..cefca24 100644 --- a/app/src/main/java/com/kanglai/push/util/AlarmReceiver.java +++ b/app/src/main/java/com/kanglai/push/util/AlarmReceiver.java @@ -14,6 +14,7 @@ import com.amap.api.location.AMapLocationClient; import com.amap.api.location.AMapLocationClientOption; import com.amap.api.location.AMapLocationListener; import com.blankj.utilcode.util.LogUtils; +import com.kanglai.push.ui.activity.LocationActivity; /** * 报警广播 @@ -35,6 +36,8 @@ public class AlarmReceiver extends BroadcastReceiver implements AMapLocationList /** 每次定位间隔时间 */ private int TIME_INTERVAL = 30 * 1000; + private Context mContext; + @Override public void onReceive(Context context, Intent intent) { @@ -42,7 +45,6 @@ public class AlarmReceiver extends BroadcastReceiver implements AMapLocationList if (HistoryMsgUtil.noneId()) context.startService(new Intent(context, LocationService.class)); return; } - mAlarmManager = (AlarmManager) context.getSystemService(ALARM_SERVICE); // 获取系统级别的 AlarmManager 服务实例 Intent alarmIntent = new Intent(context, AlarmReceiver.class); alarmIntent.setAction("youxing_warn"); @@ -54,11 +56,10 @@ public class AlarmReceiver extends BroadcastReceiver implements AMapLocationList mAlarmManager.setExactAndAllowWhileIdle(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + TIME_INTERVAL, pendingIntent); // Android 大于等于4 - setExact 设置精确的闹钟,即在指定的时间精确唤醒设备执行任务 // mAlarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + TIME_INTERVAL, pendingIntent); - + mContext = context; LogUtils.i("--------------------------------AlarmReceiver---------------------------------------"); - /** 上传之前需要判断一次用户登录状态 即 id 时候存在 */ + /** 上传之前需要判断一次用户登录状态 */ locationConfigure(!HistoryMsgUtil.noneId(),context); -// locationConfigure(true,context); } /** 获取定位数据 */ @@ -96,18 +97,15 @@ public class AlarmReceiver extends BroadcastReceiver implements AMapLocationList public void onLocationChanged(AMapLocation aMapLocation) { if (aMapLocation != null) { if (aMapLocation.getErrorCode() == 0) { -// LogUtils.d( -// "设备定位成功,设备所在位置:"+ -// aMapLocation.getCountry() // 国家信息 -// + aMapLocation.getProvince() // 省份信息 -// + aMapLocation.getCity() // 城市信息 -// + aMapLocation.getDistrict() // 区信息 -// + aMapLocation.getStreet() // 街道信息 -// + aMapLocation.getStreetNum() // 门牌号信息 -// + "当前时间" -// + TimeFormatUtil.getCurrentTime() -// ); LogUtils.d("------纬度:" + aMapLocation.getLatitude() + "-----经度" + aMapLocation.getLongitude() + "-----" + TimeFormatUtil.getCurrentTime()); + // 获取到定位数据直接唤醒 activity 传输参数 todo 后续有请求之后 再打开新界面 或者做长连接 +// Intent intent = new Intent(mContext, LocationActivity.class); +// intent.putExtra("latitude",String.valueOf(aMapLocation.getLatitude())); // 经度 +// intent.putExtra("longitude",String.valueOf(aMapLocation.getLongitude())); // 纬度 +// intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); // 禁用转场动画 +// intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); +// intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); +// mContext.startActivity(intent); }else LogUtils.e("设备定位失败 - 错误信息>>>>>>>>>>>>>" + aMapLocation.getErrorCode() + ",错误信息: " + aMapLocation.getErrorInfo()); } } diff --git a/app/src/main/res/layout/activity_location.xml b/app/src/main/res/layout/activity_location.xml new file mode 100644 index 0000000..886e897 --- /dev/null +++ b/app/src/main/res/layout/activity_location.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/styles_app.xml b/app/src/main/res/values/styles_app.xml index dcb59fe..f206942 100644 --- a/app/src/main/res/values/styles_app.xml +++ b/app/src/main/res/values/styles_app.xml @@ -29,6 +29,12 @@ @style/LoadingLayoutStyle + + +