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
+
+
+