添加初步联合定位功能
This commit is contained in:
		@@ -51,35 +51,52 @@ android {
 | 
				
			|||||||
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
 | 
					            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    compileOptions {
 | 
					 | 
				
			||||||
        sourceCompatibility JavaVersion.VERSION_1_8
 | 
					 | 
				
			||||||
        targetCompatibility JavaVersion.VERSION_1_8
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dependencies {
 | 
					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 '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.map:tencent-map-vector-sdk:6.2.1.250120.3f971009.140342819'
 | 
				
			||||||
    // 基础库
 | 
					    // 腾讯地图基础库
 | 
				
			||||||
    implementation 'com.tencent.openmap:foundation:0.5.6.9be4e02'
 | 
					    implementation 'com.tencent.openmap:foundation:0.5.6.9be4e02'
 | 
				
			||||||
    implementation 'com.tencent.map:sdk-utilities:1.0.9'
 | 
					    implementation 'com.tencent.map:sdk-utilities:1.0.9'
 | 
				
			||||||
    implementation 'com.tencent.map.geolocation:TencentLocationSdk-openplatform:7.5.4.3'
 | 
					    implementation 'com.tencent.map.geolocation:TencentLocationSdk-openplatform:7.5.4.3'
 | 
				
			||||||
    implementation 'com.google.code.gson:gson:2.8.5'
 | 
					    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 'io.github.medyo:android-about-page:2.0.0'
 | 
				
			||||||
 | 
					    // 吐司类库
 | 
				
			||||||
    implementation 'com.github.getActivity:ToastUtils:10.5'
 | 
					    implementation 'com.github.getActivity:ToastUtils:10.5'
 | 
				
			||||||
 | 
					    // 网络连接类库
 | 
				
			||||||
 | 
					    implementation 'com.squareup.okhttp3:okhttp:4.4.1'
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    implementation 'cc.winboll.studio:libapputils:9.3.2'
 | 
					    // Android 类库
 | 
				
			||||||
    implementation 'cc.winboll.studio:libappbase:1.5.6'
 | 
					    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'
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,8 +1,8 @@
 | 
				
			|||||||
#Created by .winboll/winboll_app_build.gradle
 | 
					#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
 | 
					stageCount=0
 | 
				
			||||||
libraryProject=
 | 
					libraryProject=
 | 
				
			||||||
baseVersion=1.0
 | 
					baseVersion=1.0
 | 
				
			||||||
publishVersion=1.0.0
 | 
					publishVersion=1.0.0
 | 
				
			||||||
buildCount=246
 | 
					buildCount=252
 | 
				
			||||||
baseBetaVersion=1.0.1
 | 
					baseBetaVersion=1.0.1
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -60,6 +60,7 @@
 | 
				
			|||||||
        </activity>
 | 
					        </activity>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <activity android:name=".MainSimpleActivity">
 | 
					        <activity android:name=".MainSimpleActivity">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        </activity>
 | 
					        </activity>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <activity android:name="com.tencent.map.vector.demo.DemoMainActivity">
 | 
					        <activity android:name="com.tencent.map.vector.demo.DemoMainActivity">
 | 
				
			||||||
@@ -735,6 +736,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        <activity android:name="cc.winboll.studio.positions.activities.TestMapViewActivity"/>
 | 
					        <activity android:name="cc.winboll.studio.positions.activities.TestMapViewActivity"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <activity android:name="cc.winboll.studio.positions.activities.JointPositioningActivity"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    </application>
 | 
					    </application>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</manifest>
 | 
					</manifest>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,6 @@ import android.content.Context;
 | 
				
			|||||||
import android.content.Intent;
 | 
					import android.content.Intent;
 | 
				
			||||||
import android.os.Build;
 | 
					import android.os.Build;
 | 
				
			||||||
import android.os.Bundle;
 | 
					import android.os.Bundle;
 | 
				
			||||||
import android.os.Message;
 | 
					 | 
				
			||||||
import android.telecom.TelecomManager;
 | 
					import android.telecom.TelecomManager;
 | 
				
			||||||
import android.view.Menu;
 | 
					import android.view.Menu;
 | 
				
			||||||
import android.view.MenuItem;
 | 
					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.bean.APPInfo;
 | 
				
			||||||
import cc.winboll.studio.libapputils.view.YesNoAlertDialog;
 | 
					import cc.winboll.studio.libapputils.view.YesNoAlertDialog;
 | 
				
			||||||
import cc.winboll.studio.positions.R;
 | 
					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.activities.SettingsActivity;
 | 
				
			||||||
import cc.winboll.studio.positions.beans.MainServiceBean;
 | 
					import cc.winboll.studio.positions.beans.MainServiceBean;
 | 
				
			||||||
import cc.winboll.studio.positions.fragments.LogFragment;
 | 
					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);
 | 
					            Intent intent = new Intent(this, SettingsActivity.class);
 | 
				
			||||||
            startActivity(intent);
 | 
					            startActivity(intent);
 | 
				
			||||||
            //WinBollActivityManager.getInstance(this).startWinBollActivity(this, CallActivity.class);
 | 
					            //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) {
 | 
					        } else if (item.getItemId() == R.id.item_demomain) {
 | 
				
			||||||
            Intent intent = new Intent(this, com.tencent.map.vector.demo.DemoMainActivity.class);
 | 
					            Intent intent = new Intent(this, com.tencent.map.vector.demo.DemoMainActivity.class);
 | 
				
			||||||
            startActivity(intent);
 | 
					            startActivity(intent);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,6 +29,7 @@ import cc.winboll.studio.libappbase.LogView;
 | 
				
			|||||||
import cc.winboll.studio.positions.R;
 | 
					import cc.winboll.studio.positions.R;
 | 
				
			||||||
import cc.winboll.studio.positions.activities.SettingsActivity;
 | 
					import cc.winboll.studio.positions.activities.SettingsActivity;
 | 
				
			||||||
import cc.winboll.studio.positions.activities.TestMapViewActivity;
 | 
					import cc.winboll.studio.positions.activities.TestMapViewActivity;
 | 
				
			||||||
 | 
					import cc.winboll.studio.positions.beans.PostionModel;
 | 
				
			||||||
import cc.winboll.studio.positions.utils.LocationFileStorage;
 | 
					import cc.winboll.studio.positions.utils.LocationFileStorage;
 | 
				
			||||||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
 | 
					import com.google.android.material.floatingactionbutton.FloatingActionButton;
 | 
				
			||||||
import com.google.android.material.snackbar.Snackbar;
 | 
					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.ArrayList;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
import pub.devrel.easypermissions.EasyPermissions;
 | 
					import pub.devrel.easypermissions.EasyPermissions;
 | 
				
			||||||
import cc.winboll.studio.positions.beans.PostionModel;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class MainSimpleActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks,LocationSource, TencentLocationListener {
 | 
					public class MainSimpleActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks,LocationSource, TencentLocationListener {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,13 +6,9 @@ package cc.winboll.studio.positions.activities;
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
import android.graphics.Color;
 | 
					import android.graphics.Color;
 | 
				
			||||||
import android.os.Bundle;
 | 
					import android.os.Bundle;
 | 
				
			||||||
import android.widget.Button;
 | 
					 | 
				
			||||||
import android.widget.FrameLayout;
 | 
					 | 
				
			||||||
import androidx.appcompat.app.AppCompatActivity;
 | 
					import androidx.appcompat.app.AppCompatActivity;
 | 
				
			||||||
import cc.winboll.studio.positions.R;
 | 
					import cc.winboll.studio.positions.R;
 | 
				
			||||||
import cc.winboll.studio.positions.views.GridMapView;
 | 
					import cc.winboll.studio.positions.views.GridMapView;
 | 
				
			||||||
import android.view.View.OnClickListener;
 | 
					 | 
				
			||||||
import android.view.View;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class GridMapActivity extends AppCompatActivity {
 | 
					public class GridMapActivity extends AppCompatActivity {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -16,12 +16,12 @@ import android.view.WindowManager;
 | 
				
			|||||||
import android.widget.Toast;
 | 
					import android.widget.Toast;
 | 
				
			||||||
import androidx.appcompat.app.AlertDialog;
 | 
					import androidx.appcompat.app.AlertDialog;
 | 
				
			||||||
import androidx.appcompat.app.AppCompatActivity;
 | 
					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 cc.winboll.studio.positions.R;
 | 
				
			||||||
import com.hjq.toast.ToastUtils;
 | 
					import com.hjq.toast.ToastUtils;
 | 
				
			||||||
import java.lang.reflect.Field;
 | 
					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 {
 | 
					public class SettingsActivity extends AppCompatActivity implements IWinBollActivity {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,20 +4,11 @@ package cc.winboll.studio.positions.activities;
 | 
				
			|||||||
 * @Author ZhanGSKen@AliYun.Com
 | 
					 * @Author ZhanGSKen@AliYun.Com
 | 
				
			||||||
 * @Date 2025/02/24 12:14:04
 | 
					 * @Date 2025/02/24 12:14:04
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
import androidx.appcompat.app.AppCompatActivity;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import android.content.Intent;
 | 
					 | 
				
			||||||
import android.os.Bundle;
 | 
					import android.os.Bundle;
 | 
				
			||||||
import android.util.Log;
 | 
					import androidx.appcompat.app.AppCompatActivity;
 | 
				
			||||||
import android.view.View;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import cc.winboll.studio.positions.R;
 | 
					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.TencentMap;
 | 
				
			||||||
import com.tencent.tencentmap.mapsdk.maps.TencentMapOptions;
 | 
					 | 
				
			||||||
import com.tencent.tencentmap.mapsdk.maps.TextureMapView;
 | 
					import com.tencent.tencentmap.mapsdk.maps.TextureMapView;
 | 
				
			||||||
import com.tencent.tencentmap.mapsdk.maps.model.LatLng;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class TestMapViewActivity extends AppCompatActivity {
 | 
					public class TestMapViewActivity extends AppCompatActivity {
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,6 +5,11 @@ package cc.winboll.studio.positions.fragments;
 | 
				
			|||||||
 * @Date 2025/02/20 12:57:50
 | 
					 * @Date 2025/02/20 12:57:50
 | 
				
			||||||
 * @Describe 联系人
 | 
					 * @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.os.Bundle;
 | 
				
			||||||
import android.view.LayoutInflater;
 | 
					import android.view.LayoutInflater;
 | 
				
			||||||
import android.view.Menu;
 | 
					import android.view.Menu;
 | 
				
			||||||
@@ -12,11 +17,13 @@ import android.view.MenuInflater;
 | 
				
			|||||||
import android.view.MenuItem;
 | 
					import android.view.MenuItem;
 | 
				
			||||||
import android.view.View;
 | 
					import android.view.View;
 | 
				
			||||||
import android.view.ViewGroup;
 | 
					import android.view.ViewGroup;
 | 
				
			||||||
 | 
					import android.widget.TextView;
 | 
				
			||||||
import androidx.annotation.NonNull;
 | 
					import androidx.annotation.NonNull;
 | 
				
			||||||
import androidx.annotation.Nullable;
 | 
					import androidx.annotation.Nullable;
 | 
				
			||||||
 | 
					import androidx.core.app.ActivityCompat;
 | 
				
			||||||
import androidx.fragment.app.Fragment;
 | 
					import androidx.fragment.app.Fragment;
 | 
				
			||||||
import cc.winboll.studio.positions.R;
 | 
					import cc.winboll.studio.positions.R;
 | 
				
			||||||
import com.hjq.toast.ToastUtils;
 | 
					import android.widget.Button;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class PositionsFragment extends Fragment {
 | 
					public class PositionsFragment extends Fragment {
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
@@ -25,6 +32,12 @@ public class PositionsFragment extends Fragment {
 | 
				
			|||||||
    private static final String ARG_PAGE = "ARG_PAGE";
 | 
					    private static final String ARG_PAGE = "ARG_PAGE";
 | 
				
			||||||
    private int mPage;
 | 
					    private int mPage;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private LocationManager locationManager;
 | 
				
			||||||
 | 
					    private TextView locationTextView;
 | 
				
			||||||
 | 
					    double latitudeLock;
 | 
				
			||||||
 | 
					    double longitudeLock;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
//    public static PositionsFragment newInstance(int page) {
 | 
					//    public static PositionsFragment newInstance(int page) {
 | 
				
			||||||
//        Bundle args = new Bundle();
 | 
					//        Bundle args = new Bundle();
 | 
				
			||||||
//        args.putInt(ARG_PAGE, page);
 | 
					//        args.putInt(ARG_PAGE, page);
 | 
				
			||||||
@@ -50,6 +63,23 @@ public class PositionsFragment extends Fragment {
 | 
				
			|||||||
//        Toolbar toolbar = viewMain.findViewById(R.id.toolbar);
 | 
					//        Toolbar toolbar = viewMain.findViewById(R.id.toolbar);
 | 
				
			||||||
//        getActivity().getMenuInflater().inflate(R.menu.toolbar_positions,  toolbar.getMenu());
 | 
					//        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;
 | 
					        return viewMain;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
@@ -59,6 +89,20 @@ public class PositionsFragment extends Fragment {
 | 
				
			|||||||
        super.onCreateOptionsMenu(menu, inflater);
 | 
					        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
 | 
					    @Override
 | 
				
			||||||
    public boolean onOptionsItemSelected(MenuItem item) {
 | 
					    public boolean onOptionsItemSelected(MenuItem item) {
 | 
				
			||||||
@@ -72,4 +116,51 @@ public class PositionsFragment extends Fragment {
 | 
				
			|||||||
//        }
 | 
					//        }
 | 
				
			||||||
        return super.onOptionsItemSelected(item);
 | 
					        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);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -77,11 +77,13 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
 | 
				
			|||||||
    private MyLocationStyle mMyLocationStyle;
 | 
					    private MyLocationStyle mMyLocationStyle;
 | 
				
			||||||
    ArrayList<PostionModel> locationPostionModelList;
 | 
					    ArrayList<PostionModel> locationPostionModelList;
 | 
				
			||||||
    Location lastLocation;
 | 
					    Location lastLocation;
 | 
				
			||||||
 | 
					    static TXMSFragment _TXMSFragment;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Nullable
 | 
					    @Nullable
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
 | 
					    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
 | 
				
			||||||
                             @Nullable Bundle savedInstanceState) {
 | 
					                             @Nullable Bundle savedInstanceState) {
 | 
				
			||||||
 | 
					        _TXMSFragment = TXMSFragment.this;
 | 
				
			||||||
        View viewRoot = inflater.inflate(R.layout.fragment_txms, container, false);
 | 
					        View viewRoot = inflater.inflate(R.layout.fragment_txms, container, false);
 | 
				
			||||||
        locationPostionModelList = new ArrayList<PostionModel>();
 | 
					        locationPostionModelList = new ArrayList<PostionModel>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -121,31 +123,31 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
 | 
				
			|||||||
        loadLocations();
 | 
					        loadLocations();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /*UiSettings uiSettings = tencentMap.getUiSettings();
 | 
					        /*UiSettings uiSettings = tencentMap.getUiSettings();
 | 
				
			||||||
        uiSettings.setAllGesturesEnabled(true);
 | 
					         uiSettings.setAllGesturesEnabled(true);
 | 
				
			||||||
        mTencentLocationManager = TencentLocationManager.getInstance(getActivity());
 | 
					         mTencentLocationManager = TencentLocationManager.getInstance(getActivity());
 | 
				
			||||||
        //创建定位请求
 | 
					         //创建定位请求
 | 
				
			||||||
        mTencentLocationRequest = TencentLocationRequest.create();
 | 
					         mTencentLocationRequest = TencentLocationRequest.create();
 | 
				
			||||||
        mTencentLocationManager.requestLocationUpdates(mTencentLocationRequest, this);
 | 
					         mTencentLocationManager.requestLocationUpdates(mTencentLocationRequest, this);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //地图上设置定位数据源
 | 
					         //地图上设置定位数据源
 | 
				
			||||||
        tencentMap.setLocationSource(this);
 | 
					         tencentMap.setLocationSource(this);
 | 
				
			||||||
        //设置当前位置可见
 | 
					         //设置当前位置可见
 | 
				
			||||||
        tencentMap.setMyLocationEnabled(true);
 | 
					         tencentMap.setMyLocationEnabled(true);
 | 
				
			||||||
        //设置定位图标样式
 | 
					         //设置定位图标样式
 | 
				
			||||||
        MyLocationStyle myLocationStyle = new MyLocationStyle();
 | 
					         MyLocationStyle myLocationStyle = new MyLocationStyle();
 | 
				
			||||||
        tencentMap.setMyLocationEnabled(true);
 | 
					         tencentMap.setMyLocationEnabled(true);
 | 
				
			||||||
        tencentMap.setMyLocationStyle(myLocationStyle);
 | 
					         tencentMap.setMyLocationStyle(myLocationStyle);
 | 
				
			||||||
        //startLocation();
 | 
					         //startLocation();
 | 
				
			||||||
        */
 | 
					         */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //
 | 
					        //
 | 
				
			||||||
        // 本机 GPS 定位服务调用服务
 | 
					        // 本机 GPS 定位服务调用服务
 | 
				
			||||||
        //
 | 
					        //
 | 
				
			||||||
        LocationManager locationManager = (LocationManager) getActivity().getSystemService(getActivity().LOCATION_SERVICE);
 | 
					//        LocationManager locationManager = (LocationManager) getActivity().getSystemService(getActivity().LOCATION_SERVICE);
 | 
				
			||||||
        String provider = LocationManager.GPS_PROVIDER;
 | 
					//        String provider = LocationManager.GPS_PROVIDER;
 | 
				
			||||||
        Location location = locationManager.getLastKnownLocation(provider);
 | 
					//        Location location = locationManager.getLastKnownLocation(provider);
 | 
				
			||||||
        locationManager.requestLocationUpdates(provider, 2000, 10, locationListener);
 | 
					//        locationManager.requestLocationUpdates(provider, 2000, 10, locationListener);
 | 
				
			||||||
        moveToLocation(location);
 | 
					//        moveToLocation(location);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return viewRoot;
 | 
					        return viewRoot;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -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对象方法
 | 
					    // 创建Location对象方法
 | 
				
			||||||
    private Location createLocationFromLatLng(LatLng latLng) {
 | 
					    private Location createLocationFromLatLng(LatLng latLng) {
 | 
				
			||||||
@@ -328,6 +345,13 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
 | 
				
			|||||||
        return bitmap;
 | 
					        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) {
 | 
					    private void moveToLocation(Location location) {
 | 
				
			||||||
        ToastUtils.show(String.format("%s", location.toString()));
 | 
					        ToastUtils.show(String.format("%s", location.toString()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,11 +12,9 @@ import android.content.Intent;
 | 
				
			|||||||
import android.content.ServiceConnection;
 | 
					import android.content.ServiceConnection;
 | 
				
			||||||
import android.os.Binder;
 | 
					import android.os.Binder;
 | 
				
			||||||
import android.os.IBinder;
 | 
					import android.os.IBinder;
 | 
				
			||||||
 | 
					import cc.winboll.studio.libappbase.LogUtils;
 | 
				
			||||||
import cc.winboll.studio.positions.beans.MainServiceBean;
 | 
					import cc.winboll.studio.positions.beans.MainServiceBean;
 | 
				
			||||||
import cc.winboll.studio.positions.services.MainService;
 | 
					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 {
 | 
					public class AssistantService extends Service {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,8 +18,9 @@ import android.content.ServiceConnection;
 | 
				
			|||||||
import android.os.Binder;
 | 
					import android.os.Binder;
 | 
				
			||||||
import android.os.IBinder;
 | 
					import android.os.IBinder;
 | 
				
			||||||
import cc.winboll.studio.libappbase.LogUtils;
 | 
					import cc.winboll.studio.libappbase.LogUtils;
 | 
				
			||||||
import cc.winboll.studio.libappbase.SOS;
 | 
					import cc.winboll.studio.libappbase.sos.SOS;
 | 
				
			||||||
import cc.winboll.studio.libappbase.bean.APPSOSBean;
 | 
					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.beans.MainServiceBean;
 | 
				
			||||||
import cc.winboll.studio.positions.handlers.MainServiceHandler;
 | 
					import cc.winboll.studio.positions.handlers.MainServiceHandler;
 | 
				
			||||||
import cc.winboll.studio.positions.receivers.MainReceiver;
 | 
					import cc.winboll.studio.positions.receivers.MainReceiver;
 | 
				
			||||||
@@ -89,7 +90,11 @@ public class MainService extends Service {
 | 
				
			|||||||
            // 唤醒守护进程
 | 
					            // 唤醒守护进程
 | 
				
			||||||
            wakeupAndBindAssistant();
 | 
					            wakeupAndBindAssistant();
 | 
				
			||||||
            // 召唤 WinBoll APP 绑定本服务
 | 
					            // 召唤 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) {
 | 
					            if (mMainReceiver == null) {
 | 
				
			||||||
                // 注册广播接收器
 | 
					                // 注册广播接收器
 | 
				
			||||||
@@ -172,7 +177,11 @@ public class MainService extends Service {
 | 
				
			|||||||
            if (mMainServiceBean.isEnable()) {
 | 
					            if (mMainServiceBean.isEnable()) {
 | 
				
			||||||
                // 唤醒守护进程
 | 
					                // 唤醒守护进程
 | 
				
			||||||
                wakeupAndBindAssistant();
 | 
					                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;
 | 
					            isBound = false;
 | 
				
			||||||
            mAssistantService = null;
 | 
					            mAssistantService = null;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,12 +5,8 @@ package cc.winboll.studio.positions.threads;
 | 
				
			|||||||
 * @Date 2025/02/14 03:46:44
 | 
					 * @Date 2025/02/14 03:46:44
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
import android.content.Context;
 | 
					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.LogUtils;
 | 
				
			||||||
import cc.winboll.studio.libappbase.SOS;
 | 
					import cc.winboll.studio.positions.handlers.MainServiceHandler;
 | 
				
			||||||
import cc.winboll.studio.libappbase.bean.APPSOSBean;
 | 
					 | 
				
			||||||
import com.hjq.toast.ToastUtils;
 | 
					 | 
				
			||||||
import java.lang.ref.WeakReference;
 | 
					import java.lang.ref.WeakReference;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class MainServiceThread extends Thread {
 | 
					public class MainServiceThread extends Thread {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										17
									
								
								positions/src/main/res/layout/activity_main2.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								positions/src/main/res/layout/activity_main2.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<LinearLayout
 | 
				
			||||||
 | 
						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"
 | 
				
			||||||
 | 
						android:background="#FFCAFECC">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<TextView
 | 
				
			||||||
 | 
							android:layout_width="wrap_content"
 | 
				
			||||||
 | 
							android:layout_height="wrap_content"
 | 
				
			||||||
 | 
							android:text="Text"
 | 
				
			||||||
 | 
							android:id="@+id/location_text_view"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1,14 +1,31 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="utf-8"?>
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
<LinearLayout
 | 
					<LinearLayout
 | 
				
			||||||
    xmlns:android="http://schemas.android.com/apk/res/android"
 | 
						xmlns:android="http://schemas.android.com/apk/res/android"
 | 
				
			||||||
    xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
						xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
				
			||||||
    android:orientation="vertical"
 | 
						android:orientation="vertical"
 | 
				
			||||||
    android:layout_width="match_parent"
 | 
						android:layout_width="match_parent"
 | 
				
			||||||
    android:layout_height="match_parent">
 | 
						android:layout_height="match_parent">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <TextView
 | 
						<LinearLayout
 | 
				
			||||||
        android:layout_width="wrap_content"
 | 
							android:orientation="horizontal"
 | 
				
			||||||
        android:layout_height="wrap_content"
 | 
							android:layout_width="match_parent"
 | 
				
			||||||
        android:text="fragment_positions"/>
 | 
							android:layout_height="wrap_content"
 | 
				
			||||||
 | 
							android:gravity="center_vertical">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							<TextView
 | 
				
			||||||
 | 
								android:layout_width="0dp"
 | 
				
			||||||
 | 
								android:layout_height="wrap_content"
 | 
				
			||||||
 | 
								android:text="fragment_positions"
 | 
				
			||||||
 | 
								android:layout_weight="1.0"
 | 
				
			||||||
 | 
								android:id="@+id/current_position_tv"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							<Button
 | 
				
			||||||
 | 
								android:layout_width="wrap_content"
 | 
				
			||||||
 | 
								android:layout_height="wrap_content"
 | 
				
			||||||
 | 
								android:text="定位"
 | 
				
			||||||
 | 
								android:id="@+id/locking_position_btn"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						</LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</LinearLayout>
 | 
					</LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,9 @@
 | 
				
			|||||||
    <item
 | 
					    <item
 | 
				
			||||||
        android:id="@+id/item_testmapview"
 | 
					        android:id="@+id/item_testmapview"
 | 
				
			||||||
        android:title="TestMapViewActivity"/>
 | 
					        android:title="TestMapViewActivity"/>
 | 
				
			||||||
 | 
					    <item
 | 
				
			||||||
 | 
					        android:id="@+id/item_joint_positioning"
 | 
				
			||||||
 | 
					        android:title="JointPositioningActivity"/>
 | 
				
			||||||
    <item
 | 
					    <item
 | 
				
			||||||
        android:id="@+id/item_demomain"
 | 
					        android:id="@+id/item_demomain"
 | 
				
			||||||
        android:title="DemoMainActivity"/>
 | 
					        android:title="DemoMainActivity"/>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user