1957
This commit is contained in:
parent
6dc042e0ec
commit
e1b48fb6c5
@ -1,8 +1,8 @@
|
|||||||
#Created by .winboll/winboll_app_build.gradle
|
#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
|
stageCount=0
|
||||||
libraryProject=
|
libraryProject=
|
||||||
baseVersion=1.0
|
baseVersion=1.0
|
||||||
publishVersion=1.0.0
|
publishVersion=1.0.0
|
||||||
buildCount=209
|
buildCount=230
|
||||||
baseBetaVersion=1.0.1
|
baseBetaVersion=1.0.1
|
||||||
|
@ -6,6 +6,7 @@ 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;
|
||||||
@ -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";
|
public static final String ACTION_SOS = "cc.winboll.studio.libappbase.WinBoll.ACTION_SOS";
|
||||||
|
|
||||||
|
TXMSFragment mTXMSFragment;
|
||||||
LogView mLogView;
|
LogView mLogView;
|
||||||
Toolbar mToolbar;
|
Toolbar mToolbar;
|
||||||
CheckBox cbMainService;
|
CheckBox cbMainService;
|
||||||
@ -108,11 +110,11 @@ final public class MainActivity extends AbsActivity implements IWinBollActivity,
|
|||||||
|
|
||||||
// 初始化地图视图
|
// 初始化地图视图
|
||||||
// 创建Fragment实例
|
// 创建Fragment实例
|
||||||
TXMSFragment myFragment = TXMSFragment.newInstance(0);
|
mTXMSFragment = new TXMSFragment();
|
||||||
// 获取FragmentTransaction
|
// 获取FragmentTransaction
|
||||||
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
|
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
|
||||||
// 将Fragment添加到FrameLayout容器中
|
// 将Fragment添加到FrameLayout容器中
|
||||||
transaction.add(R.id.frameLayout, myFragment);
|
transaction.add(R.id.frameLayout, mTXMSFragment);
|
||||||
transaction.commit();
|
transaction.commit();
|
||||||
|
|
||||||
tabLayout = findViewById(R.id.tabLayout);
|
tabLayout = findViewById(R.id.tabLayout);
|
||||||
@ -121,9 +123,9 @@ final public class MainActivity extends AbsActivity implements IWinBollActivity,
|
|||||||
// 创建Fragment列表和标题列表
|
// 创建Fragment列表和标题列表
|
||||||
List<Fragment> fragmentList = new ArrayList<>();
|
List<Fragment> fragmentList = new ArrayList<>();
|
||||||
List<String> tabTitleList = new ArrayList<>();
|
List<String> tabTitleList = new ArrayList<>();
|
||||||
fragmentList.add(PositionsFragment.newInstance(0));
|
fragmentList.add(new PositionsFragment());
|
||||||
fragmentList.add(TasksFragment.newInstance(1));
|
fragmentList.add(new TasksFragment());
|
||||||
fragmentList.add(LogFragment.newInstance(2));
|
fragmentList.add(new LogFragment());
|
||||||
tabTitleList.add("位置");
|
tabTitleList.add("位置");
|
||||||
tabTitleList.add("任务");
|
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);
|
Intent intent = new Intent(this, com.tencent.map.vector.demo.DemoMainActivity.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_positionnow) {
|
||||||
|
mTXMSFragment.sendRealTimePositioningMessage();
|
||||||
|
} else if (item.getItemId() == R.id.item_addnewposition) {
|
||||||
|
ToastUtils.show("item_addnewpositon");
|
||||||
}
|
}
|
||||||
// } else
|
// } else
|
||||||
// if (item.getItemId() == R.id.item_exit) {
|
// if (item.getItemId() == R.id.item_exit) {
|
||||||
|
@ -52,7 +52,7 @@ 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.LocationJson;
|
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 {
|
||||||
|
|
||||||
@ -69,7 +69,7 @@ public class MainSimpleActivity extends AppCompatActivity implements EasyPermiss
|
|||||||
private TencentLocationManager locationManager;
|
private TencentLocationManager locationManager;
|
||||||
private TencentLocationRequest locationRequest;
|
private TencentLocationRequest locationRequest;
|
||||||
private MyLocationStyle locationStyle;
|
private MyLocationStyle locationStyle;
|
||||||
ArrayList<LocationJson> locationJsonList;
|
ArrayList<PostionModel> locationJsonList;
|
||||||
LogView mLogView;
|
LogView mLogView;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -77,7 +77,7 @@ public class MainSimpleActivity extends AppCompatActivity implements EasyPermiss
|
|||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(R.layout.activity_main_simple);
|
setContentView(R.layout.activity_main_simple);
|
||||||
|
|
||||||
locationJsonList = new ArrayList<LocationJson>();
|
locationJsonList = new ArrayList<PostionModel>();
|
||||||
|
|
||||||
// 初始化工具栏
|
// 初始化工具栏
|
||||||
mToolbar = findViewById(R.id.activitymainToolbar1);
|
mToolbar = findViewById(R.id.activitymainToolbar1);
|
||||||
@ -161,7 +161,7 @@ public class MainSimpleActivity extends AppCompatActivity implements EasyPermiss
|
|||||||
// 读取数据
|
// 读取数据
|
||||||
locationJsonList = LocationFileStorage.loadFromFile(this);
|
locationJsonList = LocationFileStorage.loadFromFile(this);
|
||||||
|
|
||||||
for (LocationJson lj : locationJsonList) {
|
for (PostionModel lj : locationJsonList) {
|
||||||
tencentMap.addMarker(new MarkerOptions(toTencentLatLng(lj.toLocation())));
|
tencentMap.addMarker(new MarkerOptions(toTencentLatLng(lj.toLocation())));
|
||||||
//LogUtils.d("Location", "Lat: " + loc.getLatitude() + ", Lng: " + loc.getLongitude());
|
//LogUtils.d("Location", "Lat: " + loc.getLatitude() + ", Lng: " + loc.getLongitude());
|
||||||
}
|
}
|
||||||
@ -176,7 +176,7 @@ public class MainSimpleActivity extends AppCompatActivity implements EasyPermiss
|
|||||||
|
|
||||||
// 方式1:保存到文件
|
// 方式1:保存到文件
|
||||||
//List<Location> locations = new ArrayList<>();
|
//List<Location> locations = new ArrayList<>();
|
||||||
locationJsonList.add(new LocationJson(location));
|
locationJsonList.add(new PostionModel(location));
|
||||||
LocationFileStorage.saveToFile(this, locationJsonList);
|
LocationFileStorage.saveToFile(this, locationJsonList);
|
||||||
|
|
||||||
// 读取数据
|
// 读取数据
|
||||||
|
@ -11,18 +11,26 @@ import android.util.JsonWriter;
|
|||||||
import cc.winboll.studio.libappbase.BaseBean;
|
import cc.winboll.studio.libappbase.BaseBean;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import android.location.Location;
|
import android.location.Location;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public class LocationJson extends BaseBean {
|
public class PostionModel extends BaseBean {
|
||||||
|
|
||||||
public static final String TAG = "LocationJson";
|
public static final String TAG = "PostionModel";
|
||||||
|
|
||||||
|
// UUID 唯一位置标识
|
||||||
|
private String uuid;
|
||||||
|
// 纬度
|
||||||
private double latitude;
|
private double latitude;
|
||||||
|
// 经度
|
||||||
private double longitude;
|
private double longitude;
|
||||||
|
// 标记时间
|
||||||
private long timestamp;
|
private long timestamp;
|
||||||
|
// 精确度
|
||||||
private double accuracy;
|
private double accuracy;
|
||||||
private String provider;
|
private String provider;
|
||||||
|
|
||||||
public LocationJson() {
|
public PostionModel() {
|
||||||
|
this.uuid = UUID.randomUUID().toString();
|
||||||
this.latitude = 0.0f;
|
this.latitude = 0.0f;
|
||||||
this.longitude = 0.0f;
|
this.longitude = 0.0f;
|
||||||
this.timestamp = 0L;
|
this.timestamp = 0L;
|
||||||
@ -30,7 +38,8 @@ public class LocationJson extends BaseBean {
|
|||||||
this.provider = "";
|
this.provider = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
public LocationJson(Location location) {
|
public PostionModel(Location location) {
|
||||||
|
this.uuid = UUID.randomUUID().toString();
|
||||||
this.latitude = location.getLatitude();
|
this.latitude = location.getLatitude();
|
||||||
this.longitude = location.getLongitude();
|
this.longitude = location.getLongitude();
|
||||||
this.timestamp = location.getTime();
|
this.timestamp = location.getTime();
|
||||||
@ -38,6 +47,14 @@ public class LocationJson extends BaseBean {
|
|||||||
this.provider = location.getProvider();
|
this.provider = location.getProvider();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setUuid(String uuid) {
|
||||||
|
this.uuid = uuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUuid() {
|
||||||
|
return uuid;
|
||||||
|
}
|
||||||
|
|
||||||
public void setLatitude(double latitude) {
|
public void setLatitude(double latitude) {
|
||||||
this.latitude = latitude;
|
this.latitude = latitude;
|
||||||
}
|
}
|
||||||
@ -81,12 +98,13 @@ public class LocationJson extends BaseBean {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return LocationJson.class.getName();
|
return PostionModel.class.getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeThisToJsonWriter(JsonWriter jsonWriter) throws IOException {
|
public void writeThisToJsonWriter(JsonWriter jsonWriter) throws IOException {
|
||||||
super.writeThisToJsonWriter(jsonWriter);
|
super.writeThisToJsonWriter(jsonWriter);
|
||||||
|
jsonWriter.name("uuid").value(getUuid());
|
||||||
jsonWriter.name("latitude").value(getLatitude());
|
jsonWriter.name("latitude").value(getLatitude());
|
||||||
jsonWriter.name("longitude").value(getLongitude());
|
jsonWriter.name("longitude").value(getLongitude());
|
||||||
jsonWriter.name("timestamp").value(getTimestamp());
|
jsonWriter.name("timestamp").value(getTimestamp());
|
||||||
@ -98,7 +116,9 @@ public class LocationJson extends BaseBean {
|
|||||||
@Override
|
@Override
|
||||||
public boolean initObjectsFromJsonReader(JsonReader jsonReader, String name) throws IOException {
|
public boolean initObjectsFromJsonReader(JsonReader jsonReader, String name) throws IOException {
|
||||||
if (super.initObjectsFromJsonReader(jsonReader, name)) { return true; } else {
|
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());
|
setLatitude(jsonReader.nextDouble());
|
||||||
} else if (name.equals("longitude")) {
|
} else if (name.equals("longitude")) {
|
||||||
setLongitude(jsonReader.nextDouble());
|
setLongitude(jsonReader.nextDouble());
|
@ -22,21 +22,21 @@ public class LogFragment extends Fragment {
|
|||||||
private static final String ARG_PAGE = "ARG_PAGE";
|
private static final String ARG_PAGE = "ARG_PAGE";
|
||||||
private int mPage;
|
private int mPage;
|
||||||
|
|
||||||
public static LogFragment newInstance(int page) {
|
// public static LogFragment newInstance(int page) {
|
||||||
Bundle args = new Bundle();
|
// Bundle args = new Bundle();
|
||||||
args.putInt(ARG_PAGE, page);
|
// args.putInt(ARG_PAGE, page);
|
||||||
LogFragment fragment = new LogFragment();
|
// LogFragment fragment = new LogFragment();
|
||||||
fragment.setArguments(args);
|
// fragment.setArguments(args);
|
||||||
return fragment;
|
// return fragment;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
// public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
// super.onCreate(savedInstanceState);
|
||||||
if (getArguments() != null) {
|
// if (getArguments() != null) {
|
||||||
mPage = getArguments().getInt(ARG_PAGE);
|
// mPage = getArguments().getInt(ARG_PAGE);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
|
@ -25,20 +25,20 @@ 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;
|
||||||
|
|
||||||
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);
|
||||||
PositionsFragment fragment = new PositionsFragment();
|
// PositionsFragment fragment = new PositionsFragment();
|
||||||
fragment.setArguments(args);
|
// fragment.setArguments(args);
|
||||||
return fragment;
|
// return fragment;
|
||||||
}
|
// }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
if (getArguments()!= null) {
|
// if (getArguments()!= null) {
|
||||||
mPage = getArguments().getInt(ARG_PAGE);
|
// mPage = getArguments().getInt(ARG_PAGE);
|
||||||
}
|
// }
|
||||||
setHasOptionsMenu(true);
|
setHasOptionsMenu(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,9 +62,9 @@ public class PositionsFragment extends Fragment {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onOptionsItemSelected(MenuItem item) {
|
public boolean onOptionsItemSelected(MenuItem item) {
|
||||||
if (item.getItemId() == R.id.item_addposition) {
|
// if (item.getItemId() == R.id.item_addposition) {
|
||||||
ToastUtils.show("item_addposition");
|
// ToastUtils.show("item_addposition");
|
||||||
}
|
// }
|
||||||
// } else
|
// } else
|
||||||
// if (item.getItemId() == R.id.item_exit) {
|
// if (item.getItemId() == R.id.item_exit) {
|
||||||
// exit();
|
// exit();
|
||||||
|
@ -6,33 +6,32 @@ package cc.winboll.studio.positions.fragments;
|
|||||||
* @Describe 腾讯地图服务视图
|
* @Describe 腾讯地图服务视图
|
||||||
*/
|
*/
|
||||||
import android.Manifest;
|
import android.Manifest;
|
||||||
import android.content.Intent;
|
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.BitmapFactory;
|
import android.graphics.BitmapFactory;
|
||||||
import android.graphics.Matrix;
|
import android.graphics.Matrix;
|
||||||
import android.location.Location;
|
import android.location.Location;
|
||||||
|
import android.location.LocationManager;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.os.Handler;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
|
import android.os.Message;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.Menu;
|
import android.view.LayoutInflater;
|
||||||
import android.view.MenuItem;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.appcompat.widget.Toolbar;
|
|
||||||
import androidx.core.app.ActivityCompat;
|
import androidx.core.app.ActivityCompat;
|
||||||
import androidx.core.content.ContextCompat;
|
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.R;
|
||||||
import cc.winboll.studio.positions.activities.SettingsActivity;
|
import cc.winboll.studio.positions.beans.PostionModel;
|
||||||
import cc.winboll.studio.positions.activities.TestMapViewActivity;
|
|
||||||
import cc.winboll.studio.positions.utils.LocationFileStorage;
|
import cc.winboll.studio.positions.utils.LocationFileStorage;
|
||||||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
import com.hjq.toast.ToastUtils;
|
||||||
import com.google.android.material.snackbar.Snackbar;
|
|
||||||
import com.tencent.map.geolocation.TencentLocation;
|
import com.tencent.map.geolocation.TencentLocation;
|
||||||
import com.tencent.map.geolocation.TencentLocationListener;
|
import com.tencent.map.geolocation.TencentLocationListener;
|
||||||
import com.tencent.map.geolocation.TencentLocationManager;
|
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.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.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 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 TencentLocationManager locationManager;
|
||||||
private TencentLocationRequest locationRequest;
|
private TencentLocationRequest locationRequest;
|
||||||
private MyLocationStyle locationStyle;
|
private MyLocationStyle locationStyle;
|
||||||
ArrayList<LocationJson> locationJsonList;
|
ArrayList<PostionModel> locationJsonList;
|
||||||
|
Location lastLocation;
|
||||||
|
|
||||||
public static TXMSFragment newInstance(int page) {
|
// public static TXMSFragment newInstance(int page) {
|
||||||
Bundle args = new Bundle();
|
// Bundle args = new Bundle();
|
||||||
args.putInt(ARG_PAGE, page);
|
// args.putInt(ARG_PAGE, page);
|
||||||
TXMSFragment fragment = new TXMSFragment();
|
// TXMSFragment fragment = new TXMSFragment();
|
||||||
fragment.setArguments(args);
|
// fragment.setArguments(args);
|
||||||
return fragment;
|
// return fragment;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
// public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
// super.onCreate(savedInstanceState);
|
||||||
if (getArguments() != null) {
|
// if (getArguments() != null) {
|
||||||
mPage = getArguments().getInt(ARG_PAGE);
|
// mPage = getArguments().getInt(ARG_PAGE);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
@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) {
|
||||||
View viewRoot = inflater.inflate(R.layout.fragment_txms, container, false);
|
View viewRoot = inflater.inflate(R.layout.fragment_txms, container, false);
|
||||||
locationJsonList = new ArrayList<LocationJson>();
|
locationJsonList = new ArrayList<PostionModel>();
|
||||||
|
|
||||||
TencentMapInitializer.setAgreePrivacy(getActivity(), true);
|
TencentMapInitializer.setAgreePrivacy(getActivity(), true);
|
||||||
TencentMapInitializer.start(getActivity());
|
TencentMapInitializer.start(getActivity());
|
||||||
@ -134,18 +118,19 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
|
|||||||
checkLocationPermission();
|
checkLocationPermission();
|
||||||
|
|
||||||
//设置显示定位的图标
|
//设置显示定位的图标
|
||||||
TencentLocationManager.setUserAgreePrivacy(true);
|
// TencentLocationManager.setUserAgreePrivacy(true);
|
||||||
//建立定位
|
// // 启动实时定位
|
||||||
//initLocation();
|
// doRealTimePosition();
|
||||||
//对地图操作类进行操作
|
|
||||||
CameraUpdate cameraSigma =
|
// //对地图操作类进行操作
|
||||||
CameraUpdateFactory.newCameraPosition(new CameraPosition(
|
// CameraUpdate cameraSigma =
|
||||||
new LatLng(22.984066, 116.307548),
|
// CameraUpdateFactory.newCameraPosition(new CameraPosition(
|
||||||
15,
|
// new LatLng(22.984066, 116.307548),
|
||||||
0f,
|
// 15,
|
||||||
0f));
|
// 0f,
|
||||||
//移动地图
|
// 0f));
|
||||||
tencentMap.moveCamera(cameraSigma);
|
// //移动地图
|
||||||
|
// tencentMap.moveCamera(cameraSigma);
|
||||||
|
|
||||||
// 设置地图点击监听
|
// 设置地图点击监听
|
||||||
tencentMap.setOnMapClickListener(new TencentMap.OnMapClickListener(){
|
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);
|
//LatLng position = new LatLng(40.011313,116.391907);
|
||||||
BitmapDescriptor custom = BitmapDescriptorFactory.fromResource(R.drawable.marker);
|
BitmapDescriptor custom = BitmapDescriptorFactory.fromResource(R.drawable.marker);
|
||||||
Location location = createLocationFromLatLng(latLng);
|
Location location = createLocationFromLatLng(latLng);
|
||||||
addLocationJson(location);
|
addLocationToMap(location);
|
||||||
Marker mCustomMarker = tencentMap.addMarker(new MarkerOptions(latLng));
|
Marker mCustomMarker = tencentMap.addMarker(new MarkerOptions(latLng));
|
||||||
|
|
||||||
//创建Marker对象之后,修改属性
|
//创建Marker对象之后,修改属性
|
||||||
@ -169,6 +154,11 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
|
|||||||
|
|
||||||
loadLocations();
|
loadLocations();
|
||||||
|
|
||||||
|
// 启动实时定位
|
||||||
|
//pickUpPosition();
|
||||||
|
//realTimePositioning();
|
||||||
|
sendRealTimePositioningMessage();
|
||||||
|
|
||||||
return viewRoot;
|
return viewRoot;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -187,13 +177,13 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
|
|||||||
// 读取数据
|
// 读取数据
|
||||||
locationJsonList = LocationFileStorage.loadFromFile(getActivity());
|
locationJsonList = LocationFileStorage.loadFromFile(getActivity());
|
||||||
|
|
||||||
for (LocationJson lj : locationJsonList) {
|
for (PostionModel lj : locationJsonList) {
|
||||||
tencentMap.addMarker(new MarkerOptions(toTencentLatLng(lj.toLocation())));
|
tencentMap.addMarker(new MarkerOptions(convertToLatLng(lj.toLocation())));
|
||||||
//LogUtils.d("Location", "Lat: " + loc.getLatitude() + ", Lng: " + loc.getLongitude());
|
//LogUtils.d("Location", "Lat: " + loc.getLatitude() + ", Lng: " + loc.getLongitude());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void addLocationJson(Location location) {
|
void addLocationToMap(Location location) {
|
||||||
// 存储位置数据
|
// 存储位置数据
|
||||||
// Location location = new Location("gps");
|
// Location location = new Location("gps");
|
||||||
// location.setLatitude(22.984066);
|
// location.setLatitude(22.984066);
|
||||||
@ -202,7 +192,7 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
|
|||||||
|
|
||||||
// 方式1:保存到文件
|
// 方式1:保存到文件
|
||||||
//List<Location> locations = new ArrayList<>();
|
//List<Location> locations = new ArrayList<>();
|
||||||
locationJsonList.add(new LocationJson(location));
|
locationJsonList.add(new PostionModel(location));
|
||||||
LocationFileStorage.saveToFile(getActivity(), locationJsonList);
|
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) {
|
private Location createLocationFromLatLng(LatLng latLng) {
|
||||||
Location location = new Location("tencent_map_manual");
|
Location location = new Location("Tencent_Map_Manual");
|
||||||
|
|
||||||
// 设置基础坐标
|
// 设置基础坐标
|
||||||
location.setLatitude(latLng.getLatitude());
|
location.setLatitude(latLng.getLatitude());
|
||||||
@ -231,8 +241,16 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
|
|||||||
return location;
|
return 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 LatLng toTencentLatLng(Location location) {
|
public static LatLng convertToLatLng(Location location) {
|
||||||
return new LatLng(
|
return new LatLng(
|
||||||
location.getLatitude(),
|
location.getLatitude(),
|
||||||
location.getLongitude()
|
location.getLongitude()
|
||||||
@ -249,6 +267,21 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
|
|||||||
tencentMap.addMarker(options);
|
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的生命周期管理
|
* mapview的生命周期管理
|
||||||
*/
|
*/
|
||||||
@ -314,20 +347,74 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
|
|||||||
return bitmap;
|
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 = TencentLocationManager.getInstance(getActivity());
|
||||||
//设置坐标系
|
//设置坐标系
|
||||||
locationManager.setCoordinateType(TencentLocationManager.COORDINATE_TYPE_GCJ02);
|
locationManager.setCoordinateType(TencentLocationManager.COORDINATE_TYPE_GCJ02);
|
||||||
//创建定位请求
|
//创建定位请求
|
||||||
locationRequest = TencentLocationRequest.create();
|
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);
|
tencentMap.setLocationSource(this);
|
||||||
@ -335,9 +422,10 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
|
|||||||
tencentMap.setMyLocationEnabled(true);
|
tencentMap.setMyLocationEnabled(true);
|
||||||
//设置定位图标样式
|
//设置定位图标样式
|
||||||
setLocMarkerStyle();
|
setLocMarkerStyle();
|
||||||
// locationStyle = locationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE);
|
|
||||||
tencentMap.setMyLocationStyle(locationStyle);
|
tencentMap.setMyLocationStyle(locationStyle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 实现位置监听
|
* 实现位置监听
|
||||||
* @param tencentLocation
|
* @param tencentLocation
|
||||||
@ -359,6 +447,16 @@ public class TXMSFragment extends Fragment implements EasyPermissions.Permission
|
|||||||
getActivity().runOnUiThread(new Runnable() {
|
getActivity().runOnUiThread(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
|
||||||
|
//对地图操作类进行操作
|
||||||
|
CameraUpdate cameraSigma =
|
||||||
|
CameraUpdateFactory.newCameraPosition(new CameraPosition(
|
||||||
|
convertToLatLng(location),
|
||||||
|
15,
|
||||||
|
0f,
|
||||||
|
0f));
|
||||||
|
//移动地图
|
||||||
|
tencentMap.moveCamera(cameraSigma);
|
||||||
// Rules.getEffectInfo(location);
|
// Rules.getEffectInfo(location);
|
||||||
// double distance = DistanceUtils.getDistance(
|
// double distance = DistanceUtils.getDistance(
|
||||||
// locationA.getLatitude(),
|
// 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();
|
// 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);
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,20 +25,20 @@ public class TasksFragment extends Fragment {
|
|||||||
private static final String ARG_PAGE = "ARG_PAGE";
|
private static final String ARG_PAGE = "ARG_PAGE";
|
||||||
private int mPage;
|
private int mPage;
|
||||||
|
|
||||||
public static TasksFragment newInstance(int page) {
|
// public static TasksFragment newInstance(int page) {
|
||||||
Bundle args = new Bundle();
|
// Bundle args = new Bundle();
|
||||||
args.putInt(ARG_PAGE, page);
|
// args.putInt(ARG_PAGE, page);
|
||||||
TasksFragment fragment = new TasksFragment();
|
// TasksFragment fragment = new TasksFragment();
|
||||||
fragment.setArguments(args);
|
// fragment.setArguments(args);
|
||||||
return fragment;
|
// return fragment;
|
||||||
}
|
// }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
if (getArguments()!= null) {
|
// if (getArguments()!= null) {
|
||||||
mPage = getArguments().getInt(ARG_PAGE);
|
// mPage = getArguments().getInt(ARG_PAGE);
|
||||||
}
|
// }
|
||||||
setHasOptionsMenu(true);
|
setHasOptionsMenu(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,25 +15,25 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import cc.winboll.studio.libappbase.LogUtils;
|
import cc.winboll.studio.libappbase.LogUtils;
|
||||||
import cc.winboll.studio.positions.beans.LocationJson;
|
import cc.winboll.studio.positions.beans.PostionModel;
|
||||||
|
|
||||||
public class LocationFileStorage {
|
public class LocationFileStorage {
|
||||||
public static final String TAG = "LocationFileStorage";
|
public static final String TAG = "LocationFileStorage";
|
||||||
|
|
||||||
private static final String FILE_NAME = "locations.json";
|
private static final String FILE_NAME = "locations.json";
|
||||||
|
|
||||||
public static void saveToFile(Context context, ArrayList<LocationJson> locations) {
|
public static void saveToFile(Context context, ArrayList<PostionModel> locations) {
|
||||||
try {
|
try {
|
||||||
LocationJson.saveBeanList(context, locations, LocationJson.class);
|
PostionModel.saveBeanList(context, locations, PostionModel.class);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
|
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ArrayList<LocationJson> loadFromFile(Context context) {
|
public static ArrayList<PostionModel> loadFromFile(Context context) {
|
||||||
ArrayList<LocationJson> result = new ArrayList<LocationJson>();
|
ArrayList<PostionModel> result = new ArrayList<PostionModel>();
|
||||||
try {
|
try {
|
||||||
LocationJson.loadBeanList(context, result, LocationJson.class);
|
PostionModel.loadBeanList(context, result, PostionModel.class);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
|
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
|
||||||
}
|
}
|
||||||
|
@ -3,8 +3,13 @@
|
|||||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
|
|
||||||
<item
|
<item
|
||||||
android:id="@+id/item_addposition"
|
android:id="@+id/item_positionnow"
|
||||||
android:title="AddPositions"
|
android:title="PositionNow"
|
||||||
|
app:showAsAction="ifRoom" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/item_addnewposition"
|
||||||
|
android:title="AddNewPositions"
|
||||||
app:showAsAction="ifRoom" />
|
app:showAsAction="ifRoom" />
|
||||||
|
|
||||||
</menu>
|
</menu>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user