diff --git a/positions/build.gradle b/positions/build.gradle
index be04383..6b37ca8 100644
--- a/positions/build.gradle
+++ b/positions/build.gradle
@@ -51,35 +51,52 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
}
dependencies {
- implementation fileTree(include: ['*.jar'], dir: 'libs')
-
+ api fileTree(dir: 'libs', include: ['*.jar'])
+
// 定位服务
implementation 'com.google.android.gms:play-services-location:20.0.0'
-
- implementation 'androidx.recyclerview:recyclerview:1.1.0'
- implementation 'androidx.appcompat:appcompat:1.1.0'
- implementation 'androidx.viewpager:viewpager:1.0.0'
- implementation 'androidx.fragment:fragment:1.0.0'
- implementation 'com.google.android.material:material:1.4.0'
- implementation 'pub.devrel:easypermissions:2.0.1'
- // 地图
+ // 腾讯地图
implementation 'com.tencent.map:tencent-map-vector-sdk:6.2.1.250120.3f971009.140342819'
- // 基础库
+ // 腾讯地图基础库
implementation 'com.tencent.openmap:foundation:0.5.6.9be4e02'
implementation 'com.tencent.map:sdk-utilities:1.0.9'
implementation 'com.tencent.map.geolocation:TencentLocationSdk-openplatform:7.5.4.3'
implementation 'com.google.code.gson:gson:2.8.5'
-
+ // 权限申请框架
+ implementation 'pub.devrel:easypermissions:2.0.1'
+ // 权限申请框架:https://github.com/getActivity/XXPermissions
+ implementation 'com.github.getActivity:XXPermissions:18.63'
+ // 下拉控件
+ implementation 'com.baoyz.pullrefreshlayout:library:1.2.0'
+ // 拼音搜索
+ // https://mvnrepository.com/artifact/com.github.open-android/pinyin4j
+ implementation 'com.github.open-android:pinyin4j:2.5.0'
+ // SSH
+ implementation 'com.jcraft:jsch:0.1.55'
+ // Html 解析
+ implementation 'org.jsoup:jsoup:1.13.1'
+ // 二维码类库
+ implementation 'com.google.zxing:core:3.4.1'
+ implementation 'com.journeyapps:zxing-android-embedded:3.6.0'
+ // 应用介绍页类库
implementation 'io.github.medyo:android-about-page:2.0.0'
+ // 吐司类库
implementation 'com.github.getActivity:ToastUtils:10.5'
+ // 网络连接类库
+ implementation 'com.squareup.okhttp3:okhttp:4.4.1'
- implementation 'cc.winboll.studio:libapputils:9.3.2'
- implementation 'cc.winboll.studio:libappbase:1.5.6'
+ // Android 类库
+ implementation 'androidx.appcompat:appcompat:1.1.0'
+ implementation 'androidx.viewpager:viewpager:1.0.0'
+ implementation 'androidx.vectordrawable:vectordrawable:1.1.0'
+ implementation 'androidx.vectordrawable:vectordrawable-animated:1.1.0'
+ implementation 'androidx.fragment:fragment:1.1.0'
+ implementation 'com.google.android.material:material:1.4.0'
+
+ implementation 'cc.winboll.studio:libappbase:2.1.5'
+ implementation 'cc.winboll.studio:libapputils:9.4.4'
+ implementation 'cc.winboll.studio:libaes:7.6.12'
}
diff --git a/positions/build.properties b/positions/build.properties
index 733fb63..67c3d9e 100644
--- a/positions/build.properties
+++ b/positions/build.properties
@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
-#Sat Mar 01 03:07:55 GMT 2025
+#Mon Mar 10 13:10:04 GMT 2025
stageCount=0
libraryProject=
baseVersion=1.0
publishVersion=1.0.0
-buildCount=246
+buildCount=252
baseBetaVersion=1.0.1
diff --git a/positions/src/main/AndroidManifest.xml b/positions/src/main/AndroidManifest.xml
index 3e34983..5a919d4 100644
--- a/positions/src/main/AndroidManifest.xml
+++ b/positions/src/main/AndroidManifest.xml
@@ -60,6 +60,7 @@
+
@@ -735,6 +736,8 @@
+
+
diff --git a/positions/src/main/java/cc/winboll/studio/positions/MainActivity.java b/positions/src/main/java/cc/winboll/studio/positions/MainActivity.java
index a1f7476..5e56b02 100644
--- a/positions/src/main/java/cc/winboll/studio/positions/MainActivity.java
+++ b/positions/src/main/java/cc/winboll/studio/positions/MainActivity.java
@@ -6,7 +6,6 @@ import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
-import android.os.Message;
import android.telecom.TelecomManager;
import android.view.Menu;
import android.view.MenuItem;
@@ -29,6 +28,7 @@ import cc.winboll.studio.libapputils.app.WinBollActivityManager;
import cc.winboll.studio.libapputils.bean.APPInfo;
import cc.winboll.studio.libapputils.view.YesNoAlertDialog;
import cc.winboll.studio.positions.R;
+import cc.winboll.studio.positions.activities.JointPositioningActivity;
import cc.winboll.studio.positions.activities.SettingsActivity;
import cc.winboll.studio.positions.beans.MainServiceBean;
import cc.winboll.studio.positions.fragments.LogFragment;
@@ -310,6 +310,10 @@ final public class MainActivity extends AbsActivity implements IWinBollActivity,
Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
//WinBollActivityManager.getInstance(this).startWinBollActivity(this, CallActivity.class);
+ } else if (item.getItemId() == R.id.item_joint_positioning) {
+ Intent intent = new Intent(this, JointPositioningActivity.class);
+ startActivity(intent);
+ //WinBollActivityManager.getInstance(this).startWinBollActivity(this, CallActivity.class);
} else if (item.getItemId() == R.id.item_demomain) {
Intent intent = new Intent(this, com.tencent.map.vector.demo.DemoMainActivity.class);
startActivity(intent);
diff --git a/positions/src/main/java/cc/winboll/studio/positions/MainSimpleActivity.java b/positions/src/main/java/cc/winboll/studio/positions/MainSimpleActivity.java
index 8f47304..39eab31 100644
--- a/positions/src/main/java/cc/winboll/studio/positions/MainSimpleActivity.java
+++ b/positions/src/main/java/cc/winboll/studio/positions/MainSimpleActivity.java
@@ -29,6 +29,7 @@ import cc.winboll.studio.libappbase.LogView;
import cc.winboll.studio.positions.R;
import cc.winboll.studio.positions.activities.SettingsActivity;
import cc.winboll.studio.positions.activities.TestMapViewActivity;
+import cc.winboll.studio.positions.beans.PostionModel;
import cc.winboll.studio.positions.utils.LocationFileStorage;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
@@ -52,7 +53,6 @@ import com.tencent.tencentmap.mapsdk.maps.model.MyLocationStyle;
import java.util.ArrayList;
import java.util.List;
import pub.devrel.easypermissions.EasyPermissions;
-import cc.winboll.studio.positions.beans.PostionModel;
public class MainSimpleActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks,LocationSource, TencentLocationListener {
diff --git a/positions/src/main/java/cc/winboll/studio/positions/activities/GridMapActivity.java b/positions/src/main/java/cc/winboll/studio/positions/activities/GridMapActivity.java
index 704d2d9..fba81c1 100644
--- a/positions/src/main/java/cc/winboll/studio/positions/activities/GridMapActivity.java
+++ b/positions/src/main/java/cc/winboll/studio/positions/activities/GridMapActivity.java
@@ -6,13 +6,9 @@ package cc.winboll.studio.positions.activities;
*/
import android.graphics.Color;
import android.os.Bundle;
-import android.widget.Button;
-import android.widget.FrameLayout;
import androidx.appcompat.app.AppCompatActivity;
import cc.winboll.studio.positions.R;
import cc.winboll.studio.positions.views.GridMapView;
-import android.view.View.OnClickListener;
-import android.view.View;
public class GridMapActivity extends AppCompatActivity {
diff --git a/positions/src/main/java/cc/winboll/studio/positions/activities/JointPositioningActivity.java b/positions/src/main/java/cc/winboll/studio/positions/activities/JointPositioningActivity.java
new file mode 100644
index 0000000..23c3c29
--- /dev/null
+++ b/positions/src/main/java/cc/winboll/studio/positions/activities/JointPositioningActivity.java
@@ -0,0 +1,129 @@
+package cc.winboll.studio.positions.activities;
+
+/**
+ * @Author ZhanGSKen@AliYun.Com
+ * @Date 2025/03/10 19:56:49
+ * @Describe Main2Activity
+ */
+import android.Manifest;
+import android.annotation.SuppressLint;
+import android.content.pm.PackageManager;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
+import android.os.Bundle;
+import android.widget.TextView;
+import android.widget.Toast;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.app.ActivityCompat;
+import cc.winboll.studio.positions.R;
+
+public class JointPositioningActivity extends AppCompatActivity {
+
+ public static final String TAG = "JointPositioningActivity";
+
+
+ private LocationManager locationManager;
+ private TextView locationTextView;
+
+ @SuppressLint("MissingPermission")
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main2);
+
+ locationTextView = findViewById(R.id.location_text_view);
+ locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
+
+ // 检查权限
+ if (ActivityCompat.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},
+ 1);
+ return;
+ }
+
+ // 请求GPS定位
+ locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, gpsLocationListener);
+
+ // 请求基站(网络)定位
+ locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, networkLocationListener);
+ }
+
+ private LocationListener gpsLocationListener = new LocationListener() {
+ @Override
+ public void onLocationChanged(Location location) {
+ // 处理GPS定位结果
+ updateLocation(location);
+ }
+
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {}
+
+ @Override
+ public void onProviderEnabled(String provider) {}
+
+ @Override
+ public void onProviderDisabled(String provider) {}
+ };
+
+ private LocationListener networkLocationListener = new LocationListener() {
+ @Override
+ public void onLocationChanged(Location location) {
+ // 处理基站(网络)定位结果
+ updateLocation(location);
+ }
+
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {}
+
+ @Override
+ public void onProviderEnabled(String provider) {}
+
+ @Override
+ public void onProviderDisabled(String provider) {}
+ };
+
+ private void updateLocation(Location location) {
+ if (location != null) {
+ double latitude = location.getLatitude();
+ double longitude = location.getLongitude();
+
+ // 简单的融合示例:这里只是显示最后获取到的位置,实际应用中需要更复杂的融合算法
+ locationTextView.setText("Latitude: " + latitude + ", Longitude: " + longitude);
+ }
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+ if (requestCode == 1) {
+ if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ // 权限已授予,可以继续获取位置信息
+ if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
+ ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
+ return;
+ }
+ locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, gpsLocationListener);
+ locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, networkLocationListener);
+ } else {
+ Toast.makeText(this, "权限被拒绝,无法获取位置信息", Toast.LENGTH_SHORT).show();
+ }
+ }
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ if (locationManager != null) {
+ if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
+ ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
+ return;
+ }
+ locationManager.removeUpdates(gpsLocationListener);
+ locationManager.removeUpdates(networkLocationListener);
+ }
+ }
+}
+
diff --git a/positions/src/main/java/cc/winboll/studio/positions/activities/SettingsActivity.java b/positions/src/main/java/cc/winboll/studio/positions/activities/SettingsActivity.java
index 5639791..8bca04d 100644
--- a/positions/src/main/java/cc/winboll/studio/positions/activities/SettingsActivity.java
+++ b/positions/src/main/java/cc/winboll/studio/positions/activities/SettingsActivity.java
@@ -16,12 +16,12 @@ import android.view.WindowManager;
import android.widget.Toast;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
+import cc.winboll.studio.libapputils.app.IWinBollActivity;
+import cc.winboll.studio.libapputils.bean.APPInfo;
import cc.winboll.studio.positions.R;
import com.hjq.toast.ToastUtils;
import java.lang.reflect.Field;
-import androidx.appcompat.widget.Toolbar;
-import cc.winboll.studio.libappbase.IWinBollActivity;
-import cc.winboll.studio.libappbase.bean.APPInfo;
public class SettingsActivity extends AppCompatActivity implements IWinBollActivity {
diff --git a/positions/src/main/java/cc/winboll/studio/positions/activities/TestMapViewActivity.java b/positions/src/main/java/cc/winboll/studio/positions/activities/TestMapViewActivity.java
index 22c8a63..cd9cfe6 100644
--- a/positions/src/main/java/cc/winboll/studio/positions/activities/TestMapViewActivity.java
+++ b/positions/src/main/java/cc/winboll/studio/positions/activities/TestMapViewActivity.java
@@ -4,20 +4,11 @@ package cc.winboll.studio.positions.activities;
* @Author ZhanGSKen@AliYun.Com
* @Date 2025/02/24 12:14:04
*/
-import androidx.appcompat.app.AppCompatActivity;
-
-import android.content.Intent;
import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-
+import androidx.appcompat.app.AppCompatActivity;
import cc.winboll.studio.positions.R;
-import com.tencent.map.vector.demo.heatoverlay.ScatterPlotOverlayActivity;
-import com.tencent.tencentmap.mapsdk.maps.MapView;
import com.tencent.tencentmap.mapsdk.maps.TencentMap;
-import com.tencent.tencentmap.mapsdk.maps.TencentMapOptions;
import com.tencent.tencentmap.mapsdk.maps.TextureMapView;
-import com.tencent.tencentmap.mapsdk.maps.model.LatLng;
public class TestMapViewActivity extends AppCompatActivity {
diff --git a/positions/src/main/java/cc/winboll/studio/positions/fragments/PositionsFragment.java b/positions/src/main/java/cc/winboll/studio/positions/fragments/PositionsFragment.java
index 424891e..378f2f0 100644
--- a/positions/src/main/java/cc/winboll/studio/positions/fragments/PositionsFragment.java
+++ b/positions/src/main/java/cc/winboll/studio/positions/fragments/PositionsFragment.java
@@ -5,6 +5,11 @@ package cc.winboll.studio.positions.fragments;
* @Date 2025/02/20 12:57:50
* @Describe 联系人
*/
+import android.Manifest;
+import android.content.pm.PackageManager;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -12,11 +17,13 @@ import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.core.app.ActivityCompat;
import androidx.fragment.app.Fragment;
import cc.winboll.studio.positions.R;
-import com.hjq.toast.ToastUtils;
+import android.widget.Button;
public class PositionsFragment extends Fragment {
@@ -25,6 +32,12 @@ public class PositionsFragment extends Fragment {
private static final String ARG_PAGE = "ARG_PAGE";
private int mPage;
+ private LocationManager locationManager;
+ private TextView locationTextView;
+ double latitudeLock;
+ double longitudeLock;
+
+
// public static PositionsFragment newInstance(int page) {
// Bundle args = new Bundle();
// args.putInt(ARG_PAGE, page);
@@ -50,6 +63,23 @@ public class PositionsFragment extends Fragment {
// Toolbar toolbar = viewMain.findViewById(R.id.toolbar);
// getActivity().getMenuInflater().inflate(R.menu.toolbar_positions, toolbar.getMenu());
//
+ locationTextView = viewMain.findViewById(R.id.current_position_tv);
+ locationManager = (LocationManager) getActivity().getSystemService(getActivity().LOCATION_SERVICE);
+
+ Button btnLockingPosition = viewMain.findViewById(R.id.locking_position_btn);
+ btnLockingPosition.setOnClickListener(new View.OnClickListener(){
+ @Override
+ public void onClick(View p1) {
+ TXMSFragment.moveToLocation(latitudeLock, longitudeLock);
+ }
+ });
+
+ // 请求GPS定位
+ locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, gpsLocationListener);
+
+ // 请求基站(网络)定位
+ locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, networkLocationListener);
+
return viewMain;
}
@@ -58,6 +88,20 @@ public class PositionsFragment extends Fragment {
inflater.inflate(R.menu.toolbar_positions, menu);
super.onCreateOptionsMenu(menu, inflater);
}
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ if (locationManager != null) {
+ if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
+ ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
+ return;
+ }
+ locationManager.removeUpdates(gpsLocationListener);
+ locationManager.removeUpdates(networkLocationListener);
+ }
+ }
+
@Override
@@ -72,4 +116,51 @@ public class PositionsFragment extends Fragment {
// }
return super.onOptionsItemSelected(item);
}
+
+ private LocationListener gpsLocationListener = new LocationListener() {
+ @Override
+ public void onLocationChanged(Location location) {
+ // 处理GPS定位结果
+ updateLocation(location);
+ }
+
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {}
+
+ @Override
+ public void onProviderEnabled(String provider) {}
+
+ @Override
+ public void onProviderDisabled(String provider) {}
+ };
+
+ private LocationListener networkLocationListener = new LocationListener() {
+ @Override
+ public void onLocationChanged(Location location) {
+ // 处理基站(网络)定位结果
+ updateLocation(location);
+ }
+
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {}
+
+ @Override
+ public void onProviderEnabled(String provider) {}
+
+ @Override
+ public void onProviderDisabled(String provider) {}
+ };
+
+ private void updateLocation(Location location) {
+ if (location != null) {
+ double latitude = location.getLatitude();
+ double longitude = location.getLongitude();
+
+ latitudeLock = latitude;
+ longitudeLock = longitude;
+
+ // 简单的融合示例:这里只是显示最后获取到的位置,实际应用中需要更复杂的融合算法
+ locationTextView.setText("Latitude: " + latitude + "\nLongitude: " + longitude);
+ }
+ }
}
diff --git a/positions/src/main/java/cc/winboll/studio/positions/fragments/TXMSFragment.java b/positions/src/main/java/cc/winboll/studio/positions/fragments/TXMSFragment.java
index d56761d..27ad211 100644
--- a/positions/src/main/java/cc/winboll/studio/positions/fragments/TXMSFragment.java
+++ b/positions/src/main/java/cc/winboll/studio/positions/fragments/TXMSFragment.java
@@ -77,11 +77,13 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
private MyLocationStyle mMyLocationStyle;
ArrayList locationPostionModelList;
Location lastLocation;
+ static TXMSFragment _TXMSFragment;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
+ _TXMSFragment = TXMSFragment.this;
View viewRoot = inflater.inflate(R.layout.fragment_txms, container, false);
locationPostionModelList = new ArrayList();
@@ -121,31 +123,31 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
loadLocations();
/*UiSettings uiSettings = tencentMap.getUiSettings();
- uiSettings.setAllGesturesEnabled(true);
- mTencentLocationManager = TencentLocationManager.getInstance(getActivity());
- //创建定位请求
- mTencentLocationRequest = TencentLocationRequest.create();
- mTencentLocationManager.requestLocationUpdates(mTencentLocationRequest, this);
+ uiSettings.setAllGesturesEnabled(true);
+ mTencentLocationManager = TencentLocationManager.getInstance(getActivity());
+ //创建定位请求
+ mTencentLocationRequest = TencentLocationRequest.create();
+ mTencentLocationManager.requestLocationUpdates(mTencentLocationRequest, this);
- //地图上设置定位数据源
- tencentMap.setLocationSource(this);
- //设置当前位置可见
- tencentMap.setMyLocationEnabled(true);
- //设置定位图标样式
- MyLocationStyle myLocationStyle = new MyLocationStyle();
- tencentMap.setMyLocationEnabled(true);
- tencentMap.setMyLocationStyle(myLocationStyle);
- //startLocation();
- */
+ //地图上设置定位数据源
+ tencentMap.setLocationSource(this);
+ //设置当前位置可见
+ tencentMap.setMyLocationEnabled(true);
+ //设置定位图标样式
+ MyLocationStyle myLocationStyle = new MyLocationStyle();
+ tencentMap.setMyLocationEnabled(true);
+ tencentMap.setMyLocationStyle(myLocationStyle);
+ //startLocation();
+ */
//
// 本机 GPS 定位服务调用服务
//
- LocationManager locationManager = (LocationManager) getActivity().getSystemService(getActivity().LOCATION_SERVICE);
- String provider = LocationManager.GPS_PROVIDER;
- Location location = locationManager.getLastKnownLocation(provider);
- locationManager.requestLocationUpdates(provider, 2000, 10, locationListener);
- moveToLocation(location);
+// LocationManager locationManager = (LocationManager) getActivity().getSystemService(getActivity().LOCATION_SERVICE);
+// String provider = LocationManager.GPS_PROVIDER;
+// Location location = locationManager.getLastKnownLocation(provider);
+// locationManager.requestLocationUpdates(provider, 2000, 10, locationListener);
+// moveToLocation(location);
return viewRoot;
}
@@ -193,7 +195,7 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
// double longitude = location.getLongitude();
String szTemp = String.format("Latitude %f, Longitude %f, Accuracy %f", location.getLatitude(), location.getLongitude(), location.getAccuracy());
LogUtils.d(TAG, szTemp);
-
+
moveToLocation(location);
}
@@ -208,6 +210,21 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
};
+ // 创建Location对象方法
+ private Location createLocationFromLatLng(double latitudeLock, double longitudeLock) {
+ Location location = new Location("Tencent_Map_Manual");
+
+ // 设置基础坐标
+ location.setLatitude(latitudeLock);
+ location.setLongitude(longitudeLock);
+
+ // 设置必要元数据
+ location.setTime(System.currentTimeMillis());
+ location.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos());
+ location.setAccuracy(5.0f); // 手动点击精度设为5米
+
+ return location;
+ }
// 创建Location对象方法
private Location createLocationFromLatLng(LatLng latLng) {
@@ -257,7 +274,7 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
switch (msg.what) {
case REALTIME_POSITIONING:
// 在这里处理接收到消息后的逻辑,比如更新 UI
-
+
break;
default:
break;
@@ -328,6 +345,13 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
return bitmap;
}
+ public static void moveToLocation(double latitudeLock, double longitudeLock) {
+ if (_TXMSFragment != null) {
+ Location location = _TXMSFragment.createLocationFromLatLng(latitudeLock, longitudeLock);
+ _TXMSFragment.moveToLocation(location);
+ }
+ }
+
private void moveToLocation(Location location) {
ToastUtils.show(String.format("%s", location.toString()));
@@ -349,7 +373,7 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
handler.sendMessage(message);
}
-
+
/**
diff --git a/positions/src/main/java/cc/winboll/studio/positions/services/AssistantService.java b/positions/src/main/java/cc/winboll/studio/positions/services/AssistantService.java
index 192d8c2..65e3353 100644
--- a/positions/src/main/java/cc/winboll/studio/positions/services/AssistantService.java
+++ b/positions/src/main/java/cc/winboll/studio/positions/services/AssistantService.java
@@ -12,11 +12,9 @@ import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Binder;
import android.os.IBinder;
+import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.positions.beans.MainServiceBean;
import cc.winboll.studio.positions.services.MainService;
-import cc.winboll.studio.libappbase.LogUtils;
-import cc.winboll.studio.libappbase.SOS;
-import cc.winboll.studio.libappbase.bean.APPSOSBean;
public class AssistantService extends Service {
diff --git a/positions/src/main/java/cc/winboll/studio/positions/services/MainService.java b/positions/src/main/java/cc/winboll/studio/positions/services/MainService.java
index 1288821..c818675 100644
--- a/positions/src/main/java/cc/winboll/studio/positions/services/MainService.java
+++ b/positions/src/main/java/cc/winboll/studio/positions/services/MainService.java
@@ -18,8 +18,9 @@ import android.content.ServiceConnection;
import android.os.Binder;
import android.os.IBinder;
import cc.winboll.studio.libappbase.LogUtils;
-import cc.winboll.studio.libappbase.SOS;
-import cc.winboll.studio.libappbase.bean.APPSOSBean;
+import cc.winboll.studio.libappbase.sos.SOS;
+import cc.winboll.studio.libappbase.sos.WinBoll;
+import cc.winboll.studio.positions.App;
import cc.winboll.studio.positions.beans.MainServiceBean;
import cc.winboll.studio.positions.handlers.MainServiceHandler;
import cc.winboll.studio.positions.receivers.MainReceiver;
@@ -89,14 +90,18 @@ public class MainService extends Service {
// 唤醒守护进程
wakeupAndBindAssistant();
// 召唤 WinBoll APP 绑定本服务
- SOS.bindToAPPService(this, new APPSOSBean(getPackageName(), MainService.class.getName()));
+ if (App.isDebuging()) {
+ WinBoll.bindToAPPBaseBeta(this, MainService.class.getName());
+ } else {
+ WinBoll.bindToAPPBase(this, MainService.class.getName());
+ }
if (mMainReceiver == null) {
// 注册广播接收器
mMainReceiver = new MainReceiver(this);
mMainReceiver.registerAction(this);
}
-
+
MainServiceThread.getInstance(this, mMainServiceHandler).start();
@@ -172,7 +177,11 @@ public class MainService extends Service {
if (mMainServiceBean.isEnable()) {
// 唤醒守护进程
wakeupAndBindAssistant();
- SOS.sosWinBollService(getApplicationContext(), new APPSOSBean(getPackageName(), MainService.class.getName()));
+ if (App.isDebuging()) {
+ SOS.sosToAppBaseBeta(MainService.this, MainService.class.getName());
+ } else {
+ SOS.sosToAppBase(MainService.this, MainService.class.getName());
+ }
}
isBound = false;
mAssistantService = null;
diff --git a/positions/src/main/java/cc/winboll/studio/positions/threads/MainServiceThread.java b/positions/src/main/java/cc/winboll/studio/positions/threads/MainServiceThread.java
index c0eab8c..8cb99ae 100644
--- a/positions/src/main/java/cc/winboll/studio/positions/threads/MainServiceThread.java
+++ b/positions/src/main/java/cc/winboll/studio/positions/threads/MainServiceThread.java
@@ -5,12 +5,8 @@ package cc.winboll.studio.positions.threads;
* @Date 2025/02/14 03:46:44
*/
import android.content.Context;
-import cc.winboll.studio.positions.handlers.MainServiceHandler;
-import cc.winboll.studio.positions.services.MainService;
import cc.winboll.studio.libappbase.LogUtils;
-import cc.winboll.studio.libappbase.SOS;
-import cc.winboll.studio.libappbase.bean.APPSOSBean;
-import com.hjq.toast.ToastUtils;
+import cc.winboll.studio.positions.handlers.MainServiceHandler;
import java.lang.ref.WeakReference;
public class MainServiceThread extends Thread {
diff --git a/positions/src/main/res/layout/activity_main2.xml b/positions/src/main/res/layout/activity_main2.xml
new file mode 100644
index 0000000..07434d4
--- /dev/null
+++ b/positions/src/main/res/layout/activity_main2.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
diff --git a/positions/src/main/res/layout/fragment_positions.xml b/positions/src/main/res/layout/fragment_positions.xml
index 0572b9e..f559f5c 100644
--- a/positions/src/main/res/layout/fragment_positions.xml
+++ b/positions/src/main/res/layout/fragment_positions.xml
@@ -1,14 +1,31 @@
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+
+
+
+
+
+
+
-
-
+
diff --git a/positions/src/main/res/menu/toolbar_main.xml b/positions/src/main/res/menu/toolbar_main.xml
index 1ca20e7..a78aae6 100644
--- a/positions/src/main/res/menu/toolbar_main.xml
+++ b/positions/src/main/res/menu/toolbar_main.xml
@@ -4,6 +4,9 @@
+