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