diff --git a/positions/build.properties b/positions/build.properties index f189bf8..831b032 100644 --- a/positions/build.properties +++ b/positions/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Fri Feb 28 03:13:40 GMT 2025 +#Fri Feb 28 11:55:01 GMT 2025 stageCount=0 libraryProject= baseVersion=1.0 publishVersion=1.0.0 -buildCount=209 +buildCount=230 baseBetaVersion=1.0.1 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 ee97c5d..a1f7476 100644 --- a/positions/src/main/java/cc/winboll/studio/positions/MainActivity.java +++ b/positions/src/main/java/cc/winboll/studio/positions/MainActivity.java @@ -6,6 +6,7 @@ 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; @@ -49,6 +50,7 @@ final public class MainActivity extends AbsActivity implements IWinBollActivity, public static final String ACTION_SOS = "cc.winboll.studio.libappbase.WinBoll.ACTION_SOS"; + TXMSFragment mTXMSFragment; LogView mLogView; Toolbar mToolbar; CheckBox cbMainService; @@ -108,11 +110,11 @@ final public class MainActivity extends AbsActivity implements IWinBollActivity, // 初始化地图视图 // 创建Fragment实例 - TXMSFragment myFragment = TXMSFragment.newInstance(0); + mTXMSFragment = new TXMSFragment(); // 获取FragmentTransaction FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); // 将Fragment添加到FrameLayout容器中 - transaction.add(R.id.frameLayout, myFragment); + transaction.add(R.id.frameLayout, mTXMSFragment); transaction.commit(); tabLayout = findViewById(R.id.tabLayout); @@ -121,9 +123,9 @@ final public class MainActivity extends AbsActivity implements IWinBollActivity, // 创建Fragment列表和标题列表 List fragmentList = new ArrayList<>(); List tabTitleList = new ArrayList<>(); - fragmentList.add(PositionsFragment.newInstance(0)); - fragmentList.add(TasksFragment.newInstance(1)); - fragmentList.add(LogFragment.newInstance(2)); + fragmentList.add(new PositionsFragment()); + fragmentList.add(new TasksFragment()); + fragmentList.add(new LogFragment()); tabTitleList.add("位置"); tabTitleList.add("任务"); tabTitleList.add("日志"); @@ -312,6 +314,10 @@ final public class MainActivity extends AbsActivity implements IWinBollActivity, Intent intent = new Intent(this, com.tencent.map.vector.demo.DemoMainActivity.class); startActivity(intent); //WinBollActivityManager.getInstance(this).startWinBollActivity(this, CallActivity.class); + } else if (item.getItemId() == R.id.item_positionnow) { + mTXMSFragment.sendRealTimePositioningMessage(); + } else if (item.getItemId() == R.id.item_addnewposition) { + ToastUtils.show("item_addnewpositon"); } // } else // if (item.getItemId() == R.id.item_exit) { 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 140aae9..8f47304 100644 --- a/positions/src/main/java/cc/winboll/studio/positions/MainSimpleActivity.java +++ b/positions/src/main/java/cc/winboll/studio/positions/MainSimpleActivity.java @@ -52,7 +52,7 @@ 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 cc.winboll.studio.positions.beans.PostionModel; public class MainSimpleActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks,LocationSource, TencentLocationListener { @@ -69,7 +69,7 @@ public class MainSimpleActivity extends AppCompatActivity implements EasyPermiss private TencentLocationManager locationManager; private TencentLocationRequest locationRequest; private MyLocationStyle locationStyle; - ArrayList locationJsonList; + ArrayList locationJsonList; LogView mLogView; @Override @@ -77,7 +77,7 @@ public class MainSimpleActivity extends AppCompatActivity implements EasyPermiss super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_simple); - locationJsonList = new ArrayList(); + locationJsonList = new ArrayList(); // 初始化工具栏 mToolbar = findViewById(R.id.activitymainToolbar1); @@ -161,7 +161,7 @@ public class MainSimpleActivity extends AppCompatActivity implements EasyPermiss // 读取数据 locationJsonList = LocationFileStorage.loadFromFile(this); - for (LocationJson lj : locationJsonList) { + for (PostionModel lj : locationJsonList) { tencentMap.addMarker(new MarkerOptions(toTencentLatLng(lj.toLocation()))); //LogUtils.d("Location", "Lat: " + loc.getLatitude() + ", Lng: " + loc.getLongitude()); } @@ -176,7 +176,7 @@ public class MainSimpleActivity extends AppCompatActivity implements EasyPermiss // 方式1:保存到文件 //List locations = new ArrayList<>(); - locationJsonList.add(new LocationJson(location)); + locationJsonList.add(new PostionModel(location)); LocationFileStorage.saveToFile(this, locationJsonList); // 读取数据 diff --git a/positions/src/main/java/cc/winboll/studio/positions/beans/LocationJson.java b/positions/src/main/java/cc/winboll/studio/positions/beans/PostionModel.java similarity index 82% rename from positions/src/main/java/cc/winboll/studio/positions/beans/LocationJson.java rename to positions/src/main/java/cc/winboll/studio/positions/beans/PostionModel.java index 92a38b1..d5f21ea 100644 --- a/positions/src/main/java/cc/winboll/studio/positions/beans/LocationJson.java +++ b/positions/src/main/java/cc/winboll/studio/positions/beans/PostionModel.java @@ -11,18 +11,26 @@ import android.util.JsonWriter; import cc.winboll.studio.libappbase.BaseBean; import java.io.IOException; import android.location.Location; +import java.util.UUID; -public class LocationJson extends BaseBean { - - public static final String TAG = "LocationJson"; +public class PostionModel extends BaseBean { + public static final String TAG = "PostionModel"; + + // UUID 唯一位置标识 + private String uuid; + // 纬度 private double latitude; + // 经度 private double longitude; + // 标记时间 private long timestamp; + // 精确度 private double accuracy; private String provider; - public LocationJson() { + public PostionModel() { + this.uuid = UUID.randomUUID().toString(); this.latitude = 0.0f; this.longitude = 0.0f; this.timestamp = 0L; @@ -30,7 +38,8 @@ public class LocationJson extends BaseBean { this.provider = ""; } - public LocationJson(Location location) { + public PostionModel(Location location) { + this.uuid = UUID.randomUUID().toString(); this.latitude = location.getLatitude(); this.longitude = location.getLongitude(); this.timestamp = location.getTime(); @@ -38,6 +47,14 @@ public class LocationJson extends BaseBean { this.provider = location.getProvider(); } + public void setUuid(String uuid) { + this.uuid = uuid; + } + + public String getUuid() { + return uuid; + } + public void setLatitude(double latitude) { this.latitude = latitude; } @@ -81,12 +98,13 @@ public class LocationJson extends BaseBean { @Override public String getName() { - return LocationJson.class.getName(); + return PostionModel.class.getName(); } @Override public void writeThisToJsonWriter(JsonWriter jsonWriter) throws IOException { super.writeThisToJsonWriter(jsonWriter); + jsonWriter.name("uuid").value(getUuid()); jsonWriter.name("latitude").value(getLatitude()); jsonWriter.name("longitude").value(getLongitude()); jsonWriter.name("timestamp").value(getTimestamp()); @@ -98,7 +116,9 @@ public class LocationJson extends BaseBean { @Override public boolean initObjectsFromJsonReader(JsonReader jsonReader, String name) throws IOException { if (super.initObjectsFromJsonReader(jsonReader, name)) { return true; } else { - if (name.equals("latitude")) { + if (name.equals("uuid")) { + setUuid(jsonReader.nextString()); + } else if (name.equals("latitude")) { setLatitude(jsonReader.nextDouble()); } else if (name.equals("longitude")) { setLongitude(jsonReader.nextDouble()); diff --git a/positions/src/main/java/cc/winboll/studio/positions/fragments/LogFragment.java b/positions/src/main/java/cc/winboll/studio/positions/fragments/LogFragment.java index 491cc40..e0d35e6 100644 --- a/positions/src/main/java/cc/winboll/studio/positions/fragments/LogFragment.java +++ b/positions/src/main/java/cc/winboll/studio/positions/fragments/LogFragment.java @@ -22,21 +22,21 @@ public class LogFragment extends Fragment { private static final String ARG_PAGE = "ARG_PAGE"; private int mPage; - public static LogFragment newInstance(int page) { - Bundle args = new Bundle(); - args.putInt(ARG_PAGE, page); - LogFragment fragment = new LogFragment(); - fragment.setArguments(args); - return fragment; - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - if (getArguments() != null) { - mPage = getArguments().getInt(ARG_PAGE); - } - } +// public static LogFragment newInstance(int page) { +// Bundle args = new Bundle(); +// args.putInt(ARG_PAGE, page); +// LogFragment fragment = new LogFragment(); +// fragment.setArguments(args); +// return fragment; +// } +// +// @Override +// public void onCreate(Bundle savedInstanceState) { +// super.onCreate(savedInstanceState); +// if (getArguments() != null) { +// mPage = getArguments().getInt(ARG_PAGE); +// } +// } @Nullable @Override 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 5042541..424891e 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 @@ -25,20 +25,20 @@ public class PositionsFragment extends Fragment { private static final String ARG_PAGE = "ARG_PAGE"; private int mPage; - public static PositionsFragment newInstance(int page) { - Bundle args = new Bundle(); - args.putInt(ARG_PAGE, page); - PositionsFragment fragment = new PositionsFragment(); - fragment.setArguments(args); - return fragment; - } +// public static PositionsFragment newInstance(int page) { +// Bundle args = new Bundle(); +// args.putInt(ARG_PAGE, page); +// PositionsFragment fragment = new PositionsFragment(); +// fragment.setArguments(args); +// return fragment; +// } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - if (getArguments()!= null) { - mPage = getArguments().getInt(ARG_PAGE); - } +// if (getArguments()!= null) { +// mPage = getArguments().getInt(ARG_PAGE); +// } setHasOptionsMenu(true); } @@ -62,9 +62,9 @@ public class PositionsFragment extends Fragment { @Override public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == R.id.item_addposition) { - ToastUtils.show("item_addposition"); - } +// if (item.getItemId() == R.id.item_addposition) { +// ToastUtils.show("item_addposition"); +// } // } else // if (item.getItemId() == R.id.item_exit) { // exit(); 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 7c12cdc..f197636 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 @@ -6,33 +6,32 @@ package cc.winboll.studio.positions.fragments; * @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.location.LocationManager; import android.os.Bundle; +import android.os.Handler; import android.os.Looper; +import android.os.Message; import android.os.SystemClock; import android.util.Log; -import android.view.Menu; -import android.view.MenuItem; +import android.view.LayoutInflater; import android.view.View; +import android.view.ViewGroup; import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.widget.Toolbar; +import androidx.annotation.Nullable; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; -import cc.winboll.studio.libappbase.LogView; +import androidx.fragment.app.Fragment; 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; +import com.hjq.toast.ToastUtils; import com.tencent.map.geolocation.TencentLocation; import com.tencent.map.geolocation.TencentLocationListener; import com.tencent.map.geolocation.TencentLocationManager; @@ -53,22 +52,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.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 { @@ -86,30 +69,31 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission private TencentLocationManager locationManager; private TencentLocationRequest locationRequest; private MyLocationStyle locationStyle; - ArrayList locationJsonList; + ArrayList locationJsonList; + Location lastLocation; - public static TXMSFragment newInstance(int page) { - Bundle args = new Bundle(); - args.putInt(ARG_PAGE, page); - TXMSFragment fragment = new TXMSFragment(); - fragment.setArguments(args); - return fragment; - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - if (getArguments() != null) { - mPage = getArguments().getInt(ARG_PAGE); - } - } +// public static TXMSFragment newInstance(int page) { +// Bundle args = new Bundle(); +// args.putInt(ARG_PAGE, page); +// TXMSFragment fragment = new TXMSFragment(); +// 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_txms, container, false); - locationJsonList = new ArrayList(); + locationJsonList = new ArrayList(); TencentMapInitializer.setAgreePrivacy(getActivity(), true); TencentMapInitializer.start(getActivity()); @@ -134,18 +118,19 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission checkLocationPermission(); //设置显示定位的图标 - TencentLocationManager.setUserAgreePrivacy(true); - //建立定位 - //initLocation(); - //对地图操作类进行操作 - CameraUpdate cameraSigma = - CameraUpdateFactory.newCameraPosition(new CameraPosition( - new LatLng(22.984066, 116.307548), - 15, - 0f, - 0f)); - //移动地图 - tencentMap.moveCamera(cameraSigma); +// TencentLocationManager.setUserAgreePrivacy(true); +// // 启动实时定位 +// doRealTimePosition(); + +// //对地图操作类进行操作 +// CameraUpdate cameraSigma = +// CameraUpdateFactory.newCameraPosition(new CameraPosition( +// new LatLng(22.984066, 116.307548), +// 15, +// 0f, +// 0f)); +// //移动地图 +// tencentMap.moveCamera(cameraSigma); // 设置地图点击监听 tencentMap.setOnMapClickListener(new TencentMap.OnMapClickListener(){ @@ -156,7 +141,7 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission //LatLng position = new LatLng(40.011313,116.391907); BitmapDescriptor custom = BitmapDescriptorFactory.fromResource(R.drawable.marker); Location location = createLocationFromLatLng(latLng); - addLocationJson(location); + addLocationToMap(location); Marker mCustomMarker = tencentMap.addMarker(new MarkerOptions(latLng)); //创建Marker对象之后,修改属性 @@ -168,7 +153,12 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission }); loadLocations(); - + + // 启动实时定位 + //pickUpPosition(); + //realTimePositioning(); + sendRealTimePositioningMessage(); + return viewRoot; } @@ -187,13 +177,13 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission // 读取数据 locationJsonList = LocationFileStorage.loadFromFile(getActivity()); - for (LocationJson lj : locationJsonList) { - tencentMap.addMarker(new MarkerOptions(toTencentLatLng(lj.toLocation()))); + for (PostionModel lj : locationJsonList) { + tencentMap.addMarker(new MarkerOptions(convertToLatLng(lj.toLocation()))); //LogUtils.d("Location", "Lat: " + loc.getLatitude() + ", Lng: " + loc.getLongitude()); } } - void addLocationJson(Location location) { + void addLocationToMap(Location location) { // 存储位置数据 // Location location = new Location("gps"); // location.setLatitude(22.984066); @@ -202,7 +192,7 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission // 方式1:保存到文件 //List locations = new ArrayList<>(); - locationJsonList.add(new LocationJson(location)); + locationJsonList.add(new PostionModel(location)); LocationFileStorage.saveToFile(getActivity(), locationJsonList); // 读取数据 @@ -213,11 +203,31 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission // } } + public void addCurrentLocationToMap() { + ToastUtils.show("addCurrentLocationToMap"); + locationJsonList.add(new PostionModel(createCurrentLocation())); + LocationFileStorage.saveToFile(getActivity(), locationJsonList); + } -// 创建Location对象方法 + // 创建Location对象方法 + private Location createCurrentLocation() { + // 获取位置管理器 + LocationManager locationManager = (LocationManager) getActivity().getSystemService(getActivity().LOCATION_SERVICE); + // 获取最后已知位置 + Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); + if (location != null) { + // 获取位置提供程序名称 + String provider = location.getProvider(); + System.out.println("定位来源:" + provider); + } + + return location; + } + + // 创建Location对象方法 private Location createLocationFromLatLng(LatLng latLng) { - Location location = new Location("tencent_map_manual"); + Location location = new Location("Tencent_Map_Manual"); // 设置基础坐标 location.setLatitude(latLng.getLatitude()); @@ -231,8 +241,16 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission return location; } - - public LatLng toTencentLatLng(Location location) { + public static LatLng convertToLatLng(TencentLocation location) { + if (location != null) { + double latitude = location.getLatitude(); + double longitude = location.getLongitude(); + return new LatLng(latitude, longitude); + } + return null; + } + + public static LatLng convertToLatLng(Location location) { return new LatLng( location.getLatitude(), location.getLongitude() @@ -249,6 +267,21 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission tencentMap.addMarker(options); } + public static final int REALTIME_POSITIONING = 1; + private Handler handler = new Handler(Looper.getMainLooper()) { + @Override + public void handleMessage(@NonNull Message msg) { + switch (msg.what) { + case REALTIME_POSITIONING: + // 在这里处理接收到消息后的逻辑,比如更新 UI + singleTimePositioning(); + break; + default: + break; + } + } + }; + /** * mapview的生命周期管理 */ @@ -314,20 +347,74 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission return bitmap; } + private void pickUpCurrentPosition() { + Location location = createCurrentLocation(); + ToastUtils.show(String.format("%s", location.toString())); + //对地图操作类进行操作 + CameraUpdate cameraSigma = + CameraUpdateFactory.newCameraPosition(new CameraPosition( + convertToLatLng(location), + 15, + 0f, + 0f)); + //移动地图 + tencentMap.moveCamera(cameraSigma); + addLocationToMap(location); + } + + public void sendRealTimePositioningMessage() { + Message message = Message.obtain(); + message.what = TXMSFragment.REALTIME_POSITIONING; + handler.sendMessage(message); + } /** * 定位的一些初始化设置 */ - private void initLocation() { - //用于访问腾讯定位服务的类, 周期性向客户端提供位置更新 + public void singleTimePositioning() { + TencentMapInitializer.setAgreePrivacy(getActivity(), true); + TencentMapInitializer.start(getActivity()); + TencentLocationManager.setUserAgreePrivacy(true); + + //用于访问腾讯定位服务的类, 提供一次位置信息 locationManager = TencentLocationManager.getInstance(getActivity()); //设置坐标系 locationManager.setCoordinateType(TencentLocationManager.COORDINATE_TYPE_GCJ02); //创建定位请求 locationRequest = TencentLocationRequest.create(); - //设置定位周期(位置监听器回调周期)为3s - locationRequest.setInterval(3000); + // 设置定位模式为单次定位 + locationRequest.setInterval(0); // 设置为0表示只定位一次 + //locationRequest.setFastestInterval(0); + + // 实现 TencentLocationListener 接口来接收定位结果 + locationManager.requestLocationUpdates(locationRequest, new TencentLocationListener() { + @Override + public void onLocationChanged(TencentLocation location, int errorCode, String errorInfo) { + if (errorCode == TencentLocation.ERROR_OK) { + // 定位成功,处理定位数据 + double latitude = location.getLatitude(); + double longitude = location.getLongitude(); + // 在这里可以将定位数据传递给其他需要的地方 + //对地图操作类进行操作 + CameraUpdate cameraSigma = + CameraUpdateFactory.newCameraPosition(new CameraPosition( + convertToLatLng(location), + 15, + 0f, + 0f)); + //移动地图 + tencentMap.moveCamera(cameraSigma); + } else { + // 定位失败,处理错误信息 + } + } + + @Override + public void onStatusUpdate(String name, int statusCode, String statusInfo) { + // 位置状态更新,根据需要处理 + } + }, Looper.getMainLooper()); //地图上设置定位数据源 tencentMap.setLocationSource(this); @@ -335,9 +422,10 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission tencentMap.setMyLocationEnabled(true); //设置定位图标样式 setLocMarkerStyle(); -// locationStyle = locationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE); tencentMap.setMyLocationStyle(locationStyle); } + + /** * 实现位置监听 * @param tencentLocation @@ -359,6 +447,16 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission getActivity().runOnUiThread(new Runnable() { @Override public void run() { + + //对地图操作类进行操作 + CameraUpdate cameraSigma = + CameraUpdateFactory.newCameraPosition(new CameraPosition( + convertToLatLng(location), + 15, + 0f, + 0f)); + //移动地图 + tencentMap.moveCamera(cameraSigma); // Rules.getEffectInfo(location); // double distance = DistanceUtils.getDistance( // locationA.getLatitude(), @@ -371,6 +469,22 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission // Toast.makeText(getApplicationContext(), new Gson().toJson(location), Toast.LENGTH_LONG).show(); } }); + + // 保存最后定位信息 + lastLocation = new Location(tencentLocation.getProvider());; + lastLocation.setLatitude(tencentLocation.getLatitude()); + lastLocation.setLongitude(tencentLocation.getLongitude()); + lastLocation.setAccuracy(tencentLocation.getAccuracy()); + + // 当不再需要定位时 + // 取消定位监听 + if (locationManager != null) { + locationManager.removeUpdates(this); + } + // 关闭当前位置显示 +// if (tencentMap != null) { +// tencentMap.setMyLocationEnabled(false); +// } } } diff --git a/positions/src/main/java/cc/winboll/studio/positions/fragments/TasksFragment.java b/positions/src/main/java/cc/winboll/studio/positions/fragments/TasksFragment.java index c99d6a6..aca7911 100644 --- a/positions/src/main/java/cc/winboll/studio/positions/fragments/TasksFragment.java +++ b/positions/src/main/java/cc/winboll/studio/positions/fragments/TasksFragment.java @@ -25,20 +25,20 @@ public class TasksFragment extends Fragment { private static final String ARG_PAGE = "ARG_PAGE"; private int mPage; - public static TasksFragment newInstance(int page) { - Bundle args = new Bundle(); - args.putInt(ARG_PAGE, page); - TasksFragment fragment = new TasksFragment(); - fragment.setArguments(args); - return fragment; - } +// public static TasksFragment newInstance(int page) { +// Bundle args = new Bundle(); +// args.putInt(ARG_PAGE, page); +// TasksFragment fragment = new TasksFragment(); +// fragment.setArguments(args); +// return fragment; +// } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - if (getArguments()!= null) { - mPage = getArguments().getInt(ARG_PAGE); - } +// if (getArguments()!= null) { +// mPage = getArguments().getInt(ARG_PAGE); +// } setHasOptionsMenu(true); } diff --git a/positions/src/main/java/cc/winboll/studio/positions/utils/LocationFileStorage.java b/positions/src/main/java/cc/winboll/studio/positions/utils/LocationFileStorage.java index 2a77d2f..8a45af5 100644 --- a/positions/src/main/java/cc/winboll/studio/positions/utils/LocationFileStorage.java +++ b/positions/src/main/java/cc/winboll/studio/positions/utils/LocationFileStorage.java @@ -15,25 +15,25 @@ import java.util.ArrayList; import java.util.List; import org.json.JSONArray; import cc.winboll.studio.libappbase.LogUtils; -import cc.winboll.studio.positions.beans.LocationJson; +import cc.winboll.studio.positions.beans.PostionModel; public class LocationFileStorage { public static final String TAG = "LocationFileStorage"; private static final String FILE_NAME = "locations.json"; - public static void saveToFile(Context context, ArrayList locations) { + public static void saveToFile(Context context, ArrayList locations) { try { - LocationJson.saveBeanList(context, locations, LocationJson.class); + PostionModel.saveBeanList(context, locations, PostionModel.class); } catch (Exception e) { LogUtils.d(TAG, e, Thread.currentThread().getStackTrace()); } } - public static ArrayList loadFromFile(Context context) { - ArrayList result = new ArrayList(); + public static ArrayList loadFromFile(Context context) { + ArrayList result = new ArrayList(); try { - LocationJson.loadBeanList(context, result, LocationJson.class); + PostionModel.loadBeanList(context, result, PostionModel.class); } catch (Exception e) { LogUtils.d(TAG, e, Thread.currentThread().getStackTrace()); } diff --git a/positions/src/main/res/menu/toolbar_positions.xml b/positions/src/main/res/menu/toolbar_positions.xml index 34ef902..391cc99 100644 --- a/positions/src/main/res/menu/toolbar_positions.xml +++ b/positions/src/main/res/menu/toolbar_positions.xml @@ -1,10 +1,15 @@ + +