|
|
@@ -1,772 +0,0 @@
|
|
|
-// package com.fujica.abk.slice;
|
|
|
-
|
|
|
-// import com.fujica.abk.ResourceTable;
|
|
|
-// import com.fujica.abk.api.cache;
|
|
|
-// import com.fujica.abk.utils.Log;
|
|
|
-// import com.fujica.abk.utils.Toast;
|
|
|
-// import com.fujica.abk.utils.api;
|
|
|
-// import com.huawei.hms.accountsdk.constant.CommonConstant;
|
|
|
-// import com.huawei.hms.accountsdk.exception.ApiException;
|
|
|
-// import com.huawei.hms.accountsdk.support.account.AccountAuthManager;
|
|
|
-// import com.huawei.hms.accountsdk.support.account.request.AccountAuthParams;
|
|
|
-// import com.huawei.hms.accountsdk.support.account.request.AccountAuthParamsHelper;
|
|
|
-// import com.huawei.hms.accountsdk.support.account.result.AuthAccount;
|
|
|
-// import com.huawei.hms.accountsdk.support.account.service.AccountAuthService;
|
|
|
-// import com.huawei.hms.accountsdk.support.account.tasks.OnFailureListener;
|
|
|
-// import com.huawei.hms.accountsdk.support.account.tasks.OnSuccessListener;
|
|
|
-// import com.huawei.hms.accountsdk.support.account.tasks.Task;
|
|
|
-// import com.huawei.hms.maps.harmony.*;
|
|
|
-// import com.huawei.hms.maps.harmony.model.CameraPosition;
|
|
|
-// import com.huawei.hms.maps.harmony.model.LatLng;
|
|
|
-// import com.huawei.hms.maps.harmony.model.Marker;
|
|
|
-// import com.huawei.hms.maps.harmony.model.MarkerOptions;
|
|
|
-// import ohos.aafwk.ability.AbilitySlice;
|
|
|
-// import ohos.aafwk.ability.DataAbilityHelper;
|
|
|
-// import ohos.aafwk.ability.IDataAbilityObserver;
|
|
|
-// import ohos.aafwk.content.Intent;
|
|
|
-// import ohos.account.AccountAbility;
|
|
|
-// import ohos.agp.colors.RgbColor;
|
|
|
-// import ohos.agp.colors.StateColor;
|
|
|
-// import ohos.agp.components.*;
|
|
|
-// import ohos.agp.components.element.ShapeElement;
|
|
|
-// import ohos.agp.utils.Color;
|
|
|
-// import ohos.agp.window.dialog.ToastDialog;
|
|
|
-// import ohos.agp.window.service.Window;
|
|
|
-// import ohos.agp.window.service.WindowManager;
|
|
|
-// import ohos.global.resource.NotExistException;
|
|
|
-// import ohos.global.resource.Resource;
|
|
|
-// import ohos.location.Location;
|
|
|
-// import ohos.location.Locator;
|
|
|
-// import ohos.location.LocatorCallback;
|
|
|
-// import ohos.location.RequestParam;
|
|
|
-// import ohos.sysappcomponents.settings.AppSettings;
|
|
|
-// import ohos.sysappcomponents.settings.SystemSettings;
|
|
|
-
|
|
|
-// import java.io.IOException;
|
|
|
-// import java.lang.reflect.Method;
|
|
|
-// import java.util.ArrayList;
|
|
|
-// import java.util.List;
|
|
|
-
|
|
|
-// public class MainAbilitySlice extends AbilitySlice {
|
|
|
-// // PageSlider相关
|
|
|
-// private PageSlider pageSlider;
|
|
|
-// private PageSliderProvider pageSliderProvider;
|
|
|
-
|
|
|
-// // 底部导航栏组件
|
|
|
-// private DirectionalLayout navMy;
|
|
|
-// private DirectionalLayout navFindParking;
|
|
|
-// private DirectionalLayout navReserveParking;
|
|
|
-// private DirectionalLayout navCurrentLocation;
|
|
|
-
|
|
|
-// // 底部导航栏文字和图标
|
|
|
-// private Text textMy;
|
|
|
-// private Text textPark;
|
|
|
-// private Text textFee;
|
|
|
-// private Image iconPark;
|
|
|
-// private Image iconPark1;
|
|
|
-// private Image iconMy;
|
|
|
-// private Image iconMy1;
|
|
|
-// private Image iconFee;
|
|
|
-// private Image iconFee1;
|
|
|
-
|
|
|
-// // 当前选中的 tab
|
|
|
-// private int currentTab = 1; // 0: 我的, 1: 找车位, 2: 预约停车
|
|
|
-
|
|
|
-// // 定位相关
|
|
|
-// private Locator locator;
|
|
|
-// private LocatorCallback locatorCallback;
|
|
|
-// private Location currentLocation; // 当前定位坐标
|
|
|
-
|
|
|
-// // 地图相关 - 完全按照 MarkerDemo 的方式
|
|
|
-// private HuaweiMap mHuaweiMap;
|
|
|
-// /**
|
|
|
-// * Declare a MapView object.
|
|
|
-// */
|
|
|
-// private MapView mMapView;
|
|
|
-// /**
|
|
|
-// * Declare a Marker object.
|
|
|
-// */
|
|
|
-// private Marker mMarker;
|
|
|
-// /**
|
|
|
-// * 当前位置标记
|
|
|
-// */
|
|
|
-// private Marker currentLocationMarker;
|
|
|
-// DataAbilityHelper dataAbilityHelper;
|
|
|
-// IDataAbilityObserver dataAbilityObserver;
|
|
|
-
|
|
|
-// @Override
|
|
|
-// public void onStart(Intent intent) {
|
|
|
-// super.onStart(intent);
|
|
|
-
|
|
|
-// cache.setToken(getContext(), "sdfdsfdsf11111111111");
|
|
|
-// String token = cache.getToken(getContext());
|
|
|
-
|
|
|
-// // 设置全屏显示
|
|
|
-// setFullScreen();
|
|
|
-
|
|
|
-// // 设置 CommonContext,华为地图需要 - 完全按照示例代码
|
|
|
-// CommonContext.setContext(this);
|
|
|
-
|
|
|
-// // 设置布局
|
|
|
-// super.setUIContent(ResourceTable.Layout_ability_main);
|
|
|
-
|
|
|
-// // 初始化组件
|
|
|
-// initComponents();
|
|
|
-
|
|
|
-// // 初始化地图 - 完全按照 MarkerDemo 的方式
|
|
|
-// initMap();
|
|
|
-
|
|
|
-// // 设置事件监听
|
|
|
-// setupListeners();
|
|
|
-
|
|
|
-// // 初始化定位
|
|
|
-// initLocation();
|
|
|
-
|
|
|
-// Button mBtnHuaweiIdSignIn = findComponentById(ResourceTable.Id_btn_hwid_sign_in);
|
|
|
-// mBtnHuaweiIdSignIn.setClickedListener((Component c) -> {
|
|
|
-// huaweiIdSignIn();
|
|
|
-// });
|
|
|
-
|
|
|
-// final String key = "car_license_plate_number";
|
|
|
-// // final String key = SystemSettings.Date.TIME_FORMAT;
|
|
|
-
|
|
|
-// dataAbilityHelper = DataAbilityHelper.creator(this);
|
|
|
-// dataAbilityObserver = () -> {
|
|
|
-// String timeFormat = SystemSettings.getValue(dataAbilityHelper, key);
|
|
|
-// setTimeFormat(timeFormat);
|
|
|
-// };
|
|
|
-// dataAbilityHelper.registerObserver(SystemSettings.getUri(key), dataAbilityObserver);
|
|
|
-// String timeFormat1 = SystemSettings.getValue(dataAbilityHelper, "car_license_plate_number");
|
|
|
-// String timeFormat = SystemSettings.getValue(dataAbilityHelper, key);
|
|
|
-// }
|
|
|
-
|
|
|
-// void setTimeFormat(String timeFormat) {
|
|
|
-// String timeStr = "12";
|
|
|
-// if (timeStr.equals(timeFormat)) {
|
|
|
-// // Display in 12-hour format
|
|
|
-// } else {
|
|
|
-// // Display in 24-hour format
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
-// void huaweiIdSignIn() {
|
|
|
-// AccountAuthService accountAuthService;
|
|
|
-// // 1、配置登录请求参数AccountAuthParams,包括请求用户id(openid、unionid)、email、profile(昵称、头像)等。
|
|
|
-// // 2、DEFAULT_AUTH_REQUEST_PARAM默认包含了id和profile(昵称、头像)的请求。
|
|
|
-// // 3、如需要再获取用户邮箱,需要setEmail();
|
|
|
-// // 4、如需要获取其他受限信息,如国家和地区,则需要先申请scope,再设置请求参数。
|
|
|
-// AccountAuthParams accountAuthParams = new AccountAuthParamsHelper(AccountAuthParams.DEFAULT_AUTH_REQUEST_PARAM)
|
|
|
-// .setEmail()
|
|
|
-// .createParams();
|
|
|
-// try {
|
|
|
-// accountAuthService = AccountAuthManager.getService(accountAuthParams);
|
|
|
-// } catch (ApiException e) {
|
|
|
-// // 处理初始化登录授权服务失败,status code标识了失败的原因,请参考API中的错误码参考了解详细错误原因
|
|
|
-// e.getStatusCode();
|
|
|
-// Toast.error(getContext(),"Init Huawei accountAuthService FAILED.");
|
|
|
-// return;
|
|
|
-// }
|
|
|
-// Toast.info(getContext(),"Init Huawei accountAuthService SUCCESS");
|
|
|
-
|
|
|
-// if (accountAuthService == null) {
|
|
|
-// Toast.error(getContext(),"获取不到账号信息");
|
|
|
-// return;
|
|
|
-// }
|
|
|
-// // 调用静默登录接口。
|
|
|
-// // 如果华为系统帐号已经登录,并且已经授权,会登录成功;
|
|
|
-// // 否则静默登录失败,需要在失败监听中,显式地调用前台登录授权接口,完成登录授权。
|
|
|
-// Task<AuthAccount> taskSilentSignIn = accountAuthService.silentSignIn();
|
|
|
-// // Task<AuthAccount> taskSilentSignIn = accountAuthService.silentSignIn();
|
|
|
-// Toast.info(getContext(),"SilentSign START.");
|
|
|
-// // 添加静默登录成功处理监听
|
|
|
-// taskSilentSignIn.addOnSuccessListener(authAccount -> updateUI(authAccount));
|
|
|
-// // 添加静默登录失败监听
|
|
|
-// taskSilentSignIn.addOnFailureListener(e -> {
|
|
|
-// if (e instanceof ApiException) {
|
|
|
-// ApiException apiException = (ApiException) e;
|
|
|
-// Toast.error(getContext(),"SilentSignIn FAILED, status code: " + apiException.getStatusCode() + ". Need to foreground sign in" + "\r\n" + apiException.getStatusMessage()
|
|
|
-// + "\r\n" + apiException.getMessage() + "\r\n" + apiException.getCause());
|
|
|
-
|
|
|
-// // 静默登录失败,显式地调用前台登录授权接口,完成登录授权。
|
|
|
-// Task<AuthAccount> taskSignIn = accountAuthService.signIn();
|
|
|
-// Toast.info(getContext(),"SignIn foreground START.");
|
|
|
-// if (taskSignIn == null) {
|
|
|
-// Toast.info(getContext(),"SignIn foreground task is null.");
|
|
|
-// return;
|
|
|
-// }
|
|
|
-// taskSignIn.addOnSuccessListener(new OnSuccessListener<AuthAccount>() {
|
|
|
-// @Override
|
|
|
-// public void onSuccess(AuthAccount result) {
|
|
|
-// Toast.info(getContext(),"SignIn foreground SUCCESS.");
|
|
|
-// updateUI(result);
|
|
|
-// }
|
|
|
-// });
|
|
|
-// taskSignIn.addOnFailureListener(new OnFailureListener() {
|
|
|
-// @Override
|
|
|
-// public void onFailure(Exception e) {
|
|
|
-// Toast.info(getContext(),"SignIn foreground FAILED.");
|
|
|
-// if (e instanceof ApiException) {
|
|
|
-// ApiException apiException = (ApiException) e;
|
|
|
-// // 登录失败,status code标识了失败的原因,请参考API中的错误码参考了解详细错误原因
|
|
|
-// apiException.getStatusCode();
|
|
|
-// Toast.info(getContext(),"SignIn foreground FAILED. status code: "
|
|
|
-// + apiException.getStatusCode()
|
|
|
-// + ".");
|
|
|
-// if (CommonConstant.RETCODE.SIGN_IN_CANCELLED == apiException.getStatusCode()) {
|
|
|
-// Toast.info(getContext(),"Error message: User click CANCEL or Return, user cancel login in.");
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-// });
|
|
|
-// }
|
|
|
-// });
|
|
|
-// }
|
|
|
-
|
|
|
-// private void updateUI(AuthAccount authAccount) {
|
|
|
-// Toast.info(getContext(),authAccount.getOpenId() + " : " + authAccount.getUnionId());
|
|
|
-// }
|
|
|
-
|
|
|
-
|
|
|
-// /**
|
|
|
-// * 设置全屏显示
|
|
|
-// */
|
|
|
-// private void setFullScreen() {
|
|
|
-// try {
|
|
|
-// Window window = getWindow();
|
|
|
-// if (window != null) {
|
|
|
-// WindowManager.LayoutConfig layoutConfig = window.getLayoutConfig().orElse(null);
|
|
|
-// if (layoutConfig == null) {
|
|
|
-// layoutConfig = new WindowManager.LayoutConfig();
|
|
|
-// }
|
|
|
-// layoutConfig.type = WindowManager.LayoutConfig.MARK_FULL_SCREEN;
|
|
|
-// window.setLayoutConfig(layoutConfig);
|
|
|
-// }
|
|
|
-// } catch (Exception e) {
|
|
|
-// Log.error("设置全屏失败: " + e.getMessage());
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
-// /**
|
|
|
-// * 初始化组件
|
|
|
-// */
|
|
|
-// private void initComponents() {
|
|
|
-// // 初始化PageSlider
|
|
|
-// pageSlider = (PageSlider) findComponentById(ResourceTable.Id_page_slider);
|
|
|
-// if (pageSlider != null) {
|
|
|
-// // 创建PageSliderProvider
|
|
|
-// pageSliderProvider = new PageSliderProvider() {
|
|
|
-// private List<Component> pages = new ArrayList<>();
|
|
|
-
|
|
|
-// @Override
|
|
|
-// public int getCount() {
|
|
|
-// return 3; // 三个页面:我的、找车位、预约停车
|
|
|
-// }
|
|
|
-
|
|
|
-// @Override
|
|
|
-// public Object createPageInContainer(ComponentContainer componentContainer, int position) {
|
|
|
-// Component page = null;
|
|
|
-// try {
|
|
|
-// switch (position) {
|
|
|
-// case 0: // 我的
|
|
|
-// page = LayoutScatter.getInstance(MainAbilitySlice.this)
|
|
|
-// .parse(ResourceTable.Layout_layout_my, null, false);
|
|
|
-// break;
|
|
|
-// case 1: // 找车位
|
|
|
-// page = LayoutScatter.getInstance(MainAbilitySlice.this)
|
|
|
-// .parse(ResourceTable.Layout_layout_find_parking, null, false);
|
|
|
-// break;
|
|
|
-// case 2: // 预约停车
|
|
|
-// page = LayoutScatter.getInstance(MainAbilitySlice.this)
|
|
|
-// .parse(ResourceTable.Layout_layout_reserve_parking, null, false);
|
|
|
-// break;
|
|
|
-// }
|
|
|
-// if (page != null) {
|
|
|
-// componentContainer.addComponent(page);
|
|
|
-// pages.add(page);
|
|
|
-// }
|
|
|
-// } catch (Exception e) {
|
|
|
-// Log.error("创建页面失败: " + e.getMessage());
|
|
|
-// e.printStackTrace();
|
|
|
-// }
|
|
|
-// return page;
|
|
|
-// }
|
|
|
-
|
|
|
-// @Override
|
|
|
-// public void destroyPageFromContainer(ComponentContainer componentContainer, int position, Object object) {
|
|
|
-// if (object instanceof Component) {
|
|
|
-// componentContainer.removeComponent((Component) object);
|
|
|
-// pages.remove(object);
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
-// @Override
|
|
|
-// public boolean isPageMatchToObject(Component component, Object object) {
|
|
|
-// return component == object;
|
|
|
-// }
|
|
|
-// };
|
|
|
-
|
|
|
-// pageSlider.setProvider(pageSliderProvider);
|
|
|
-// // 默认显示找车位页面(索引1)
|
|
|
-// pageSlider.setCurrentPage(1);
|
|
|
-
|
|
|
-// // 添加页面切换监听
|
|
|
-// pageSlider.addPageChangedListener(new PageSlider.PageChangedListener() {
|
|
|
-// @Override
|
|
|
-// public void onPageChosen(int index) {
|
|
|
-// // 页面切换完成
|
|
|
-// currentTab = index;
|
|
|
-// updateBottomNavState(index);
|
|
|
-// Log.info("切换到页面: " + index);
|
|
|
-// }
|
|
|
-
|
|
|
-// @Override
|
|
|
-// public void onPageSliding(int state, float v, int index) {
|
|
|
-
|
|
|
-// }
|
|
|
-
|
|
|
-// @Override
|
|
|
-// public void onPageSlideStateChanged(int state) {
|
|
|
-// // 滑动状态变化
|
|
|
-// }
|
|
|
-// });
|
|
|
-// }
|
|
|
-
|
|
|
-// // 初始化底部导航栏
|
|
|
-// initBottomNavigation();
|
|
|
-// }
|
|
|
-
|
|
|
-// /**
|
|
|
-// * 初始化底部导航栏
|
|
|
-// */
|
|
|
-// private void initBottomNavigation() {
|
|
|
-// navMy = findComponentById(ResourceTable.Id_nav_my);
|
|
|
-// navFindParking = findComponentById(ResourceTable.Id_nav_find_parking);
|
|
|
-// navReserveParking = findComponentById(ResourceTable.Id_nav_reserve_parking);
|
|
|
-// navCurrentLocation = findComponentById(ResourceTable.Id_nav_current_location);
|
|
|
-
|
|
|
-// textMy = findComponentById(ResourceTable.Id_text_my);
|
|
|
-// textPark = findComponentById(ResourceTable.Id_text_park);
|
|
|
-// textFee = findComponentById(ResourceTable.Id_text_fee);
|
|
|
-// iconPark = findComponentById(ResourceTable.Id_icon_park);
|
|
|
-// iconPark1 = findComponentById(ResourceTable.Id_icon_park_1);
|
|
|
-// iconMy = findComponentById(ResourceTable.Id_icon_my);
|
|
|
-// iconMy1 = findComponentById(ResourceTable.Id_icon_my_1);
|
|
|
-// iconFee = findComponentById(ResourceTable.Id_icon_fee);
|
|
|
-// iconFee1 = findComponentById(ResourceTable.Id_icon_fee_1);
|
|
|
-
|
|
|
-// // 设置点击事件
|
|
|
-// if (navMy != null) {
|
|
|
-// navMy.setClickedListener(component -> switchToPage(0));
|
|
|
-// }
|
|
|
-// if (navFindParking != null) {
|
|
|
-// navFindParking.setClickedListener(component -> switchToPage(1));
|
|
|
-// }
|
|
|
-// if (navReserveParking != null) {
|
|
|
-// navReserveParking.setClickedListener(component -> switchToPage(2));
|
|
|
-// }
|
|
|
-// if (navCurrentLocation != null) {
|
|
|
-// navCurrentLocation.setClickedListener(component -> {
|
|
|
-// Log.info("点击了当前位置按钮");
|
|
|
-// locateCurrentPosition();
|
|
|
-// });
|
|
|
-// }
|
|
|
-
|
|
|
-// // 默认选中找车位
|
|
|
-// updateBottomNavState(1);
|
|
|
-// }
|
|
|
-
|
|
|
-// /**
|
|
|
-// * 切换到指定页面
|
|
|
-// */
|
|
|
-// private void switchToPage(int index) {
|
|
|
-// if (pageSlider != null && index >= 0 && index < 3) {
|
|
|
-// pageSlider.setCurrentPage(index);
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
-// /**
|
|
|
-// * 更新底部导航栏状态
|
|
|
-// */
|
|
|
-// private void updateBottomNavState(int index) {
|
|
|
-// // 重置所有导航项样式
|
|
|
-// Color grayColor = new Color(Color.getIntColor("#FF666666"));
|
|
|
-// Color blueColor = new Color(Color.getIntColor("#FA6332"));
|
|
|
-
|
|
|
-// if (textMy != null) {
|
|
|
-// textMy.setTextColor(grayColor);
|
|
|
-// }
|
|
|
-// if (textPark != null) {
|
|
|
-// textPark.setTextColor(grayColor);
|
|
|
-// }
|
|
|
-// if (textFee != null) {
|
|
|
-// textFee.setTextColor(grayColor);
|
|
|
-// }
|
|
|
-
|
|
|
-// iconPark.setImageAndDecodeBounds(ResourceTable.Media_park);
|
|
|
-// iconMy.setImageAndDecodeBounds(ResourceTable.Media_my);
|
|
|
-// // iconReserveParking.setImageAndDecodeBounds(ResourceTable.Media_fee);
|
|
|
-
|
|
|
-// // 设置选中状态
|
|
|
-// switch (index) {
|
|
|
-// case 0: // 我的
|
|
|
-// textMy.setTextColor(blueColor);
|
|
|
-// iconMy.setImageAndDecodeBounds(ResourceTable.Media_my_1);
|
|
|
-
|
|
|
-// iconMy.setVisibility(Component.HIDE);
|
|
|
-// iconMy1.setVisibility(Component.VISIBLE);
|
|
|
-// iconFee.setVisibility(Component.VISIBLE);
|
|
|
-// iconFee1.setVisibility(Component.HIDE);
|
|
|
-// iconPark.setVisibility(Component.VISIBLE);
|
|
|
-// iconPark1.setVisibility(Component.HIDE);
|
|
|
-// break;
|
|
|
-// case 1: // 找车位
|
|
|
-// textPark.setTextColor(blueColor);
|
|
|
-// iconPark.setImageAndDecodeBounds(ResourceTable.Media_park_1);
|
|
|
-
|
|
|
-// iconMy.setVisibility(Component.VISIBLE);
|
|
|
-// iconMy1.setVisibility(Component.HIDE);
|
|
|
-// iconFee.setVisibility(Component.VISIBLE);
|
|
|
-// iconFee1.setVisibility(Component.HIDE);
|
|
|
-// iconPark.setVisibility(Component.HIDE);
|
|
|
-// iconPark1.setVisibility(Component.VISIBLE);
|
|
|
-// break;
|
|
|
-// case 2: // 预约停车
|
|
|
-// textFee.setTextColor(blueColor);
|
|
|
-
|
|
|
-// iconMy.setVisibility(Component.VISIBLE);
|
|
|
-// iconMy1.setVisibility(Component.HIDE);
|
|
|
-// iconFee.setVisibility(Component.HIDE);
|
|
|
-// iconFee1.setVisibility(Component.VISIBLE);
|
|
|
-// iconPark.setVisibility(Component.VISIBLE);
|
|
|
-// iconPark1.setVisibility(Component.HIDE);
|
|
|
-// break;
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
-// /**
|
|
|
-// * 初始化地图 - 完全按照 MarkerDemo 的方式
|
|
|
-// */
|
|
|
-// private void initMap() {
|
|
|
-// try {
|
|
|
-// // Declaring and Initializing the HuaweiMapOptions Object - 完全按照 MarkerDemo
|
|
|
-// HuaweiMapOptions huaweiMapOptions = new HuaweiMapOptions();
|
|
|
-
|
|
|
-// // Initialize Camera Properties
|
|
|
-// CameraPosition cameraPosition =
|
|
|
-// new CameraPosition(new LatLng(48.893478, 2.334595), 6, 0, 0);
|
|
|
-
|
|
|
-// huaweiMapOptions
|
|
|
-// // Set Camera Properties
|
|
|
-// .camera(cameraPosition)
|
|
|
-// // Enables or disables the zoom function. By default, the zoom function is enabled.
|
|
|
-// .zoomControlsEnabled(false)
|
|
|
-// // Sets whether the compass is available. The compass is available by default.
|
|
|
-// .compassEnabled(true)
|
|
|
-// // Specifies whether the zoom gesture is available. By default, the zoom gesture is available.
|
|
|
-// .zoomGesturesEnabled(true)
|
|
|
-// // Specifies whether to enable the scrolling gesture. By default, the scrolling gesture is enabled.
|
|
|
-// .scrollGesturesEnabled(true)
|
|
|
-// // Specifies whether the rotation gesture is available. By default, the rotation gesture is available.
|
|
|
-// .rotateGesturesEnabled(false)
|
|
|
-// // Specifies whether the tilt gesture is available. By default, the tilt gesture is available.
|
|
|
-// .tiltGesturesEnabled(true)
|
|
|
-// // Sets whether the map is in lite mode. The default value is No.
|
|
|
-// .liteMode(false)
|
|
|
-// // Set Preference Minimum Zoom Level
|
|
|
-// .minZoomPreference(3)
|
|
|
-// // Set Preference Maximum Zoom Level
|
|
|
-// .maxZoomPreference(13);
|
|
|
-
|
|
|
-// if (true) return;
|
|
|
-
|
|
|
-// // Initialize MapView Object. - 完全按照 MarkerDemo
|
|
|
-// mMapView = new MapView(this, huaweiMapOptions);
|
|
|
-// mMapView.onCreate();
|
|
|
-
|
|
|
-
|
|
|
-// // Obtains the HuaweiMap object. - 完全按照 MarkerDemo
|
|
|
-// mMapView.getMapAsync(huaweiMap -> {
|
|
|
-// mHuaweiMap = huaweiMap;
|
|
|
-
|
|
|
-// // If mHuaweiMap is null, the program stops running. - 完全按照 MarkerDemo
|
|
|
-// if (null == mHuaweiMap) {
|
|
|
-// Log.error("mHuaweiMap 为 null");
|
|
|
-// return;
|
|
|
-// }
|
|
|
-
|
|
|
-// Log.info("地图已就绪,开始获取定位");
|
|
|
-
|
|
|
-// mHuaweiMap.setOnMapClickListener(new OnMapClickListener() {
|
|
|
-// @Override
|
|
|
-// public void onMapClick(LatLng latLng) {
|
|
|
-// new ToastDialog(CommonContext.getContext()).setText("onMapClick ").show();
|
|
|
-// }
|
|
|
-// });
|
|
|
-
|
|
|
-// // If mMarker is not null, remove it from the map and then set it to null. - 完全按照 MarkerDemo
|
|
|
-// if (null != mMarker) {
|
|
|
-// mMarker.remove();
|
|
|
-// mMarker = null;
|
|
|
-// }
|
|
|
-
|
|
|
-// // Add a marker to the map. - 完全按照 MarkerDemo
|
|
|
-// MarkerOptions options = new MarkerOptions()
|
|
|
-// .position(new LatLng(48.893478, 2.334595))
|
|
|
-// .title("Hello Huawei Map")
|
|
|
-// .snippet("This is a snippet!");
|
|
|
-// mMarker = mHuaweiMap.addMarker(options);
|
|
|
-
|
|
|
-// // Set the marker title. - 完全按照 MarkerDemo
|
|
|
-// if (mMarker != null) {
|
|
|
-// mMarker.setTitle("Marker title");
|
|
|
-// }
|
|
|
-
|
|
|
-// // Set whether the marker can be dragged. - 完全按照 MarkerDemo
|
|
|
-// if (mMarker != null) {
|
|
|
-// mMarker.setDraggable(true);
|
|
|
-// }
|
|
|
-
|
|
|
-// // Set the marker anchor point. - 完全按照 MarkerDemo
|
|
|
-// if (mMarker != null) {
|
|
|
-// mMarker.setMarkerAnchor(0.9F, 0.9F);
|
|
|
-// }
|
|
|
-
|
|
|
-// // Customizing the Marker Icon - 完全按照 MarkerDemo
|
|
|
-// addCustomMarker();
|
|
|
-
|
|
|
-// mHuaweiMap.setOnMarkerClickListener(new OnMarkerClickListener() {
|
|
|
-// @Override
|
|
|
-// public boolean onMarkerClick(Marker marker) {
|
|
|
-// new ToastDialog(CommonContext.getContext()).setText("onMarkerClick: " + marker.getTitle()).show();
|
|
|
-// return false;
|
|
|
-// }
|
|
|
-// });
|
|
|
-
|
|
|
-// mHuaweiMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
|
|
|
-// @Override
|
|
|
-// public void onInfoWindowClick(Marker marker) {
|
|
|
-// new ToastDialog(CommonContext.getContext()).setText("onInfoWindowClick:").show();
|
|
|
-// }
|
|
|
-// });
|
|
|
-
|
|
|
-// // 地图就绪后,自动获取当前位置
|
|
|
-// if (locator != null && locatorCallback != null) {
|
|
|
-// locateCurrentPosition();
|
|
|
-// }
|
|
|
-// });
|
|
|
-
|
|
|
-// // ComponentContainer.LayoutConfig config = new ComponentContainer.LayoutConfig(ComponentContainer.LayoutConfig.MATCH_PARENT, ComponentContainer.LayoutConfig.MATCH_PARENT);
|
|
|
-// // PositionLayout myLayout = new PositionLayout(this);
|
|
|
-// // myLayout.setLayoutConfig(config);
|
|
|
-
|
|
|
-// PositionLayout myLayout = findComponentById(ResourceTable.Id_main_body);
|
|
|
-
|
|
|
-// ShapeElement element = new ShapeElement();
|
|
|
-// element.setShape(ShapeElement.RECTANGLE);
|
|
|
-// element.setRgbColor(new RgbColor(255, 255, 255));
|
|
|
-
|
|
|
-// // 加载MapView
|
|
|
-// myLayout.addComponent(mMapView);
|
|
|
-// } catch (Exception e) {
|
|
|
-// Log.error("初始化地图失败: " + e.getMessage());
|
|
|
-// e.printStackTrace();
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
-// /**
|
|
|
-// * addCustomMarker - 完全按照 MarkerDemo
|
|
|
-// */
|
|
|
-// private void addCustomMarker() {
|
|
|
-// Resource resource = null;
|
|
|
-// try {
|
|
|
-// resource = getResourceManager().getResource(ResourceTable.Media_icon);
|
|
|
-// } catch (IOException e) {
|
|
|
-// e.printStackTrace();
|
|
|
-// } catch (NotExistException e) {
|
|
|
-// e.printStackTrace();
|
|
|
-// }
|
|
|
-
|
|
|
-// if (resource != null && mHuaweiMap != null) {
|
|
|
-// mHuaweiMap.addMarker(new MarkerOptions()
|
|
|
-// .position(new LatLng(47.8333, 2.8333))
|
|
|
-// .icon(resource));
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
-// /**
|
|
|
-// * 设置事件监听
|
|
|
-// */
|
|
|
-// private void setupListeners() {
|
|
|
-// // 事件监听已在initBottomNavigation中设置
|
|
|
-// }
|
|
|
-
|
|
|
-// /**
|
|
|
-// * 初始化定位服务
|
|
|
-// */
|
|
|
-// private void initLocation() {
|
|
|
-// try {
|
|
|
-// locator = new Locator(this);
|
|
|
-// locatorCallback = new LocatorCallback() {
|
|
|
-// @Override
|
|
|
-// public void onLocationReport(Location location) {
|
|
|
-// // 保存当前位置坐标
|
|
|
-// currentLocation = location;
|
|
|
-// double latitude = location.getLatitude();
|
|
|
-// double longitude = location.getLongitude();
|
|
|
-
|
|
|
-// Log.info("定位成功: " + latitude + ", " + longitude);
|
|
|
-
|
|
|
-// // 将坐标传递给地图
|
|
|
-// updateMapWithLocation(location);
|
|
|
-// }
|
|
|
-
|
|
|
-// @Override
|
|
|
-// public void onStatusChanged(int type) {
|
|
|
-// Log.info("定位状态变化: " + type);
|
|
|
-// }
|
|
|
-
|
|
|
-// @Override
|
|
|
-// public void onErrorReport(int errorCode) {
|
|
|
-// Log.error("定位错误: " + errorCode);
|
|
|
-// new ToastDialog(CommonContext.getContext())
|
|
|
-// .setText("定位失败,错误码: " + errorCode)
|
|
|
-// .show();
|
|
|
-// }
|
|
|
-// };
|
|
|
-// } catch (Exception e) {
|
|
|
-// Log.error("初始化定位服务失败: " + e.getMessage());
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
-// /**
|
|
|
-// * 定位到当前位置
|
|
|
-// */
|
|
|
-// private void locateCurrentPosition() {
|
|
|
-// if (locator == null || locatorCallback == null) {
|
|
|
-// Log.error("定位服务未初始化");
|
|
|
-// return;
|
|
|
-// }
|
|
|
-
|
|
|
-// try {
|
|
|
-// // 请求定位
|
|
|
-// RequestParam requestParam = new RequestParam(RequestParam.PRIORITY_ACCURACY, 0, 0);
|
|
|
-// locator.startLocating(requestParam, locatorCallback);
|
|
|
-// Log.info("开始定位...");
|
|
|
-// } catch (Exception e) {
|
|
|
-// Log.error("定位失败: " + e.getMessage());
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
-// /**
|
|
|
-// * 将定位坐标传递给地图并更新地图显示
|
|
|
-// */
|
|
|
-// private void updateMapWithLocation(Location location) {
|
|
|
-// if (mHuaweiMap == null) {
|
|
|
-// Log.warn("地图未初始化完成,等待地图就绪");
|
|
|
-// return;
|
|
|
-// }
|
|
|
-
|
|
|
-// try {
|
|
|
-// double latitude = location.getLatitude();
|
|
|
-// double longitude = location.getLongitude();
|
|
|
-
|
|
|
-// Log.info("更新地图位置: " + latitude + ", " + longitude);
|
|
|
-
|
|
|
-// // 创建坐标点
|
|
|
-// LatLng latLng = new LatLng(latitude, longitude);
|
|
|
-
|
|
|
-// // 移除旧的当前位置标记
|
|
|
-// if (currentLocationMarker != null) {
|
|
|
-// currentLocationMarker.remove();
|
|
|
-// currentLocationMarker = null;
|
|
|
-// }
|
|
|
-
|
|
|
-// // 在地图上添加当前位置标记
|
|
|
-// MarkerOptions currentLocationOptions = new MarkerOptions()
|
|
|
-// .position(latLng)
|
|
|
-// .title("当前位置")
|
|
|
-// .snippet("纬度: " + latitude + ", 经度: " + longitude);
|
|
|
-// currentLocationMarker = mHuaweiMap.addMarker(currentLocationOptions);
|
|
|
-
|
|
|
-// // Method 8: Set the center point and zoom level of the camera. - 完全按照示例代码
|
|
|
-// float zoom = 15.0f;
|
|
|
-// CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(latLng, zoom);
|
|
|
-
|
|
|
-// // move camera - 完全按照示例代码
|
|
|
-// mHuaweiMap.moveCamera(cameraUpdate);
|
|
|
-
|
|
|
-// Log.info("地图已更新到当前位置");
|
|
|
-
|
|
|
-// // 显示提示
|
|
|
-// new ToastDialog(CommonContext.getContext())
|
|
|
-// .setText("已定位到当前位置")
|
|
|
-// .show();
|
|
|
-
|
|
|
-// } catch (Exception e) {
|
|
|
-// Log.error("更新地图位置失败: " + e.getMessage());
|
|
|
-// e.printStackTrace();
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
-// /**
|
|
|
-// * 移动地图到当前位置 - 完全按照 MapViewCameraDemo 的方式
|
|
|
-// */
|
|
|
-// private void moveToCurrentLocation(Location location) {
|
|
|
-// updateMapWithLocation(location);
|
|
|
-// }
|
|
|
-
|
|
|
-// // 生命周期管理 - 完全按照示例代码 MapViewDemo.java 的方式
|
|
|
-// @Override
|
|
|
-// protected void onActive() {
|
|
|
-// super.onActive();
|
|
|
-// if (mMapView != null) {
|
|
|
-// mMapView.onResume();
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
-// @Override
|
|
|
-// protected void onInactive() {
|
|
|
-// super.onInactive();
|
|
|
-// if (mMapView != null) {
|
|
|
-// mMapView.onPause();
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
-// @Override
|
|
|
-// protected void onBackground() {
|
|
|
-// super.onBackground();
|
|
|
-// if (mMapView != null) {
|
|
|
-// mMapView.onStop();
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
-// @Override
|
|
|
-// protected void onForeground(Intent intent) {
|
|
|
-// super.onForeground(intent);
|
|
|
-// if (mMapView != null) {
|
|
|
-// mMapView.onStart();
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
-// @Override
|
|
|
-// protected void onStop() {
|
|
|
-// super.onStop();
|
|
|
-// // 停止定位
|
|
|
-// if (locator != null && locatorCallback != null) {
|
|
|
-// try {
|
|
|
-// locator.stopLocating(locatorCallback);
|
|
|
-// } catch (Exception e) {
|
|
|
-// Log.error("停止定位失败: " + e.getMessage());
|
|
|
-// }
|
|
|
-// }
|
|
|
-// // 销毁地图 - 完全按照示例代码
|
|
|
-// if (mMapView != null) {
|
|
|
-// mMapView.onDestroy();
|
|
|
-// }
|
|
|
-
|
|
|
-// if (dataAbilityHelper != null) {
|
|
|
-
|
|
|
-// }
|
|
|
-// dataAbilityHelper.unregisterObserver(SystemSettings.getUri(SystemSettings.Date.TIME_FORMAT), dataAbilityObserver);
|
|
|
-// }
|
|
|
-// }
|