0225_1615
This commit is contained in:
		| @@ -27,10 +27,12 @@ if (localFile.exists()) { | ||||
| def mapsdkkey = properties.getProperty('mapsdk.key', "") | ||||
|  | ||||
| android { | ||||
|     compileSdkVersion 29 | ||||
|     compileSdkVersion 30 | ||||
|     buildToolsVersion "30.0.3" | ||||
|      | ||||
|     defaultConfig { | ||||
|         applicationId "cc.winboll.studio.positions" | ||||
|         minSdkVersion 22 | ||||
|         minSdkVersion 26 | ||||
|         targetSdkVersion 29 | ||||
|         versionCode 1 | ||||
|         // versionName 更新后需要手动设置  | ||||
| @@ -62,7 +64,9 @@ dependencies { | ||||
|     implementation fileTree(include: ['*.jar'], dir: 'libs') | ||||
|     implementation 'androidx.recyclerview:recyclerview:1.1.0' | ||||
|     implementation 'androidx.appcompat:appcompat:1.1.0' | ||||
|     implementation 'androidx.constraintlayout:constraintlayout:1.1.3' | ||||
|     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' | ||||
| @@ -72,20 +76,8 @@ dependencies { | ||||
|     implementation 'com.tencent.map.geolocation:TencentLocationSdk-openplatform:7.5.4.3' | ||||
|     implementation 'com.google.code.gson:gson:2.8.5' | ||||
|      | ||||
|     // 二维码使用的类库 | ||||
|     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.jcraft:jsch:0.1.55' | ||||
|     implementation 'org.jsoup:jsoup:1.13.1' | ||||
|     implementation 'com.squareup.okhttp3:okhttp:4.4.1' | ||||
|      | ||||
|     //api '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 'cc.winboll.studio:libapputils:9.3.2' | ||||
|     implementation 'cc.winboll.studio:libappbase:1.5.6' | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| #Created by .winboll/winboll_app_build.gradle | ||||
| #Mon Feb 24 22:42:06 GMT 2025 | ||||
| #Tue Feb 25 05:04:52 GMT 2025 | ||||
| stageCount=0 | ||||
| libraryProject= | ||||
| baseVersion=1.0 | ||||
|   | ||||
| @@ -47,7 +47,7 @@ | ||||
|         tools:ignore="AllowBackup,GoogleAppIndexingWarning" | ||||
|         tools:targetApi="q"> | ||||
|  | ||||
|         <activity android:name=".MainActivity"> | ||||
|         <activity android:name=".MainSimpleActivity"> | ||||
|  | ||||
|             <intent-filter> | ||||
|  | ||||
|   | ||||
| @@ -36,7 +36,7 @@ import java.util.List; | ||||
| import com.tencent.map.vector.demo.AbsListActivity; | ||||
| import com.tencent.map.vector.demo.AbsActivity; | ||||
|  | ||||
| final public class Main2Activity extends AbsActivity implements IWinBollActivity, ViewPager.OnPageChangeListener, View.OnClickListener { | ||||
| final public class MainSimpleActivity extends AbsActivity implements IWinBollActivity, ViewPager.OnPageChangeListener, View.OnClickListener { | ||||
|  | ||||
| 	public static final String TAG = "MainActivity"; | ||||
|  | ||||
|   | ||||
| @@ -54,9 +54,9 @@ import java.util.List; | ||||
| import pub.devrel.easypermissions.EasyPermissions; | ||||
| import cc.winboll.studio.positions.beans.LocationJson; | ||||
| 
 | ||||
| public class MainActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks,LocationSource, TencentLocationListener { | ||||
| public class MainSimpleActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks,LocationSource, TencentLocationListener { | ||||
| 
 | ||||
|     public static final String TAG ="MainActivity"; | ||||
|     public static final String TAG ="MainSimpleActivity"; | ||||
| 
 | ||||
|     private static final int PERMISSION_REQUEST_CODE = 1; | ||||
| 
 | ||||
| @@ -75,7 +75,7 @@ public class MainActivity extends AppCompatActivity implements EasyPermissions.P | ||||
|     @Override | ||||
|     protected void onCreate(Bundle savedInstanceState) { | ||||
|         super.onCreate(savedInstanceState); | ||||
|         setContentView(R.layout.activity_main); | ||||
|         setContentView(R.layout.activity_main_simple); | ||||
|          | ||||
|         locationJsonList = new ArrayList<LocationJson>(); | ||||
|          | ||||
| @@ -0,0 +1,461 @@ | ||||
| package cc.winboll.studio.positions.fragments; | ||||
|  | ||||
| /** | ||||
|  * @Author ZhanGSKen@AliYun.Com | ||||
|  * @Date 2025/02/25 12:44:39 | ||||
|  * @Describe 腾讯地图服务视图 | ||||
|  */ | ||||
| import android.Manifest; | ||||
| import android.content.Intent; | ||||
| import android.content.pm.PackageManager; | ||||
| import android.graphics.Bitmap; | ||||
| import android.graphics.BitmapFactory; | ||||
| import android.graphics.Matrix; | ||||
| import android.location.Location; | ||||
| import android.os.Bundle; | ||||
| import android.os.Looper; | ||||
| import android.os.SystemClock; | ||||
| import android.util.Log; | ||||
| import android.view.Menu; | ||||
| import android.view.MenuItem; | ||||
| import android.view.View; | ||||
| import android.widget.TextView; | ||||
| import android.widget.Toast; | ||||
| import androidx.annotation.NonNull; | ||||
| import androidx.appcompat.app.AppCompatActivity; | ||||
| import androidx.appcompat.widget.Toolbar; | ||||
| import androidx.core.app.ActivityCompat; | ||||
| import androidx.core.content.ContextCompat; | ||||
| 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.utils.LocationFileStorage; | ||||
| import com.google.android.material.floatingactionbutton.FloatingActionButton; | ||||
| import com.google.android.material.snackbar.Snackbar; | ||||
| import com.tencent.map.geolocation.TencentLocation; | ||||
| import com.tencent.map.geolocation.TencentLocationListener; | ||||
| import com.tencent.map.geolocation.TencentLocationManager; | ||||
| import com.tencent.map.geolocation.TencentLocationRequest; | ||||
| import com.tencent.tencentmap.mapsdk.maps.CameraUpdate; | ||||
| import com.tencent.tencentmap.mapsdk.maps.CameraUpdateFactory; | ||||
| import com.tencent.tencentmap.mapsdk.maps.LocationSource; | ||||
| import com.tencent.tencentmap.mapsdk.maps.TencentMap; | ||||
| import com.tencent.tencentmap.mapsdk.maps.TencentMapInitializer; | ||||
| import com.tencent.tencentmap.mapsdk.maps.TextureMapView; | ||||
| import com.tencent.tencentmap.mapsdk.maps.model.BitmapDescriptor; | ||||
| import com.tencent.tencentmap.mapsdk.maps.model.BitmapDescriptorFactory; | ||||
| import com.tencent.tencentmap.mapsdk.maps.model.CameraPosition; | ||||
| import com.tencent.tencentmap.mapsdk.maps.model.LatLng; | ||||
| import com.tencent.tencentmap.mapsdk.maps.model.Marker; | ||||
| import com.tencent.tencentmap.mapsdk.maps.model.MarkerOptions; | ||||
| 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.LocationJson; | ||||
| import android.os.Bundle; | ||||
| import android.view.LayoutInflater; | ||||
| import android.view.View; | ||||
| import android.view.ViewGroup; | ||||
| import androidx.fragment.app.Fragment; | ||||
| import cc.winboll.studio.positions.R; | ||||
| import cc.winboll.studio.libappbase.LogView; | ||||
| import androidx.annotation.Nullable; | ||||
| import androidx.annotation.NonNull; | ||||
| import android.graphics.Color; | ||||
| import android.widget.TextView; | ||||
| import cc.winboll.studio.positions.views.GridMapView; | ||||
| import com.tencent.tencentmap.mapsdk.maps.MapView; | ||||
| import com.tencent.tencentmap.mapsdk.maps.TencentMap; | ||||
| import com.tencent.tencentmap.mapsdk.maps.TextureMapView; | ||||
|  | ||||
| public class TXMSFragment extends Fragment implements EasyPermissions.PermissionCallbacks,LocationSource, TencentLocationListener { | ||||
|      | ||||
|     public static final String TAG = "TXMSFragment"; | ||||
|      | ||||
|      | ||||
|     private static final String ARG_PAGE = "ARG_PAGE"; | ||||
|     private int mPage; | ||||
|     private TextureMapView mapView; | ||||
|     protected TencentMap tencentMap; | ||||
|     TextView mtvInfo; | ||||
|     private LocationSource.OnLocationChangedListener locationChangedListener; | ||||
|  | ||||
|     private TencentLocationManager locationManager; | ||||
|     private TencentLocationRequest locationRequest; | ||||
|     private MyLocationStyle locationStyle; | ||||
|     ArrayList<LocationJson> locationJsonList; | ||||
|  | ||||
|     public static TXMSFragment newInstance(int page) { | ||||
|         Bundle args = new Bundle(); | ||||
|         args.putInt(ARG_PAGE, page); | ||||
|         TXMSFragment fragment = new GmsFragment(); | ||||
|         fragment.setArguments(args); | ||||
|         return fragment; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void onCreate(Bundle savedInstanceState) { | ||||
|         super.onCreate(savedInstanceState); | ||||
|         if (getArguments()!= null) { | ||||
|             mPage = getArguments().getInt(ARG_PAGE); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Nullable | ||||
|     @Override | ||||
|     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, | ||||
|                              @Nullable Bundle savedInstanceState) { | ||||
|         View viewRoot = inflater.inflate(R.layout.fragment_gms, container, false); | ||||
|         locationJsonList = new ArrayList<LocationJson>(); | ||||
|  | ||||
|         mLogView = viewRoot.findViewById(R.id.logview); | ||||
|         mLogView.start(); | ||||
|  | ||||
|         TencentMapInitializer.setAgreePrivacy(this, true); | ||||
|         TencentMapInitializer.start(this); | ||||
|         TencentLocationManager.setUserAgreePrivacy(true); | ||||
|  | ||||
|  | ||||
|         mapView = viewRoot.findViewById(R.id.mapview); | ||||
|         mapView.setOpaque(false); | ||||
|         //创建tencentMap地图对象,可以完成对地图的几乎所有操作 | ||||
|         tencentMap = mapView.getMap(); | ||||
|  | ||||
|         FloatingActionButton fab = viewRoot.findViewById(R.id.fab); | ||||
|         fab.setOnClickListener(new View.OnClickListener() { | ||||
|                 @Override | ||||
|                 public void onClick(View view) { | ||||
|                     Snackbar.make(view, "点击了悬浮按钮", Snackbar.LENGTH_LONG).show(); | ||||
|                 } | ||||
|             }); | ||||
|  | ||||
|         mtvInfo = viewRoot.findViewById(R.id.tv_info); | ||||
|  | ||||
|         checkLocationPermission(); | ||||
|  | ||||
|         //设置显示定位的图标 | ||||
|         TencentLocationManager.setUserAgreePrivacy(true); | ||||
|         //建立定位 | ||||
|         //initLocation(); | ||||
|         //对地图操作类进行操作 | ||||
|         CameraUpdate cameraSigma = | ||||
|             CameraUpdateFactory.newCameraPosition(new CameraPosition( | ||||
|                                                       new LatLng(22.984066, 116.307548), | ||||
|                                                       15, | ||||
|                                                       0f, | ||||
|                                                       0f)); | ||||
|         //移动地图 | ||||
|         tencentMap.moveCamera(cameraSigma); | ||||
|  | ||||
|         // 设置地图点击监听 | ||||
|         tencentMap.setOnMapClickListener(new TencentMap.OnMapClickListener(){ | ||||
|  | ||||
|                 @Override | ||||
|                 public void onMapClick(com.tencent.tencentmap.mapsdk.maps.model.LatLng latLng) { | ||||
|                     //创建Marker对象之前,设置属性 | ||||
|                     //LatLng position = new LatLng(40.011313,116.391907); | ||||
|                     BitmapDescriptor custom = BitmapDescriptorFactory.fromResource(R.drawable.marker); | ||||
|                     Location location = createLocationFromLatLng(latLng); | ||||
|                     addLocationJson(location); | ||||
|                     Marker mCustomMarker = tencentMap.addMarker(new MarkerOptions(latLng)); | ||||
|  | ||||
|                     //创建Marker对象之后,修改属性 | ||||
| //                    Animation animation = new AlphaAnimation(0.7f, 0f); | ||||
| //                    animation.setDuration(2000); | ||||
| //                    mCustomMarker.setAnimation(animation); | ||||
| //                    mCustomMarker.startAnimation(); | ||||
|                 } | ||||
|             }); | ||||
|  | ||||
|          | ||||
|         return viewRoot; | ||||
|     } | ||||
|      | ||||
|     void loadLocations() { | ||||
|         // 存储位置数据 | ||||
| //        Location location = new Location("gps"); | ||||
| //        location.setLatitude(22.984066); | ||||
| //        location.setLongitude(116.307548); | ||||
| //        location.setTime(System.currentTimeMillis()); | ||||
| // | ||||
| //        // 方式1:保存到文件 | ||||
| //        List<Location> locations = new ArrayList<>(); | ||||
| //        locations.add(location); | ||||
| //        LocationFileStorage.saveToFile(this, locations); | ||||
|  | ||||
|         // 读取数据 | ||||
|         locationJsonList = LocationFileStorage.loadFromFile(this); | ||||
|  | ||||
|         for (LocationJson lj : locationJsonList) { | ||||
|             tencentMap.addMarker(new MarkerOptions(toTencentLatLng(lj.toLocation()))); | ||||
|             //LogUtils.d("Location", "Lat: " + loc.getLatitude() + ", Lng: " + loc.getLongitude()); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     void addLocationJson(Location location) { | ||||
|         // 存储位置数据 | ||||
| //        Location location = new Location("gps"); | ||||
| //        location.setLatitude(22.984066); | ||||
| //        location.setLongitude(116.307548); | ||||
| //        location.setTime(System.currentTimeMillis()); | ||||
|  | ||||
|         // 方式1:保存到文件 | ||||
|         //List<Location> locations = new ArrayList<>(); | ||||
|         locationJsonList.add(new LocationJson(location)); | ||||
|         LocationFileStorage.saveToFile(this, locationJsonList); | ||||
|  | ||||
|         // 读取数据 | ||||
| //        List<Location> loaded = LocationFileStorage.loadFromFile(this); | ||||
| //        for (Location loc : loaded) { | ||||
| //            tencentMap.addMarker(new MarkerOptions(toTencentLatLng(loc))); | ||||
| //            //LogUtils.d("Location", "Lat: " + loc.getLatitude() + ", Lng: " + loc.getLongitude()); | ||||
| //        } | ||||
|     } | ||||
|  | ||||
|  | ||||
|  | ||||
| // 创建Location对象方法 | ||||
|     private Location createLocationFromLatLng(LatLng latLng) { | ||||
|         Location location = new Location("tencent_map_manual"); | ||||
|  | ||||
|         // 设置基础坐标 | ||||
|         location.setLatitude(latLng.getLatitude()); | ||||
|         location.setLongitude(latLng.getLongitude()); | ||||
|  | ||||
|         // 设置必要元数据 | ||||
|         location.setTime(System.currentTimeMillis()); | ||||
|         location.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos()); | ||||
|         location.setAccuracy(5.0f); // 手动点击精度设为5米 | ||||
|  | ||||
|         return location; | ||||
|     } | ||||
|  | ||||
|  | ||||
|     public LatLng toTencentLatLng(Location location) { | ||||
|         return new LatLng( | ||||
|             location.getLatitude(), | ||||
|             location.getLongitude() | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     // 添加标记方法 | ||||
|     private void addMarker(LatLng latLng) { | ||||
|         tencentMap.clearAllOverlays(); | ||||
|         MarkerOptions options = new MarkerOptions(latLng) | ||||
|             .icon(BitmapDescriptorFactory.defaultMarker()) | ||||
|             .title("点击保存"); | ||||
|         tencentMap.addMarker(options); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * mapview的生命周期管理 | ||||
|      */ | ||||
|     @Override | ||||
|     public void onStart() { | ||||
|         super.onStart(); | ||||
|         mapView.onStart(); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void onResume() { | ||||
|         super.onResume(); | ||||
|         mapView.onResume(); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void onPause() { | ||||
|         super.onPause(); | ||||
|         mapView.onPause(); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void onStop() { | ||||
|         super.onStop(); | ||||
|         mapView.onStop(); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void onDestroy() { | ||||
|         super.onDestroy(); | ||||
|         mapView.onDestroy(); | ||||
|     } | ||||
|      | ||||
|  | ||||
|     @Override | ||||
|     protected void onPostCreate(Bundle savedInstanceState) { | ||||
|         super.onPostCreate(savedInstanceState); | ||||
| //        LatLng center = new LatLng(39.904556, 116.427242); | ||||
| //        tencentMap.moveCamera( | ||||
| //            CameraUpdateFactory.newLatLngZoom(center, 13f) // 注意 13 → 13f | ||||
| //        ); | ||||
|         loadLocations(); | ||||
|     } | ||||
|      | ||||
|  | ||||
|     /** | ||||
|      * 设置定位图标样式 | ||||
|      */ | ||||
|     private void setLocMarkerStyle() { | ||||
|         locationStyle = new MyLocationStyle(); | ||||
|         //创建图标 | ||||
|         BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromBitmap(getBitMap(R.drawable.marker)); | ||||
|         locationStyle.icon(bitmapDescriptor); | ||||
|         //设置定位圆形区域的边框宽度 | ||||
|         locationStyle.strokeWidth(3); | ||||
|         //设置圆区域的颜色 | ||||
|         locationStyle.fillColor(R.color.style); | ||||
|  | ||||
|         tencentMap.setMyLocationStyle(locationStyle); | ||||
|     } | ||||
|  | ||||
|  | ||||
|  | ||||
|     private Bitmap getBitMap(int resourceId) { | ||||
|         Bitmap bitmap = BitmapFactory.decodeResource(getResources(), resourceId); | ||||
|         int width = bitmap.getWidth(); | ||||
|         int height = bitmap.getHeight(); | ||||
|         int newWidth = 55; | ||||
|         int newHeight = 55; | ||||
|         float widthScale = ((float)newWidth) / width; | ||||
|         float heightScale = ((float)newHeight) / height; | ||||
|         Matrix matrix = new Matrix(); | ||||
|         matrix.postScale(widthScale, heightScale); | ||||
|         bitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true); | ||||
|         return bitmap; | ||||
|     } | ||||
|  | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * 定位的一些初始化设置 | ||||
|      */ | ||||
|     private void initLocation() { | ||||
|         //用于访问腾讯定位服务的类, 周期性向客户端提供位置更新 | ||||
|         locationManager = TencentLocationManager.getInstance(this); | ||||
|         //设置坐标系 | ||||
|         locationManager.setCoordinateType(TencentLocationManager.COORDINATE_TYPE_GCJ02); | ||||
|         //创建定位请求 | ||||
|         locationRequest = TencentLocationRequest.create(); | ||||
|         //设置定位周期(位置监听器回调周期)为3s | ||||
|         locationRequest.setInterval(3000); | ||||
|  | ||||
|         //地图上设置定位数据源 | ||||
|         tencentMap.setLocationSource(this); | ||||
|         //设置当前位置可见 | ||||
|         tencentMap.setMyLocationEnabled(true); | ||||
|         //设置定位图标样式 | ||||
|         setLocMarkerStyle(); | ||||
| //        locationStyle = locationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE); | ||||
|         tencentMap.setMyLocationStyle(locationStyle); | ||||
|     } | ||||
|     /** | ||||
|      * 实现位置监听 | ||||
|      * @param tencentLocation | ||||
|      * @param i | ||||
|      * @param s | ||||
|      */ | ||||
|     @Override | ||||
|     public void onLocationChanged(TencentLocation tencentLocation, int i, String s) { | ||||
|  | ||||
|         if (i == TencentLocation.ERROR_OK && locationChangedListener != null) { | ||||
|             final Location location = new Location(tencentLocation.getProvider()); | ||||
|             //设置经纬度以及精度 | ||||
|             location.setLatitude(tencentLocation.getLatitude()); | ||||
|             location.setLongitude(tencentLocation.getLongitude()); | ||||
|             location.setAccuracy(tencentLocation.getAccuracy()); | ||||
|             locationChangedListener.onLocationChanged(location); | ||||
|  | ||||
|             //显示回调的实时位置信息 | ||||
|             runOnUiThread(new Runnable() { | ||||
|                     @Override | ||||
|                     public void run() { | ||||
| //                        Rules.getEffectInfo(location); | ||||
| //                        double distance = DistanceUtils.getDistance( | ||||
| //                            locationA.getLatitude(),  | ||||
| //                            locationA.getLongitude(), | ||||
| //                            locationB.getLatitude(), | ||||
| //                            locationB.getLongitude() | ||||
| //                        ); | ||||
|                         mtvInfo.setText(String.format("\n%f %f", location.getLatitude(), location.getLongitude())); | ||||
|                         //打印tencentLocation的json字符串 | ||||
| //                    Toast.makeText(getApplicationContext(), new Gson().toJson(location), Toast.LENGTH_LONG).show(); | ||||
|                     } | ||||
|                 }); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void onStatusUpdate(String s, int i, String s1) { | ||||
|         //GPS, WiFi, Radio 等状态发生变化 | ||||
|         Log.v("State changed", s + "===" +  s1); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     @Override | ||||
|     public void activate(OnLocationChangedListener onLocationChangedListener) { | ||||
|         locationChangedListener = onLocationChangedListener; | ||||
|  | ||||
|         int err = locationManager.requestLocationUpdates(locationRequest, this, Looper.myLooper()); | ||||
|         switch (err) { | ||||
|             case 1: | ||||
|                 Toast.makeText(this, "设备缺少使用腾讯定位服务需要的基本条件", Toast.LENGTH_SHORT).show(); | ||||
|                 break; | ||||
|             case 2: | ||||
|                 Toast.makeText(this, "manifest 中配置的 key 不正确", Toast.LENGTH_SHORT).show(); | ||||
|                 break; | ||||
|             case 3: | ||||
|                 Toast.makeText(this, "自动加载libtencentloc.so失败", Toast.LENGTH_SHORT).show(); | ||||
|                 break; | ||||
|  | ||||
|             default: | ||||
|                 break; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void deactivate() { | ||||
|         locationManager.removeUpdates(this); | ||||
|         locationManager = null; | ||||
|         locationRequest = null; | ||||
|         locationChangedListener = null; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) { | ||||
|         Log.e("location quest: ", "success"); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) { | ||||
|         Log.e("location quest: ", "failed"); | ||||
|     } | ||||
|  | ||||
|     private void checkLocationPermission() { | ||||
|         if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED | ||||
|             || ContextCompat.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}, | ||||
|                                               PERMISSION_REQUEST_CODE); | ||||
|         } else { | ||||
|             // 权限已授予,可进行定位操作 | ||||
|             //startLocationUpdates(); | ||||
|         } | ||||
|     } | ||||
|     @Override | ||||
|     public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { | ||||
|         super.onRequestPermissionsResult(requestCode, permissions, grantResults); | ||||
|         if (requestCode == PERMISSION_REQUEST_CODE) { | ||||
|             if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { | ||||
|                 //startLocationUpdates(); | ||||
|             } else { | ||||
|                 // 用户拒绝了权限请求 | ||||
|                 Toast.makeText(this, "请授予定位权限", Toast.LENGTH_SHORT).show(); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|      | ||||
|      | ||||
| } | ||||
							
								
								
									
										51
									
								
								positions/src/main/res/layout/fragment_txms.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								positions/src/main/res/layout/fragment_txms.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,51 @@ | ||||
| <?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" | ||||
|     xmlns:tools="http://schemas.android.com/tools" | ||||
|     android:orientation="vertical" | ||||
|     android:layout_width="match_parent" | ||||
|     android:layout_height="match_parent"> | ||||
|  | ||||
|     <androidx.appcompat.widget.Toolbar | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:id="@+id/activitymainToolbar1"/> | ||||
|  | ||||
|     <RelativeLayout | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="0dp" | ||||
|         android:layout_weight="1.0"> | ||||
|  | ||||
|         <com.tencent.tencentmap.mapsdk.maps.TextureMapView | ||||
|             android:id="@+id/mapview" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="match_parent"/> | ||||
|  | ||||
|         <TextView | ||||
|             android:id="@+id/tv_info" | ||||
|             android:layout_width="wrap_content" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:textColor="@color/colorPrimary" | ||||
|             android:textStyle="bold" | ||||
|             android:textSize="14sp" | ||||
|             android:background="#CAFFFFFF" | ||||
|             android:layout_alignParentLeft="true" | ||||
|             android:layout_alignParentRight="true"> | ||||
|  | ||||
|         </TextView> | ||||
|  | ||||
|         <com.google.android.material.floatingactionbutton.FloatingActionButton | ||||
|             android:id="@+id/fab" | ||||
|             android:layout_width="wrap_content" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:layout_alignParentEnd="true" | ||||
|             android:layout_margin="16dp" | ||||
|             android:src="@drawable/ic_location_searching" | ||||
|             app:backgroundTint="@color/colorPrimary" | ||||
|             android:layout_alignParentTop="true"/> | ||||
|  | ||||
|     </RelativeLayout> | ||||
|  | ||||
| </LinearLayout> | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 ZhanGSKen
					ZhanGSKen