添加地图定位功能
This commit is contained in:
@@ -6,7 +6,7 @@
|
|||||||
# http://www.gradle.org/docs/current/userguide/build_environment.html
|
# http://www.gradle.org/docs/current/userguide/build_environment.html
|
||||||
# Specifies the JVM arguments used for the daemon process.
|
# Specifies the JVM arguments used for the daemon process.
|
||||||
# The setting is particularly useful for tweaking memory settings.
|
# The setting is particularly useful for tweaking memory settings.
|
||||||
org.gradle.jvmargs=-Xmx2048m
|
org.gradle.jvmargs=-Xmx4096m
|
||||||
# When configured, Gradle will run in incubating parallel mode.
|
# When configured, Gradle will run in incubating parallel mode.
|
||||||
# This option should only be used with decoupled projects. More details, visit
|
# This option should only be used with decoupled projects. More details, visit
|
||||||
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
||||||
@@ -18,7 +18,7 @@ android.useAndroidX=true
|
|||||||
# Automatically convert third-party libraries to use AndroidX
|
# Automatically convert third-party libraries to use AndroidX
|
||||||
android.enableJetifier=true
|
android.enableJetifier=true
|
||||||
|
|
||||||
#org.gradle.caching=true
|
org.gradle.caching=true
|
||||||
|
|
||||||
android.disableAutomaticComponentCreation=true
|
android.disableAutomaticComponentCreation=true
|
||||||
|
|
||||||
|
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,5 +1,5 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl = https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
|
distributionUrl = https\://services.gradle.org/distributions/gradle-7.5.1-all.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
@@ -4,6 +4,7 @@
|
|||||||
位置应用,与卫星定位有关的应用。可以根据设定的位置与时间条件判断,来发送通知的应用。
|
位置应用,与卫星定位有关的应用。可以根据设定的位置与时间条件判断,来发送通知的应用。
|
||||||
|
|
||||||
#### 软件架构
|
#### 软件架构
|
||||||
|
以腾讯位置服务SDK源码为基础。源码地址:https://lbs.qq.com/mobile/androidMapSDK/developerGuide/configuration
|
||||||
适配安卓应用 [AIDE Pro] 的 Gradle 编译结构。
|
适配安卓应用 [AIDE Pro] 的 Gradle 编译结构。
|
||||||
也适配安卓应用 [AndroidIDE] 的 Gradle 编译结构。
|
也适配安卓应用 [AndroidIDE] 的 Gradle 编译结构。
|
||||||
|
|
||||||
|
@@ -56,6 +56,9 @@ android {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
// 定位服务
|
||||||
|
implementation 'com.google.android.gms:play-services-location:20.0.0'
|
||||||
|
|
||||||
implementation fileTree(include: ['*.jar'], dir: 'libs')
|
implementation fileTree(include: ['*.jar'], dir: 'libs')
|
||||||
implementation 'androidx.recyclerview:recyclerview:1.1.0'
|
implementation 'androidx.recyclerview:recyclerview:1.1.0'
|
||||||
implementation 'androidx.appcompat:appcompat:1.1.0'
|
implementation 'androidx.appcompat:appcompat:1.1.0'
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
#Created by .winboll/winboll_app_build.gradle
|
#Created by .winboll/winboll_app_build.gradle
|
||||||
#Mon Feb 24 00:05:11 GMT 2025
|
#Mon Feb 24 07:18:15 GMT 2025
|
||||||
stageCount=0
|
stageCount=0
|
||||||
libraryProject=
|
libraryProject=
|
||||||
baseVersion=1.0
|
baseVersion=1.0
|
||||||
publishVersion=1.0.0
|
publishVersion=1.0.0
|
||||||
buildCount=93
|
buildCount=147
|
||||||
baseBetaVersion=1.0.1
|
baseBetaVersion=1.0.1
|
||||||
|
@@ -1,23 +1,38 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
package="cc.winboll.studio.positions">
|
package="cc.winboll.studio.positions">
|
||||||
<!-- 访问网络. 某些位置信息需要从网络服务器获取 -->
|
|
||||||
<uses-permission android:name="android.permission.INTERNET" /> <!-- 访问WiFi状态. 需要WiFi信息用于网络定位 -->
|
<!-- 拥有完全的网络访问权限 -->
|
||||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 修改WiFi状态. 发起WiFi扫描, 需要WiFi信息用于网络定位 -->
|
<uses-permission android:name="android.permission.INTERNET"/>
|
||||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 访问网络状态, 检测网络的可用性. 需要网络运营商相关信息用于网络定位 -->
|
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 访问网络的变化, 需要某些信息用于网络定位 -->
|
<!-- 查看网络连接 -->
|
||||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||||
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 访问手机当前状态, 需要device id用于网络定位 -->
|
|
||||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
<!-- 查看WLAN连接 -->
|
||||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
|
||||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
<!-- 修改或删除您共享存储空间中的内容 -->
|
||||||
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
|
||||||
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
|
<!-- 读取您共享存储空间中的内容 -->
|
||||||
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
||||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
|
||||||
|
<!-- 读取手机状态和身份 -->
|
||||||
|
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
|
||||||
|
|
||||||
|
<!-- 只能在前台获取精确的位置信息 -->
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
|
||||||
|
|
||||||
|
<!-- 只能在前台获取大概位置(基于网络) -->
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
|
||||||
|
|
||||||
|
<!-- 连接WLAN网络和断开连接 -->
|
||||||
|
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
|
||||||
|
|
||||||
|
<!-- 更改网络连接性 -->
|
||||||
|
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:name=".App"
|
android:name=".App"
|
||||||
@@ -28,510 +43,699 @@
|
|||||||
android:supportsRtl="true"
|
android:supportsRtl="true"
|
||||||
android:theme="@style/MyAppTheme"
|
android:theme="@style/MyAppTheme"
|
||||||
android:usesCleartextTraffic="true"
|
android:usesCleartextTraffic="true"
|
||||||
|
android:requestLegacyExternalStorage="true"
|
||||||
tools:ignore="AllowBackup,GoogleAppIndexingWarning"
|
tools:ignore="AllowBackup,GoogleAppIndexingWarning"
|
||||||
tools:targetApi="p">
|
tools:targetApi="q">
|
||||||
<activity android:name=".MainActivity">
|
|
||||||
<intent-filter>
|
<activity android:name=".MainActivity">
|
||||||
<action android:name="android.intent.action.MAIN" />
|
|
||||||
|
<intent-filter>
|
||||||
|
|
||||||
|
<action android:name="android.intent.action.MAIN"/>
|
||||||
|
|
||||||
|
<category android:name="android.intent.category.LAUNCHER"/>
|
||||||
|
|
||||||
<category android:name="android.intent.category.LAUNCHER" />
|
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
|
<activity android:name=".MainActivity2">
|
||||||
|
|
||||||
|
</activity>
|
||||||
|
|
||||||
<activity android:name="com.tencent.map.vector.demo.DemoMainActivity">
|
<activity android:name="com.tencent.map.vector.demo.DemoMainActivity">
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name="com.tencent.map.vector.demo.basic.MapViewActivity"
|
android:name="com.tencent.map.vector.demo.basic.MapViewActivity"
|
||||||
android:description="@string/demo_description_show_map"
|
android:description="@string/demo_description_show_map"
|
||||||
android:label="@string/demo_label_show_map">
|
android:label="@string/demo_label_show_map">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_basic" />
|
android:value="@string/demo_type_basic"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".basic.SetMapTypeActivity"
|
android:name=".basic.SetMapTypeActivity"
|
||||||
android:description="@string/demo_description_map_type"
|
android:description="@string/demo_description_map_type"
|
||||||
android:label="@string/demo_label_map_type">
|
android:label="@string/demo_label_map_type">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_basic" />
|
android:value="@string/demo_type_basic"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".basic.MapRenderLayerActivity"
|
android:name=".basic.MapRenderLayerActivity"
|
||||||
android:description="@string/demo_description_show_mapRenderLayer"
|
android:description="@string/demo_description_show_mapRenderLayer"
|
||||||
android:label="@string/demo_label_show_mapRenderLayer">
|
android:label="@string/demo_label_show_mapRenderLayer">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_basic" />
|
android:value="@string/demo_type_basic"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".location.LocationLayerActivity"
|
android:name=".location.LocationLayerActivity"
|
||||||
android:description="@string/demo_description_show_location"
|
android:description="@string/demo_description_show_location"
|
||||||
android:label="@string/demo_label_show_location">
|
android:label="@string/demo_label_show_location">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_location" />
|
android:value="@string/demo_type_location"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".location.LocationPointActivity"
|
android:name=".location.LocationPointActivity"
|
||||||
android:description="@string/demo_description_change_location_style"
|
android:description="@string/demo_description_change_location_style"
|
||||||
android:label="@string/demo_label_change_location_style">
|
android:label="@string/demo_label_change_location_style">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_location" />
|
android:value="@string/demo_type_location"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".basic.IndoorMapActivity"
|
android:name=".basic.IndoorMapActivity"
|
||||||
android:description="@string/demo_description_indoor_map"
|
android:description="@string/demo_description_indoor_map"
|
||||||
android:label="@string/demo_label_indoor_map">
|
android:label="@string/demo_label_indoor_map">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_basic" />
|
android:value="@string/demo_type_basic"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".basic.OverseaMapActivity"
|
android:name=".basic.OverseaMapActivity"
|
||||||
android:description="@string/demo_description_oversea"
|
android:description="@string/demo_description_oversea"
|
||||||
android:label="@string/demo_label_oversea">
|
android:label="@string/demo_label_oversea">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_basic" />
|
android:value="@string/demo_type_basic"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".basic.MapStyleDemoActivity"
|
android:name=".basic.MapStyleDemoActivity"
|
||||||
android:description="@string/demo_description_style"
|
android:description="@string/demo_description_style"
|
||||||
android:label="@string/demo_label_style">
|
android:label="@string/demo_label_style">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_basic" />
|
android:value="@string/demo_type_basic"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".basic.UiSettingsActivity"
|
android:name=".basic.UiSettingsActivity"
|
||||||
android:description="@string/demo_description_ui"
|
android:description="@string/demo_description_ui"
|
||||||
android:label="@string/demo_label_ui">
|
android:label="@string/demo_label_ui">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_interactive" />
|
android:value="@string/demo_type_interactive"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".gesture.GestureSettingsActivity"
|
android:name=".gesture.GestureSettingsActivity"
|
||||||
android:description="@string/demo_description_gesture"
|
android:description="@string/demo_description_gesture"
|
||||||
android:label="@string/demo_label_gesture">
|
android:label="@string/demo_label_gesture">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_interactive" />
|
android:value="@string/demo_type_interactive"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".transaction.ZoomMapActivity"
|
android:name=".transaction.ZoomMapActivity"
|
||||||
android:description="@string/demo_description_modify_zoom"
|
android:description="@string/demo_description_modify_zoom"
|
||||||
android:label="@string/demo_label_modify_zoom">
|
android:label="@string/demo_label_modify_zoom">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_interactive" />
|
android:value="@string/demo_type_interactive"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".camera.MapCameraCenterActivity"
|
android:name=".camera.MapCameraCenterActivity"
|
||||||
android:description="@string/demo_description_modify_map_center"
|
android:description="@string/demo_description_modify_map_center"
|
||||||
android:label="@string/demo_label_modify_map_center">
|
android:label="@string/demo_label_modify_map_center">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_interactive" />
|
android:value="@string/demo_type_interactive"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".camera.MapBoundActivity"
|
android:name=".camera.MapBoundActivity"
|
||||||
android:description="@string/demo_description_map_bound"
|
android:description="@string/demo_description_map_bound"
|
||||||
android:label="@string/demo_label_map_bound">
|
android:label="@string/demo_label_map_bound">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_interactive" />
|
android:value="@string/demo_type_interactive"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".poi.PoiClickActivity"
|
android:name=".poi.PoiClickActivity"
|
||||||
android:description="@string/demo_description_click_poi"
|
android:description="@string/demo_description_click_poi"
|
||||||
android:label="@string/demo_label_click_poi">
|
android:label="@string/demo_label_click_poi">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_interactive" />
|
android:value="@string/demo_type_interactive"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".transaction.AnimateCameraActivity"
|
android:name=".transaction.AnimateCameraActivity"
|
||||||
android:description="@string/demo_description_animate_camera"
|
android:description="@string/demo_description_animate_camera"
|
||||||
android:label="@string/demo_label_animate_camera">
|
android:label="@string/demo_label_animate_camera">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_interactive" />
|
android:value="@string/demo_type_interactive"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".camera.MapAnchorZoomActivity"
|
android:name=".camera.MapAnchorZoomActivity"
|
||||||
android:description="@string/demo_description_map_camera_anchor"
|
android:description="@string/demo_description_map_camera_anchor"
|
||||||
android:label="@string/demo_label_map_camera_anchor">
|
android:label="@string/demo_label_map_camera_anchor">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_interactive" />
|
android:value="@string/demo_type_interactive"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".transaction.ScollMapActivity"
|
android:name=".transaction.ScollMapActivity"
|
||||||
android:description="@string/demo_description_camera_translation"
|
android:description="@string/demo_description_camera_translation"
|
||||||
android:label="@string/demo_label_camera_translation">
|
android:label="@string/demo_label_camera_translation">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_transformation" />
|
android:value="@string/demo_type_transformation"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".transaction.RotateMapActivity"
|
android:name=".transaction.RotateMapActivity"
|
||||||
android:description="@string/demo_description_camera_rotation"
|
android:description="@string/demo_description_camera_rotation"
|
||||||
android:label="@string/demo_label_camera_rotation">
|
android:label="@string/demo_label_camera_rotation">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_transformation" />
|
android:value="@string/demo_type_transformation"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".transaction.ZoomCalulateActivity"
|
android:name=".transaction.ZoomCalulateActivity"
|
||||||
android:description="@string/demo_description_camera_include_points"
|
android:description="@string/demo_description_camera_include_points"
|
||||||
android:label="@string/demo_label_camera_include_points">
|
android:label="@string/demo_label_camera_include_points">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_transformation" />
|
android:value="@string/demo_type_transformation"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".transaction.MoveCameraActivity"
|
android:name=".transaction.MoveCameraActivity"
|
||||||
android:description="@string/demo_description_camera_change_listener"
|
android:description="@string/demo_description_camera_change_listener"
|
||||||
android:label="@string/demo_label_camera_change_listener">
|
android:label="@string/demo_label_camera_change_listener">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_transformation" />
|
android:value="@string/demo_type_transformation"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".gesture.MapListenActivity"
|
android:name=".gesture.MapListenActivity"
|
||||||
android:description="@string/demo_description_map_click_listener"
|
android:description="@string/demo_description_map_click_listener"
|
||||||
android:label="@string/demo_label_map_click_listener">
|
android:label="@string/demo_label_map_click_listener">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_transformation" />
|
android:value="@string/demo_type_transformation"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".gesture.MapLongClickActivity"
|
android:name=".gesture.MapLongClickActivity"
|
||||||
android:description="@string/demo_description_map_long_click_listener"
|
android:description="@string/demo_description_map_long_click_listener"
|
||||||
android:label="@string/demo_label_map_long_click_listener">
|
android:label="@string/demo_label_map_long_click_listener">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_transformation" />
|
android:value="@string/demo_type_transformation"/>
|
||||||
</activity> <!-- 标注 -->
|
|
||||||
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".marker.SimpleMarkerActivity"
|
android:name=".marker.SimpleMarkerActivity"
|
||||||
android:description="@string/demo_description_simple_marker"
|
android:description="@string/demo_description_simple_marker"
|
||||||
android:label="@string/demo_label_simple_marker">
|
android:label="@string/demo_label_simple_marker">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_marker" />
|
android:value="@string/demo_type_marker"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".marker.MarkerCollisions"
|
android:name=".marker.MarkerCollisions"
|
||||||
android:description="@string/demo_description_collisions_marker"
|
android:description="@string/demo_description_collisions_marker"
|
||||||
android:label="@string/demo_label_collisions_marker">
|
android:label="@string/demo_label_collisions_marker">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_marker" />
|
android:value="@string/demo_type_marker"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".marker.MarkerOptionsActivity"
|
android:name=".marker.MarkerOptionsActivity"
|
||||||
android:description="@string/demo_description_marker_options"
|
android:description="@string/demo_description_marker_options"
|
||||||
android:label="@string/demo_label_marker_options">
|
android:label="@string/demo_label_marker_options">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_marker" />
|
android:value="@string/demo_type_marker"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".marker.MarkerClickActivity"
|
android:name=".marker.MarkerClickActivity"
|
||||||
android:description="@string/demo_description_marker_click_listener"
|
android:description="@string/demo_description_marker_click_listener"
|
||||||
android:label="@string/demo_label_marker_click_listener">
|
android:label="@string/demo_label_marker_click_listener">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_marker" />
|
android:value="@string/demo_type_marker"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".marker.MarkerDragActivity"
|
android:name=".marker.MarkerDragActivity"
|
||||||
android:description="@string/demo_description_marker_drag_listener"
|
android:description="@string/demo_description_marker_drag_listener"
|
||||||
android:label="@string/demo_label_marker_drag_listener">
|
android:label="@string/demo_label_marker_drag_listener">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_marker" />
|
android:value="@string/demo_type_marker"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".marker.MarkerInfoWindowActivity"
|
android:name=".marker.MarkerInfoWindowActivity"
|
||||||
android:description="@string/demo_description_infowindow_click_listener"
|
android:description="@string/demo_description_infowindow_click_listener"
|
||||||
android:label="@string/demo_label_infowindow_click_listener">
|
android:label="@string/demo_label_infowindow_click_listener">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_marker" />
|
android:value="@string/demo_type_marker"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".marker.MarkerClusterActivity"
|
android:name=".marker.MarkerClusterActivity"
|
||||||
android:description="@string/demo_description_marker_cluster"
|
android:description="@string/demo_description_marker_cluster"
|
||||||
android:label="@string/demo_label_marker_cluster">
|
android:label="@string/demo_label_marker_cluster">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_marker" />
|
android:value="@string/demo_type_marker"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".marker.MarkerAnimation"
|
android:name=".marker.MarkerAnimation"
|
||||||
android:description="@string/demo_description_marker_animation"
|
android:description="@string/demo_description_marker_animation"
|
||||||
android:label="@string/demo_label_marker_animation">
|
android:label="@string/demo_label_marker_animation">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_marker" />
|
android:value="@string/demo_type_marker"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".heatoverlay.DrawHeatOverlayActivity"
|
android:name=".heatoverlay.DrawHeatOverlayActivity"
|
||||||
android:description="@string/demo_description_heat_map"
|
android:description="@string/demo_description_heat_map"
|
||||||
android:label="@string/demo_label_heat_map">
|
android:label="@string/demo_label_heat_map">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_draw" />
|
android:value="@string/demo_type_draw"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".polygon.TileOverlayActivity"
|
android:name=".polygon.TileOverlayActivity"
|
||||||
android:description="@string/demo_description_tileOverlay_map"
|
android:description="@string/demo_description_tileOverlay_map"
|
||||||
android:label="@string/demo_label_tileOverlay_map">
|
android:label="@string/demo_label_tileOverlay_map">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_draw" />
|
android:value="@string/demo_type_draw"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".polyline.DrawLineActivity"
|
android:name=".polyline.DrawLineActivity"
|
||||||
android:description="@string/demo_description_polyline"
|
android:description="@string/demo_description_polyline"
|
||||||
android:label="@string/demo_label_polyline">
|
android:label="@string/demo_label_polyline">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_draw" />
|
android:value="@string/demo_type_draw"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".polyline.MutablePolylineActivity"
|
android:name=".polyline.MutablePolylineActivity"
|
||||||
android:description="@string/demo_description_mutable_polyline"
|
android:description="@string/demo_description_mutable_polyline"
|
||||||
android:label="@string/demo_label_mutable_polyline">
|
android:label="@string/demo_label_mutable_polyline">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_draw" />
|
android:value="@string/demo_type_draw"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".polygon.DrawPolygonActivity"
|
android:name=".polygon.DrawPolygonActivity"
|
||||||
android:description="@string/demo_description_polygon"
|
android:description="@string/demo_description_polygon"
|
||||||
android:label="@string/demo_label_polygon">
|
android:label="@string/demo_label_polygon">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_draw" />
|
android:value="@string/demo_type_draw"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".circle.DrawCircleActivity"
|
android:name=".circle.DrawCircleActivity"
|
||||||
android:description="@string/demo_description_circle"
|
android:description="@string/demo_description_circle"
|
||||||
android:label="@string/demo_label_circle">
|
android:label="@string/demo_label_circle">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_draw" />
|
android:value="@string/demo_type_draw"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".circle.ArcActivity"
|
android:name=".circle.ArcActivity"
|
||||||
android:description="@string/demo_description_arc"
|
android:description="@string/demo_description_arc"
|
||||||
android:label="@string/demo_label_arc">
|
android:label="@string/demo_label_arc">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_draw" />
|
android:value="@string/demo_type_draw"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".search.WalkingRouteActivity"
|
android:name=".search.WalkingRouteActivity"
|
||||||
android:description="@string/demo_description_walking_plan"
|
android:description="@string/demo_description_walking_plan"
|
||||||
android:label="@string/demo_label_walking_plan">
|
android:label="@string/demo_label_walking_plan">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_route_plan" />
|
android:value="@string/demo_type_route_plan"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".search.DrivingRouteActivity"
|
android:name=".search.DrivingRouteActivity"
|
||||||
android:description="@string/demo_description_driving_plan"
|
android:description="@string/demo_description_driving_plan"
|
||||||
android:label="@string/demo_label_driving_plan">
|
android:label="@string/demo_label_driving_plan">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_route_plan" />
|
android:value="@string/demo_type_route_plan"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".search.TransitRouteActivity"
|
android:name=".search.TransitRouteActivity"
|
||||||
android:description="@string/demo_description_transit_plan"
|
android:description="@string/demo_description_transit_plan"
|
||||||
android:label="@string/demo_label_transit_plan">
|
android:label="@string/demo_label_transit_plan">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_route_plan" />
|
android:value="@string/demo_type_route_plan"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".search.TruckingRouteActivity"
|
android:name=".search.TruckingRouteActivity"
|
||||||
android:description="@string/demo_description_truking_plan"
|
android:description="@string/demo_description_truking_plan"
|
||||||
android:label="@string/demo_label_truking_plan">
|
android:label="@string/demo_label_truking_plan">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_route_plan" />
|
android:value="@string/demo_type_route_plan"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".search.SearchBasicActivity"
|
android:name=".search.SearchBasicActivity"
|
||||||
android:description="@string/demo_description_basic_search"
|
android:description="@string/demo_description_basic_search"
|
||||||
android:label="@string/demo_label_basic_search">
|
android:label="@string/demo_label_basic_search">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_search" />
|
android:value="@string/demo_type_search"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".search.GeoCoderActivity"
|
android:name=".search.GeoCoderActivity"
|
||||||
android:description="@string/demo_description_geocoder"
|
android:description="@string/demo_description_geocoder"
|
||||||
android:label="@string/demo_label_geocoder">
|
android:label="@string/demo_label_geocoder">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_search" />
|
android:value="@string/demo_type_search"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".search.DistrictActivity"
|
android:name=".search.DistrictActivity"
|
||||||
android:description="@string/demo_description_district"
|
android:description="@string/demo_description_district"
|
||||||
android:label="@string/demo_label_district">
|
android:label="@string/demo_label_district">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_search" />
|
android:value="@string/demo_type_search"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".polyline.LineTextActivity"
|
android:name=".polyline.LineTextActivity"
|
||||||
android:description="@string/demo_description_line_text"
|
android:description="@string/demo_description_line_text"
|
||||||
android:label="@string/demo_label_line_text">
|
android:label="@string/demo_label_line_text">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_special" />
|
android:value="@string/demo_type_special"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".utils.BitMapActivity"
|
android:name=".utils.BitMapActivity"
|
||||||
android:description="@string/demo_description_bitmap"
|
android:description="@string/demo_description_bitmap"
|
||||||
android:enabled="false"
|
android:enabled="false"
|
||||||
android:label="@string/demo_label_bitmap">
|
android:label="@string/demo_label_bitmap">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_tools" />
|
android:value="@string/demo_type_tools"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".utils.SnapshotActivity"
|
android:name=".utils.SnapshotActivity"
|
||||||
android:description="@string/demo_description_map_snapshot"
|
android:description="@string/demo_description_map_snapshot"
|
||||||
android:label="@string/demo_label_map_snapshot">
|
android:label="@string/demo_label_map_snapshot">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_tools" />
|
android:value="@string/demo_type_tools"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".utils.CoordinateActivity"
|
android:name=".utils.CoordinateActivity"
|
||||||
android:description="@string/demo_description_projection"
|
android:description="@string/demo_description_projection"
|
||||||
android:label="@string/demo_label_projection">
|
android:label="@string/demo_label_projection">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_tools" />
|
android:value="@string/demo_type_tools"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
<activity android:name=".basic.SupportMapFragmentActivity" />
|
|
||||||
|
<activity android:name=".basic.SupportMapFragmentActivity"/>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".marker.CustomRenderActivity"
|
android:name=".marker.CustomRenderActivity"
|
||||||
android:description="@string/demo_description_opengl"
|
android:description="@string/demo_description_opengl"
|
||||||
android:label="@string/demo_label_opengl">
|
android:label="@string/demo_label_opengl">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_draw" />
|
android:value="@string/demo_type_draw"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".marker.GroundOverlayActivity"
|
android:name=".marker.GroundOverlayActivity"
|
||||||
android:description="@string/demo_description_overlay"
|
android:description="@string/demo_description_overlay"
|
||||||
android:label="@string/demo_label_ground_overlay">
|
android:label="@string/demo_label_ground_overlay">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_draw" />
|
android:value="@string/demo_type_draw"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".marker.AoiLayerActivity"
|
android:name=".marker.AoiLayerActivity"
|
||||||
android:description="@string/demo_description_aoi"
|
android:description="@string/demo_description_aoi"
|
||||||
android:label="@string/demo_label_aoi">
|
android:label="@string/demo_label_aoi">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_draw" />
|
android:value="@string/demo_type_draw"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".heatoverlay.VectorHeatMapActivity"
|
android:name=".heatoverlay.VectorHeatMapActivity"
|
||||||
android:description="@string/demo_description_vectorheatmap"
|
android:description="@string/demo_description_vectorheatmap"
|
||||||
android:label="@string/demo_label_vectorheatmap">
|
android:label="@string/demo_label_vectorheatmap">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_draw" />
|
android:value="@string/demo_type_draw"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".heatoverlay.ArcLineLayerActivity"
|
android:name=".heatoverlay.ArcLineLayerActivity"
|
||||||
android:description="@string/demo_description_arcline"
|
android:description="@string/demo_description_arcline"
|
||||||
android:label="@string/demo_label_arcline_map">
|
android:label="@string/demo_label_arcline_map">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_draw" />
|
android:value="@string/demo_type_draw"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".heatoverlay.HeatMapVectorOverlayActivity"
|
android:name=".heatoverlay.HeatMapVectorOverlayActivity"
|
||||||
android:description="@string/demo_description_3dheatmap"
|
android:description="@string/demo_description_3dheatmap"
|
||||||
android:label="@string/demo_label_3d_heat_map">
|
android:label="@string/demo_label_3d_heat_map">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_draw" />
|
android:value="@string/demo_type_draw"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".heatoverlay.AggregationOverlayActivity"
|
android:name=".heatoverlay.AggregationOverlayActivity"
|
||||||
android:description="@string/demo_description_AggregationOverlay"
|
android:description="@string/demo_description_AggregationOverlay"
|
||||||
android:label="@string/demo_label_3d_aggregationOverlay_map">
|
android:label="@string/demo_label_3d_aggregationOverlay_map">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_draw" />
|
android:value="@string/demo_type_draw"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".heatoverlay.ScatterPlotOverlayActivity"
|
android:name=".heatoverlay.ScatterPlotOverlayActivity"
|
||||||
android:description="@string/demo_description_ScatterPlotOverlay"
|
android:description="@string/demo_description_ScatterPlotOverlay"
|
||||||
android:label="@string/demo_label_3d_scatterplotoverlay_map">
|
android:label="@string/demo_label_3d_scatterplotoverlay_map">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_draw" />
|
android:value="@string/demo_type_draw"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".heatoverlay.TrailOverlayActivity"
|
android:name=".heatoverlay.TrailOverlayActivity"
|
||||||
android:description="@string/demo_description_TrailOverlay"
|
android:description="@string/demo_description_TrailOverlay"
|
||||||
android:label="@string/demo_label_3d_railoverltay_map">
|
android:label="@string/demo_label_3d_railoverltay_map">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_draw" />
|
android:value="@string/demo_type_draw"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".heatoverlay.GLModelActivity"
|
android:name=".heatoverlay.GLModelActivity"
|
||||||
android:description="@string/demo_description_glModel"
|
android:description="@string/demo_description_glModel"
|
||||||
android:label="@string/demo_label_glModel">
|
android:label="@string/demo_label_glModel">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_draw" />
|
android:value="@string/demo_type_draw"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
<!-- <activity-->
|
|
||||||
<!-- android:name=".basic.OfflineMapActivity"-->
|
|
||||||
<!-- android:description="@string/demo_description_offline_map"-->
|
|
||||||
<!-- android:label="@string/demo_label_offline_map">-->
|
|
||||||
<!-- <meta-data-->
|
|
||||||
<!-- android:name="@string/demo_type"-->
|
|
||||||
<!-- android:value="@string/demo_type_basic" />-->
|
|
||||||
<!-- </activity>-->
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".basic.RecyclerListActivity"
|
android:name=".basic.RecyclerListActivity"
|
||||||
android:description="@string/demo_description_recycler_map"
|
android:description="@string/demo_description_recycler_map"
|
||||||
android:label="@string/demo_label_recycler_map">
|
android:label="@string/demo_label_recycler_map">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_basic" />
|
android:value="@string/demo_type_basic"/>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".smooth.SmoothMoveActivity"
|
android:name=".smooth.SmoothMoveActivity"
|
||||||
android:description="@string/demo_description_smooth_move"
|
android:description="@string/demo_description_smooth_move"
|
||||||
android:label="@string/demo_label_smooth_move">
|
android:label="@string/demo_label_smooth_move">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="@string/demo_type"
|
android:name="@string/demo_type"
|
||||||
android:value="@string/demo_type_draw" />
|
android:value="@string/demo_type_draw"/>
|
||||||
</activity> <!-- 如果您key确认无误,却依然授权没有通过,请检查您的key的白名单配置 -->
|
|
||||||
|
</activity>
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="TencentMapSDK"
|
android:name="TencentMapSDK"
|
||||||
android:value="SCYBZ-EC5Y4-XMHUI-FX2PU-ZYMMS-IBB7P" />
|
android:value="SCYBZ-EC5Y4-XMHUI-FX2PU-ZYMMS-IBB7P"/>
|
||||||
|
|
||||||
|
<activity android:name="cc.winboll.studio.positions.activities.TestMapViewActivity"/>
|
||||||
|
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
||||||
|
@@ -0,0 +1,394 @@
|
|||||||
|
package cc.winboll.studio.positions;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.app.ActivityManager;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Build;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.telecom.TelecomManager;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.Menu;
|
||||||
|
import android.view.MenuItem;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.CheckBox;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
import android.widget.Toast;
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
import androidx.appcompat.widget.Toolbar;
|
||||||
|
import androidx.viewpager.widget.ViewPager;
|
||||||
|
import cc.winboll.studio.libappbase.LogUtils;
|
||||||
|
import cc.winboll.studio.libappbase.LogView;
|
||||||
|
import cc.winboll.studio.libapputils.app.IWinBollActivity;
|
||||||
|
import cc.winboll.studio.libapputils.app.WinBollActivityManager;
|
||||||
|
import cc.winboll.studio.libapputils.bean.APPInfo;
|
||||||
|
import cc.winboll.studio.libapputils.view.YesNoAlertDialog;
|
||||||
|
import cc.winboll.studio.positions.R;
|
||||||
|
import com.tencent.map.vector.demo.DemoMainActivity;
|
||||||
|
import cc.winboll.studio.positions.activities.SettingsActivity;
|
||||||
|
import cc.winboll.studio.positions.adapters.MyPagerAdapter;
|
||||||
|
import cc.winboll.studio.positions.beans.MainServiceBean;
|
||||||
|
import cc.winboll.studio.positions.services.MainService;
|
||||||
|
import com.google.android.material.tabs.TabLayout;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import com.tencent.map.vector.demo.AbsListActivity;
|
||||||
|
import com.tencent.map.vector.demo.AbsActivity;
|
||||||
|
|
||||||
|
final public class Main2Activity extends AbsActivity implements IWinBollActivity, ViewPager.OnPageChangeListener, View.OnClickListener {
|
||||||
|
|
||||||
|
public static final String TAG = "MainActivity";
|
||||||
|
|
||||||
|
public static final int REQUEST_HOME_ACTIVITY = 0;
|
||||||
|
public static final int REQUEST_ABOUT_ACTIVITY = 1;
|
||||||
|
|
||||||
|
public static final String ACTION_SOS = "cc.winboll.studio.libappbase.WinBoll.ACTION_SOS";
|
||||||
|
|
||||||
|
LogView mLogView;
|
||||||
|
Toolbar mToolbar;
|
||||||
|
CheckBox cbMainService;
|
||||||
|
MainServiceBean mMainServiceBean;
|
||||||
|
ViewPager viewPager;
|
||||||
|
private List<View> views; //用来存放放进ViewPager里面的布局
|
||||||
|
//实例化存储imageView(导航原点)的集合
|
||||||
|
ImageView[] imageViews;
|
||||||
|
//MyPagerAdapter adapter;//适配器
|
||||||
|
MyPagerAdapter pagerAdapter;
|
||||||
|
LinearLayout linearLayout;//下标所在在LinearLayout布局里
|
||||||
|
int currentPoint = 0;//当前被选中中页面的下标
|
||||||
|
|
||||||
|
private static final int DIALER_REQUEST_CODE = 1;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AppCompatActivity getActivity() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public APPInfo getAppInfo() {
|
||||||
|
// String szBranchName = "contacts";
|
||||||
|
//
|
||||||
|
// APPInfo appInfo = AboutActivityFactory.buildDefaultAPPInfo();
|
||||||
|
// appInfo.setAppName("Contacts");
|
||||||
|
// appInfo.setAppIcon(cc.winboll.studio.libapputils.R.drawable.ic_winboll);
|
||||||
|
// appInfo.setAppDescription("Contacts Description");
|
||||||
|
// appInfo.setAppGitName("APP");
|
||||||
|
// appInfo.setAppGitOwner("Studio");
|
||||||
|
// appInfo.setAppGitAPPBranch(szBranchName);
|
||||||
|
// appInfo.setAppGitAPPSubProjectFolder(szBranchName);
|
||||||
|
// appInfo.setAppHomePage("https://www.winboll.cc/studio/details.php?app=Contacts");
|
||||||
|
// appInfo.setAppAPKName("Contacts");
|
||||||
|
// appInfo.setAppAPKFolderName("Contacts");
|
||||||
|
// return appInfo;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
// 接收并处理 Intent 数据,函数 Intent 处理接收就直接返回
|
||||||
|
//if (prosessIntents(getIntent())) return;
|
||||||
|
// 以下正常创建主窗口
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_main);
|
||||||
|
|
||||||
|
// 初始化工具栏
|
||||||
|
mToolbar = findViewById(R.id.activitymainToolbar1);
|
||||||
|
setSupportActionBar(mToolbar);
|
||||||
|
if (isEnableDisplayHomeAsUp()) {
|
||||||
|
// 显示后退按钮
|
||||||
|
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||||
|
}
|
||||||
|
getSupportActionBar().setSubtitle(getTag());
|
||||||
|
|
||||||
|
initData();
|
||||||
|
initView();
|
||||||
|
//initPoint();//调用初始化导航原点的方法
|
||||||
|
viewPager.addOnPageChangeListener(this);//滑动事件
|
||||||
|
|
||||||
|
ViewPager viewPager = findViewById(R.id.activitymainViewPager1);
|
||||||
|
MyPagerAdapter pagerAdapter = new MyPagerAdapter(getSupportFragmentManager());
|
||||||
|
viewPager.setAdapter(pagerAdapter);
|
||||||
|
TabLayout tabLayout = findViewById(R.id.activitymainTabLayout1);
|
||||||
|
tabLayout.setupWithViewPager(viewPager);
|
||||||
|
|
||||||
|
// mMainServiceBean = MainServiceBean.loadBean(this, MainServiceBean.class);
|
||||||
|
// if (mMainServiceBean == null) {
|
||||||
|
// mMainServiceBean = new MainServiceBean();
|
||||||
|
// }
|
||||||
|
// cbMainService = findViewById(R.id.activitymainCheckBox1);
|
||||||
|
// cbMainService.setChecked(mMainServiceBean.isEnable());
|
||||||
|
// cbMainService.setOnClickListener(new View.OnClickListener(){
|
||||||
|
// @Override
|
||||||
|
// public void onClick(View view) {
|
||||||
|
// if (cbMainService.isChecked()) {
|
||||||
|
// MainService.startMainService(MainActivity.this);
|
||||||
|
// } else {
|
||||||
|
// MainService.stopMainService(MainActivity.this);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
MainService.startMainService(Main2Activity.this);
|
||||||
|
}
|
||||||
|
|
||||||
|
//初始化view,即显示的图片
|
||||||
|
void initView() {
|
||||||
|
viewPager = findViewById(R.id.activitymainViewPager1);
|
||||||
|
pagerAdapter = new MyPagerAdapter(getSupportFragmentManager());
|
||||||
|
viewPager.setAdapter(pagerAdapter);
|
||||||
|
//adapter = new MyPagerAdapter(views);
|
||||||
|
//viewPager = findViewById(R.id.activitymainViewPager1);
|
||||||
|
//viewPager.setAdapter(adapter);
|
||||||
|
//linearLayout = findViewById(R.id.activitymainLinearLayout1);
|
||||||
|
//initPoint();//初始化页面下方的点
|
||||||
|
viewPager.setOnPageChangeListener(this);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//初始化所要显示的布局
|
||||||
|
void initData() {
|
||||||
|
ViewPager viewPager = findViewById(R.id.activitymainViewPager1);
|
||||||
|
LayoutInflater inflater = LayoutInflater.from(getActivity());
|
||||||
|
View view1 = inflater.inflate(R.layout.fragment_gms, viewPager, false);
|
||||||
|
View view2 = inflater.inflate(R.layout.fragment_contacts, viewPager, false);
|
||||||
|
View view3 = inflater.inflate(R.layout.fragment_log, viewPager, false);
|
||||||
|
|
||||||
|
views = new ArrayList<>();
|
||||||
|
views.add(view1);
|
||||||
|
views.add(view2);
|
||||||
|
views.add(view3);
|
||||||
|
}
|
||||||
|
|
||||||
|
// void initPoint() {
|
||||||
|
// imageViews = new ImageView[5];//实例化5个图片
|
||||||
|
// for (int i = 0; i < linearLayout.getChildCount(); i++) {
|
||||||
|
// imageViews[i] = (ImageView) linearLayout.getChildAt(i);
|
||||||
|
// imageViews[i].setImageResource(R.drawable.ic_launcher);
|
||||||
|
// imageViews[i].setOnClickListener(this);//点击导航点,即可跳转
|
||||||
|
// imageViews[i].setTag(i);//重复利用实例化的对象
|
||||||
|
// }
|
||||||
|
// currentPoint = 0;//默认第一个坐标
|
||||||
|
// imageViews[currentPoint].setImageResource(R.drawable.ic_launcher);
|
||||||
|
// }
|
||||||
|
|
||||||
|
//OnPageChangeListener接口要实现的三个方法
|
||||||
|
/* onPageScrollStateChanged(int state)
|
||||||
|
此方法是在状态改变的时候调用,其中state这个参数有三种状态:
|
||||||
|
SCROLL_STATE_DRAGGING(1)表示用户手指“按在屏幕上并且开始拖动”的状态
|
||||||
|
(手指按下但是还没有拖动的时候还不是这个状态,只有按下并且手指开始拖动后log才打出。)
|
||||||
|
SCROLL_STATE_IDLE(0)滑动动画做完的状态。
|
||||||
|
SCROLL_STATE_SETTLING(2)在“手指离开屏幕”的状态。*/
|
||||||
|
@Override
|
||||||
|
public void onPageScrollStateChanged(int state) {
|
||||||
|
|
||||||
|
}
|
||||||
|
/* onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
|
||||||
|
当页面在滑动的时候会调用此方法,在滑动被停止之前,此方法回一直得到调用。其中三个参数的含义分别为:
|
||||||
|
|
||||||
|
position :当前页面,即你点击滑动的页面(从A滑B,则是A页面的position。
|
||||||
|
positionOffset:当前页面偏移的百分比
|
||||||
|
positionOffsetPixels:当前页面偏移的像素位置*/
|
||||||
|
@Override
|
||||||
|
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
||||||
|
|
||||||
|
}
|
||||||
|
/* onPageSelected(int position)
|
||||||
|
此方法是页面滑动完后得到调用,position是你当前选中的页面的Position(位置编号)
|
||||||
|
(从A滑动到B,就是B的position)*/
|
||||||
|
public void onPageSelected(int position) {
|
||||||
|
|
||||||
|
// ImageView preView = imageViews[currentPoint];
|
||||||
|
// preView.setImageResource(R.drawable.ic_launcher);
|
||||||
|
// ImageView currView = imageViews[position];
|
||||||
|
// currView.setImageResource(R.drawable.ic_launcher);
|
||||||
|
// currentPoint = position;
|
||||||
|
}
|
||||||
|
|
||||||
|
//小圆点点击事件
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
//通过getTag(),可以判断是哪个控件
|
||||||
|
// int i = (Integer) v.getTag();
|
||||||
|
// viewPager.setCurrentItem(i);//直接跳转到某一个页面的情况
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPostCreate(Bundle savedInstanceState) {
|
||||||
|
super.onPostCreate(savedInstanceState);
|
||||||
|
//setSubTitle("");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onDestroy() {
|
||||||
|
super.onDestroy();
|
||||||
|
LogUtils.d(TAG, "onDestroy() SOS");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// 处理传入的 Intent 数据
|
||||||
|
//
|
||||||
|
// boolean prosessIntents(Intent intent) {
|
||||||
|
// if (intent == null
|
||||||
|
// || intent.getAction() == null
|
||||||
|
// || intent.getAction().equals(""))
|
||||||
|
// return false;
|
||||||
|
//
|
||||||
|
// if (intent.getAction().equals(StringToQrCodeView.ACTION_UNITTEST_QRCODE)) {
|
||||||
|
// try {
|
||||||
|
// WinBollActivity clazzActivity = UnitTestActivity.class.newInstance();
|
||||||
|
// String tag = clazzActivity.getTag();
|
||||||
|
// LogUtils.d(TAG, "String tag = clazzActivity.getTag(); tag " + tag);
|
||||||
|
// Intent subIntent = new Intent(this, UnitTestActivity.class);
|
||||||
|
// subIntent.setAction(intent.getAction());
|
||||||
|
// File file = new File(getCacheDir(), UUID.randomUUID().toString());
|
||||||
|
// //取出文件uri
|
||||||
|
// Uri uri = intent.getData();
|
||||||
|
// if (uri == null) {
|
||||||
|
// uri = intent.getParcelableExtra(Intent.EXTRA_STREAM);
|
||||||
|
// }
|
||||||
|
// //获取文件真实地址
|
||||||
|
// String szSrcPath = UriUtils.getFileFromUri(getApplication(), uri);
|
||||||
|
// if (TextUtils.isEmpty(szSrcPath)) {
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// Files.copy(Paths.get(szSrcPath), Paths.get(file.getPath()));
|
||||||
|
// //startWinBollActivity(subIntent, tag);
|
||||||
|
// WinBollActivityManager.getInstance(this).startWinBollActivity(this, subIntent, UnitTestActivity.class);
|
||||||
|
// } catch (IllegalAccessException | InstantiationException | IOException e) {
|
||||||
|
// LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
|
||||||
|
// // 函数处理异常返回失败
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
// LogUtils.d(TAG, "prosessIntents|" + intent.getAction() + "|yet");
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
// return true;
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTag() {
|
||||||
|
return TAG;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Toolbar initToolBar() {
|
||||||
|
return findViewById(R.id.activitymainToolbar1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isAddWinBollToolBar() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isEnableDisplayHomeAsUp() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBackPressed() {
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
void exit() {
|
||||||
|
YesNoAlertDialog.OnDialogResultListener listener = new YesNoAlertDialog.OnDialogResultListener(){
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onYes() {
|
||||||
|
WinBollActivityManager.getInstance(getApplicationContext()).finishAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNo() {
|
||||||
|
}
|
||||||
|
};
|
||||||
|
YesNoAlertDialog.show(this, "[ " + getString(R.string.app_name) + " ]", "Exit(Yes/No).\nIs close all activity?", listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
|
getMenuInflater().inflate(R.menu.toolbar_main, menu);
|
||||||
|
return super.onCreateOptionsMenu(menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onOptionsItemSelected(MenuItem item) {
|
||||||
|
if (item.getItemId() == R.id.item_settings) {
|
||||||
|
Intent intent = new Intent(this, SettingsActivity.class);
|
||||||
|
startActivity(intent);
|
||||||
|
//WinBollActivityManager.getInstance(this).startWinBollActivity(this, CallActivity.class);
|
||||||
|
} else if (item.getItemId() == R.id.item_demomain) {
|
||||||
|
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_exit) {
|
||||||
|
// exit();
|
||||||
|
// return true;
|
||||||
|
// }
|
||||||
|
return super.onOptionsItemSelected(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Android M 及以上检查是否是系统默认电话应用
|
||||||
|
*/
|
||||||
|
public boolean isDefaultPhoneCallApp() {
|
||||||
|
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
|
TelecomManager manger = (TelecomManager) getSystemService(TELECOM_SERVICE);
|
||||||
|
if (manger != null && manger.getDefaultDialerPackage() != null) {
|
||||||
|
return manger.getDefaultDialerPackage().equals(getPackageName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isServiceRunning(Class<?> serviceClass) {
|
||||||
|
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
|
||||||
|
if (manager == null) return false;
|
||||||
|
|
||||||
|
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(
|
||||||
|
Integer.MAX_VALUE)) {
|
||||||
|
if (serviceClass.getName().equals(service.service.getClassName())) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||||
|
// switch (resultCode) {
|
||||||
|
// case REQUEST_HOME_ACTIVITY : {
|
||||||
|
// LogUtils.d(TAG, "REQUEST_HOME_ACTIVITY");
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// case REQUEST_ABOUT_ACTIVITY : {
|
||||||
|
// LogUtils.d(TAG, "REQUEST_ABOUT_ACTIVITY");
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// default : {
|
||||||
|
// super.onActivityResult(requestCode, resultCode, data);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
if (requestCode == DIALER_REQUEST_CODE) {
|
||||||
|
if (resultCode == Activity.RESULT_OK) {
|
||||||
|
Toast.makeText(Main2Activity.this, getString(R.string.app_name) + " 已成为默认电话应用",
|
||||||
|
Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -1,311 +1,131 @@
|
|||||||
package cc.winboll.studio.positions;
|
package cc.winboll.studio.positions;
|
||||||
|
|
||||||
import android.app.Activity;
|
/**
|
||||||
import android.app.ActivityManager;
|
* @Author ZhanGSKen@AliYun.Com
|
||||||
import android.content.Context;
|
* @Date 2025/02/24 11:05:49
|
||||||
|
*/
|
||||||
|
import cc.winboll.studio.positions.R;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Build;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.telecom.TelecomManager;
|
|
||||||
import android.view.LayoutInflater;
|
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
|
||||||
import android.widget.CheckBox;
|
|
||||||
import android.widget.ImageView;
|
|
||||||
import android.widget.LinearLayout;
|
|
||||||
import android.widget.Toast;
|
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
|
||||||
import androidx.appcompat.widget.Toolbar;
|
import androidx.appcompat.widget.Toolbar;
|
||||||
import androidx.viewpager.widget.ViewPager;
|
|
||||||
import cc.winboll.studio.libappbase.LogUtils;
|
|
||||||
import cc.winboll.studio.libappbase.LogView;
|
|
||||||
import cc.winboll.studio.libapputils.app.IWinBollActivity;
|
|
||||||
import cc.winboll.studio.libapputils.app.WinBollActivityManager;
|
|
||||||
import cc.winboll.studio.libapputils.bean.APPInfo;
|
|
||||||
import cc.winboll.studio.libapputils.view.YesNoAlertDialog;
|
|
||||||
import cc.winboll.studio.positions.R;
|
|
||||||
import com.tencent.map.vector.demo.DemoMainActivity;
|
|
||||||
import cc.winboll.studio.positions.activities.SettingsActivity;
|
import cc.winboll.studio.positions.activities.SettingsActivity;
|
||||||
import cc.winboll.studio.positions.adapters.MyPagerAdapter;
|
import cc.winboll.studio.positions.activities.TestMapViewActivity;
|
||||||
import cc.winboll.studio.positions.beans.MainServiceBean;
|
import com.tencent.map.geolocation.TencentLocationManager;
|
||||||
import cc.winboll.studio.positions.services.MainService;
|
import com.tencent.map.vector.demo.AbsActivity;
|
||||||
import com.google.android.material.tabs.TabLayout;
|
import com.tencent.tencentmap.mapsdk.maps.TencentMap;
|
||||||
import java.util.ArrayList;
|
import com.tencent.tencentmap.mapsdk.maps.TencentMapInitializer;
|
||||||
|
import com.tencent.tencentmap.mapsdk.maps.TextureMapView;
|
||||||
|
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||||
|
import android.view.View;
|
||||||
|
import com.google.android.material.snackbar.Snackbar;
|
||||||
|
import com.google.android.gms.location.LocationCallback;
|
||||||
|
import com.google.android.gms.location.LocationRequest;
|
||||||
|
import com.google.android.gms.location.LocationResult;
|
||||||
|
import com.google.android.gms.location.FusedLocationProviderClient;
|
||||||
|
import com.google.android.gms.location.LocationServices;
|
||||||
|
import com.google.android.gms.tasks.OnSuccessListener;
|
||||||
|
import cc.winboll.studio.libappbase.LogUtils;
|
||||||
|
import androidx.core.content.ContextCompat;
|
||||||
|
import android.Manifest;
|
||||||
|
import androidx.core.app.ActivityCompat;
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
import android.widget.Toast;
|
||||||
|
import android.location.Location;
|
||||||
|
import android.os.Looper;
|
||||||
|
import com.hjq.toast.ToastUtils;
|
||||||
|
import android.widget.TextView;
|
||||||
|
import com.tencent.map.vector.demo.basic.SupportMapFragmentActivity;
|
||||||
|
import android.Manifest;
|
||||||
|
import android.graphics.Bitmap;
|
||||||
|
import android.graphics.BitmapFactory;
|
||||||
|
import android.graphics.Matrix;
|
||||||
|
import android.location.Location;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.os.Looper;
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import cc.winboll.studio.positions.R;
|
||||||
|
import com.tencent.map.vector.demo.basic.SupportMapFragmentActivity;
|
||||||
|
import com.tencent.map.geolocation.TencentLocation;
|
||||||
|
import com.tencent.map.geolocation.TencentLocationListener;
|
||||||
|
import com.tencent.map.geolocation.TencentLocationManager;
|
||||||
|
import com.tencent.map.geolocation.TencentLocationRequest;
|
||||||
|
import com.tencent.tencentmap.mapsdk.maps.LocationSource;
|
||||||
|
import com.tencent.tencentmap.mapsdk.maps.model.BitmapDescriptor;
|
||||||
|
import com.tencent.tencentmap.mapsdk.maps.model.BitmapDescriptorFactory;
|
||||||
|
import com.tencent.tencentmap.mapsdk.maps.model.MyLocationStyle;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
final public class MainActivity extends AppCompatActivity implements IWinBollActivity, ViewPager.OnPageChangeListener, View.OnClickListener {
|
import pub.devrel.easypermissions.EasyPermissions;
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
public static final String TAG = "MainActivity";
|
public class MainActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks,LocationSource, TencentLocationListener {
|
||||||
|
|
||||||
public static final int REQUEST_HOME_ACTIVITY = 0;
|
public static final String TAG ="MainActivity";
|
||||||
public static final int REQUEST_ABOUT_ACTIVITY = 1;
|
|
||||||
|
private static final int PERMISSION_REQUEST_CODE = 1;
|
||||||
public static final String ACTION_SOS = "cc.winboll.studio.libappbase.WinBoll.ACTION_SOS";
|
|
||||||
|
|
||||||
LogView mLogView;
|
|
||||||
Toolbar mToolbar;
|
Toolbar mToolbar;
|
||||||
CheckBox cbMainService;
|
private TextureMapView mapView;
|
||||||
MainServiceBean mMainServiceBean;
|
protected TencentMap tencentMap;
|
||||||
ViewPager viewPager;
|
TextView mtvInfo;
|
||||||
private List<View> views; //用来存放放进ViewPager里面的布局
|
private LocationSource.OnLocationChangedListener locationChangedListener;
|
||||||
//实例化存储imageView(导航原点)的集合
|
|
||||||
ImageView[] imageViews;
|
|
||||||
//MyPagerAdapter adapter;//适配器
|
|
||||||
MyPagerAdapter pagerAdapter;
|
|
||||||
LinearLayout linearLayout;//下标所在在LinearLayout布局里
|
|
||||||
int currentPoint = 0;//当前被选中中页面的下标
|
|
||||||
|
|
||||||
private static final int DIALER_REQUEST_CODE = 1;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public AppCompatActivity getActivity() {
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public APPInfo getAppInfo() {
|
|
||||||
// String szBranchName = "contacts";
|
|
||||||
//
|
|
||||||
// APPInfo appInfo = AboutActivityFactory.buildDefaultAPPInfo();
|
|
||||||
// appInfo.setAppName("Contacts");
|
|
||||||
// appInfo.setAppIcon(cc.winboll.studio.libapputils.R.drawable.ic_winboll);
|
|
||||||
// appInfo.setAppDescription("Contacts Description");
|
|
||||||
// appInfo.setAppGitName("APP");
|
|
||||||
// appInfo.setAppGitOwner("Studio");
|
|
||||||
// appInfo.setAppGitAPPBranch(szBranchName);
|
|
||||||
// appInfo.setAppGitAPPSubProjectFolder(szBranchName);
|
|
||||||
// appInfo.setAppHomePage("https://www.winboll.cc/studio/details.php?app=Contacts");
|
|
||||||
// appInfo.setAppAPKName("Contacts");
|
|
||||||
// appInfo.setAppAPKFolderName("Contacts");
|
|
||||||
// return appInfo;
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
private TencentLocationManager locationManager;
|
||||||
|
private TencentLocationRequest locationRequest;
|
||||||
|
private MyLocationStyle locationStyle;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
// 接收并处理 Intent 数据,函数 Intent 处理接收就直接返回
|
|
||||||
//if (prosessIntents(getIntent())) return;
|
|
||||||
// 以下正常创建主窗口
|
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(R.layout.activity_main);
|
setContentView(R.layout.activity_main);
|
||||||
|
|
||||||
// 初始化工具栏
|
// 初始化工具栏
|
||||||
mToolbar = findViewById(R.id.activitymainToolbar1);
|
mToolbar = findViewById(R.id.activitymainToolbar1);
|
||||||
setSupportActionBar(mToolbar);
|
setSupportActionBar(mToolbar);
|
||||||
if (isEnableDisplayHomeAsUp()) {
|
getSupportActionBar().setSubtitle(TAG);
|
||||||
// 显示后退按钮
|
|
||||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
|
||||||
}
|
|
||||||
getSupportActionBar().setSubtitle(getTag());
|
|
||||||
|
|
||||||
initData();
|
TencentMapInitializer.setAgreePrivacy(this, true);
|
||||||
initView();
|
TencentMapInitializer.start(this);
|
||||||
//initPoint();//调用初始化导航原点的方法
|
TencentLocationManager.setUserAgreePrivacy(true);
|
||||||
viewPager.addOnPageChangeListener(this);//滑动事件
|
|
||||||
|
|
||||||
ViewPager viewPager = findViewById(R.id.activitymainViewPager1);
|
|
||||||
MyPagerAdapter pagerAdapter = new MyPagerAdapter(getSupportFragmentManager());
|
|
||||||
viewPager.setAdapter(pagerAdapter);
|
|
||||||
TabLayout tabLayout = findViewById(R.id.activitymainTabLayout1);
|
|
||||||
tabLayout.setupWithViewPager(viewPager);
|
|
||||||
|
|
||||||
// mMainServiceBean = MainServiceBean.loadBean(this, MainServiceBean.class);
|
mapView = findViewById(R.id.mapview);
|
||||||
// if (mMainServiceBean == null) {
|
mapView.setOpaque(false);
|
||||||
// mMainServiceBean = new MainServiceBean();
|
//创建tencentMap地图对象,可以完成对地图的几乎所有操作
|
||||||
// }
|
tencentMap = mapView.getMap();
|
||||||
// cbMainService = findViewById(R.id.activitymainCheckBox1);
|
|
||||||
// cbMainService.setChecked(mMainServiceBean.isEnable());
|
|
||||||
// cbMainService.setOnClickListener(new View.OnClickListener(){
|
|
||||||
// @Override
|
|
||||||
// public void onClick(View view) {
|
|
||||||
// if (cbMainService.isChecked()) {
|
|
||||||
// MainService.startMainService(MainActivity.this);
|
|
||||||
// } else {
|
|
||||||
// MainService.stopMainService(MainActivity.this);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
MainService.startMainService(MainActivity.this);
|
|
||||||
}
|
|
||||||
|
|
||||||
//初始化view,即显示的图片
|
FloatingActionButton fab = findViewById(R.id.fab);
|
||||||
void initView() {
|
fab.setOnClickListener(new View.OnClickListener() {
|
||||||
viewPager = findViewById(R.id.activitymainViewPager1);
|
@Override
|
||||||
pagerAdapter = new MyPagerAdapter(getSupportFragmentManager());
|
public void onClick(View view) {
|
||||||
viewPager.setAdapter(pagerAdapter);
|
Snackbar.make(view, "点击了悬浮按钮", Snackbar.LENGTH_LONG).show();
|
||||||
//adapter = new MyPagerAdapter(views);
|
}
|
||||||
//viewPager = findViewById(R.id.activitymainViewPager1);
|
});
|
||||||
//viewPager.setAdapter(adapter);
|
|
||||||
//linearLayout = findViewById(R.id.activitymainLinearLayout1);
|
mtvInfo = findViewById(R.id.tv_info);
|
||||||
//initPoint();//初始化页面下方的点
|
|
||||||
viewPager.setOnPageChangeListener(this);
|
|
||||||
|
|
||||||
}
|
checkLocationPermission();
|
||||||
|
|
||||||
//初始化所要显示的布局
|
//设置显示定位的图标
|
||||||
void initData() {
|
TencentLocationManager.setUserAgreePrivacy(true);
|
||||||
ViewPager viewPager = findViewById(R.id.activitymainViewPager1);
|
//建立定位
|
||||||
LayoutInflater inflater = LayoutInflater.from(getActivity());
|
initLocation();
|
||||||
View view1 = inflater.inflate(R.layout.fragment_gms, viewPager, false);
|
|
||||||
View view2 = inflater.inflate(R.layout.fragment_contacts, viewPager, false);
|
|
||||||
View view3 = inflater.inflate(R.layout.fragment_log, viewPager, false);
|
|
||||||
|
|
||||||
views = new ArrayList<>();
|
|
||||||
views.add(view1);
|
|
||||||
views.add(view2);
|
|
||||||
views.add(view3);
|
|
||||||
}
|
|
||||||
|
|
||||||
// void initPoint() {
|
|
||||||
// imageViews = new ImageView[5];//实例化5个图片
|
|
||||||
// for (int i = 0; i < linearLayout.getChildCount(); i++) {
|
|
||||||
// imageViews[i] = (ImageView) linearLayout.getChildAt(i);
|
|
||||||
// imageViews[i].setImageResource(R.drawable.ic_launcher);
|
|
||||||
// imageViews[i].setOnClickListener(this);//点击导航点,即可跳转
|
|
||||||
// imageViews[i].setTag(i);//重复利用实例化的对象
|
|
||||||
// }
|
|
||||||
// currentPoint = 0;//默认第一个坐标
|
|
||||||
// imageViews[currentPoint].setImageResource(R.drawable.ic_launcher);
|
|
||||||
// }
|
|
||||||
|
|
||||||
//OnPageChangeListener接口要实现的三个方法
|
|
||||||
/* onPageScrollStateChanged(int state)
|
|
||||||
此方法是在状态改变的时候调用,其中state这个参数有三种状态:
|
|
||||||
SCROLL_STATE_DRAGGING(1)表示用户手指“按在屏幕上并且开始拖动”的状态
|
|
||||||
(手指按下但是还没有拖动的时候还不是这个状态,只有按下并且手指开始拖动后log才打出。)
|
|
||||||
SCROLL_STATE_IDLE(0)滑动动画做完的状态。
|
|
||||||
SCROLL_STATE_SETTLING(2)在“手指离开屏幕”的状态。*/
|
|
||||||
@Override
|
|
||||||
public void onPageScrollStateChanged(int state) {
|
|
||||||
|
|
||||||
}
|
|
||||||
/* onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
|
|
||||||
当页面在滑动的时候会调用此方法,在滑动被停止之前,此方法回一直得到调用。其中三个参数的含义分别为:
|
|
||||||
|
|
||||||
position :当前页面,即你点击滑动的页面(从A滑B,则是A页面的position。
|
|
||||||
positionOffset:当前页面偏移的百分比
|
|
||||||
positionOffsetPixels:当前页面偏移的像素位置*/
|
|
||||||
@Override
|
|
||||||
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
|
||||||
|
|
||||||
}
|
|
||||||
/* onPageSelected(int position)
|
|
||||||
此方法是页面滑动完后得到调用,position是你当前选中的页面的Position(位置编号)
|
|
||||||
(从A滑动到B,就是B的position)*/
|
|
||||||
public void onPageSelected(int position) {
|
|
||||||
|
|
||||||
// ImageView preView = imageViews[currentPoint];
|
|
||||||
// preView.setImageResource(R.drawable.ic_launcher);
|
|
||||||
// ImageView currView = imageViews[position];
|
|
||||||
// currView.setImageResource(R.drawable.ic_launcher);
|
|
||||||
// currentPoint = position;
|
|
||||||
}
|
|
||||||
|
|
||||||
//小圆点点击事件
|
|
||||||
@Override
|
|
||||||
public void onClick(View v) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
//通过getTag(),可以判断是哪个控件
|
|
||||||
// int i = (Integer) v.getTag();
|
|
||||||
// viewPager.setCurrentItem(i);//直接跳转到某一个页面的情况
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostCreate(Bundle savedInstanceState) {
|
protected void onPostCreate(Bundle savedInstanceState) {
|
||||||
super.onPostCreate(savedInstanceState);
|
super.onPostCreate(savedInstanceState);
|
||||||
//setSubTitle("");
|
// LatLng center = new LatLng(39.904556, 116.427242);
|
||||||
}
|
// tencentMap.moveCamera(
|
||||||
|
// CameraUpdateFactory.newLatLngZoom(center, 13f) // 注意 13 → 13f
|
||||||
@Override
|
// );
|
||||||
protected void onDestroy() {
|
|
||||||
super.onDestroy();
|
|
||||||
LogUtils.d(TAG, "onDestroy() SOS");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// 处理传入的 Intent 数据
|
|
||||||
//
|
|
||||||
// boolean prosessIntents(Intent intent) {
|
|
||||||
// if (intent == null
|
|
||||||
// || intent.getAction() == null
|
|
||||||
// || intent.getAction().equals(""))
|
|
||||||
// return false;
|
|
||||||
//
|
|
||||||
// if (intent.getAction().equals(StringToQrCodeView.ACTION_UNITTEST_QRCODE)) {
|
|
||||||
// try {
|
|
||||||
// WinBollActivity clazzActivity = UnitTestActivity.class.newInstance();
|
|
||||||
// String tag = clazzActivity.getTag();
|
|
||||||
// LogUtils.d(TAG, "String tag = clazzActivity.getTag(); tag " + tag);
|
|
||||||
// Intent subIntent = new Intent(this, UnitTestActivity.class);
|
|
||||||
// subIntent.setAction(intent.getAction());
|
|
||||||
// File file = new File(getCacheDir(), UUID.randomUUID().toString());
|
|
||||||
// //取出文件uri
|
|
||||||
// Uri uri = intent.getData();
|
|
||||||
// if (uri == null) {
|
|
||||||
// uri = intent.getParcelableExtra(Intent.EXTRA_STREAM);
|
|
||||||
// }
|
|
||||||
// //获取文件真实地址
|
|
||||||
// String szSrcPath = UriUtils.getFileFromUri(getApplication(), uri);
|
|
||||||
// if (TextUtils.isEmpty(szSrcPath)) {
|
|
||||||
// return false;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// Files.copy(Paths.get(szSrcPath), Paths.get(file.getPath()));
|
|
||||||
// //startWinBollActivity(subIntent, tag);
|
|
||||||
// WinBollActivityManager.getInstance(this).startWinBollActivity(this, subIntent, UnitTestActivity.class);
|
|
||||||
// } catch (IllegalAccessException | InstantiationException | IOException e) {
|
|
||||||
// LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
|
|
||||||
// // 函数处理异常返回失败
|
|
||||||
// return false;
|
|
||||||
// }
|
|
||||||
// } else {
|
|
||||||
// LogUtils.d(TAG, "prosessIntents|" + intent.getAction() + "|yet");
|
|
||||||
// return false;
|
|
||||||
// }
|
|
||||||
// return true;
|
|
||||||
// }
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getTag() {
|
|
||||||
return TAG;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Toolbar initToolBar() {
|
|
||||||
return findViewById(R.id.activitymainToolbar1);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isAddWinBollToolBar() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isEnableDisplayHomeAsUp() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onBackPressed() {
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
|
|
||||||
void exit() {
|
|
||||||
YesNoAlertDialog.OnDialogResultListener listener = new YesNoAlertDialog.OnDialogResultListener(){
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onYes() {
|
|
||||||
WinBollActivityManager.getInstance(getApplicationContext()).finishAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onNo() {
|
|
||||||
}
|
|
||||||
};
|
|
||||||
YesNoAlertDialog.show(this, "[ " + getString(R.string.app_name) + " ]", "Exit(Yes/No).\nIs close all activity?", listener);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -314,7 +134,6 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct
|
|||||||
return super.onCreateOptionsMenu(menu);
|
return super.onCreateOptionsMenu(menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onOptionsItemSelected(MenuItem item) {
|
public boolean onOptionsItemSelected(MenuItem item) {
|
||||||
if (item.getItemId() == R.id.item_settings) {
|
if (item.getItemId() == R.id.item_settings) {
|
||||||
@@ -325,6 +144,10 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct
|
|||||||
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_testmapview) {
|
||||||
|
Intent intent = new Intent(this, TestMapViewActivity.class);
|
||||||
|
startActivity(intent);
|
||||||
|
//WinBollActivityManager.getInstance(this).startWinBollActivity(this, CallActivity.class);
|
||||||
}
|
}
|
||||||
// } else
|
// } else
|
||||||
// if (item.getItemId() == R.id.item_exit) {
|
// if (item.getItemId() == R.id.item_exit) {
|
||||||
@@ -334,59 +157,201 @@ final public class MainActivity extends AppCompatActivity implements IWinBollAct
|
|||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mapview的生命周期管理
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected void onStart() {
|
||||||
|
super.onStart();
|
||||||
|
mapView.onStart();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onResume() {
|
protected void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
}
|
mapView.onResume();
|
||||||
|
|
||||||
/**
|
|
||||||
* Android M 及以上检查是否是系统默认电话应用
|
|
||||||
*/
|
|
||||||
public boolean isDefaultPhoneCallApp() {
|
|
||||||
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
|
||||||
TelecomManager manger = (TelecomManager) getSystemService(TELECOM_SERVICE);
|
|
||||||
if (manger != null && manger.getDefaultDialerPackage() != null) {
|
|
||||||
return manger.getDefaultDialerPackage().equals(getPackageName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isServiceRunning(Class<?> serviceClass) {
|
|
||||||
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
|
|
||||||
if (manager == null) return false;
|
|
||||||
|
|
||||||
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(
|
|
||||||
Integer.MAX_VALUE)) {
|
|
||||||
if (serviceClass.getName().equals(service.service.getClassName())) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
protected void onPause() {
|
||||||
// switch (resultCode) {
|
super.onPause();
|
||||||
// case REQUEST_HOME_ACTIVITY : {
|
mapView.onPause();
|
||||||
// LogUtils.d(TAG, "REQUEST_HOME_ACTIVITY");
|
}
|
||||||
// break;
|
|
||||||
// }
|
@Override
|
||||||
// case REQUEST_ABOUT_ACTIVITY : {
|
protected void onStop() {
|
||||||
// LogUtils.d(TAG, "REQUEST_ABOUT_ACTIVITY");
|
super.onStop();
|
||||||
// break;
|
mapView.onStop();
|
||||||
// }
|
}
|
||||||
// default : {
|
|
||||||
// super.onActivityResult(requestCode, resultCode, data);
|
@Override
|
||||||
// }
|
protected void onDestroy() {
|
||||||
// }
|
super.onDestroy();
|
||||||
if (requestCode == DIALER_REQUEST_CODE) {
|
mapView.onDestroy();
|
||||||
if (resultCode == Activity.RESULT_OK) {
|
}
|
||||||
Toast.makeText(MainActivity.this, getString(R.string.app_name) + " 已成为默认电话应用",
|
|
||||||
Toast.LENGTH_SHORT).show();
|
@Override
|
||||||
|
protected void onRestart() {
|
||||||
|
super.onRestart();
|
||||||
|
mapView.onRestart();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置定位图标样式
|
||||||
|
*/
|
||||||
|
private void setLocMarkerStyle(){
|
||||||
|
locationStyle = new MyLocationStyle();
|
||||||
|
//创建图标
|
||||||
|
BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromBitmap(getBitMap(R.drawable.marker));
|
||||||
|
locationStyle.icon(bitmapDescriptor);
|
||||||
|
//设置定位圆形区域的边框宽度
|
||||||
|
locationStyle.strokeWidth(3);
|
||||||
|
//设置圆区域的颜色
|
||||||
|
locationStyle.fillColor(R.color.style);
|
||||||
|
|
||||||
|
tencentMap.setMyLocationStyle(locationStyle);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private Bitmap getBitMap(int resourceId){
|
||||||
|
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), resourceId);
|
||||||
|
int width = bitmap.getWidth();
|
||||||
|
int height = bitmap.getHeight();
|
||||||
|
int newWidth = 55;
|
||||||
|
int newHeight = 55;
|
||||||
|
float widthScale = ((float)newWidth)/width;
|
||||||
|
float heightScale = ((float)newHeight)/height;
|
||||||
|
Matrix matrix = new Matrix();
|
||||||
|
matrix.postScale(widthScale, heightScale);
|
||||||
|
bitmap = Bitmap.createBitmap(bitmap,0,0,width,height,matrix,true);
|
||||||
|
return bitmap;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 定位的一些初始化设置
|
||||||
|
*/
|
||||||
|
private void initLocation(){
|
||||||
|
//用于访问腾讯定位服务的类, 周期性向客户端提供位置更新
|
||||||
|
locationManager = TencentLocationManager.getInstance(this);
|
||||||
|
//设置坐标系
|
||||||
|
locationManager.setCoordinateType(TencentLocationManager.COORDINATE_TYPE_GCJ02);
|
||||||
|
//创建定位请求
|
||||||
|
locationRequest = TencentLocationRequest.create();
|
||||||
|
//设置定位周期(位置监听器回调周期)为3s
|
||||||
|
locationRequest.setInterval(3000);
|
||||||
|
|
||||||
|
//地图上设置定位数据源
|
||||||
|
tencentMap.setLocationSource(this);
|
||||||
|
//设置当前位置可见
|
||||||
|
tencentMap.setMyLocationEnabled(true);
|
||||||
|
//设置定位图标样式
|
||||||
|
setLocMarkerStyle();
|
||||||
|
// locationStyle = locationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE);
|
||||||
|
tencentMap.setMyLocationStyle(locationStyle);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 实现位置监听
|
||||||
|
* @param tencentLocation
|
||||||
|
* @param i
|
||||||
|
* @param s
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void onLocationChanged(TencentLocation tencentLocation, int i, String s) {
|
||||||
|
|
||||||
|
if(i == TencentLocation.ERROR_OK && locationChangedListener != null){
|
||||||
|
Location location = new Location(tencentLocation.getProvider());
|
||||||
|
//设置经纬度以及精度
|
||||||
|
location.setLatitude(tencentLocation.getLatitude());
|
||||||
|
location.setLongitude(tencentLocation.getLongitude());
|
||||||
|
location.setAccuracy(tencentLocation.getAccuracy());
|
||||||
|
locationChangedListener.onLocationChanged(location);
|
||||||
|
|
||||||
|
//显示回调的实时位置信息
|
||||||
|
runOnUiThread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
//打印tencentLocation的json字符串
|
||||||
|
// Toast.makeText(getApplicationContext(), new Gson().toJson(location), Toast.LENGTH_LONG).show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStatusUpdate(String s, int i, String s1) {
|
||||||
|
//GPS, WiFi, Radio 等状态发生变化
|
||||||
|
Log.v("State changed", s +"===" + s1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void activate(OnLocationChangedListener onLocationChangedListener) {
|
||||||
|
locationChangedListener = onLocationChangedListener;
|
||||||
|
|
||||||
|
int err = locationManager.requestLocationUpdates(locationRequest, this, Looper.myLooper());
|
||||||
|
switch (err) {
|
||||||
|
case 1:
|
||||||
|
Toast.makeText(this,"设备缺少使用腾讯定位服务需要的基本条件",Toast.LENGTH_SHORT).show();
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
Toast.makeText(this,"manifest 中配置的 key 不正确",Toast.LENGTH_SHORT).show();
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
Toast.makeText(this,"自动加载libtencentloc.so失败",Toast.LENGTH_SHORT).show();
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deactivate() {
|
||||||
|
locationManager.removeUpdates(this);
|
||||||
|
locationManager = null;
|
||||||
|
locationRequest = null;
|
||||||
|
locationChangedListener=null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) {
|
||||||
|
Log.e("location quest: ","success");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) {
|
||||||
|
Log.e("location quest: ","failed");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkLocationPermission() {
|
||||||
|
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED
|
||||||
|
|| ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)!= PackageManager.PERMISSION_GRANTED) {
|
||||||
|
ActivityCompat.requestPermissions(this,
|
||||||
|
new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION},
|
||||||
|
PERMISSION_REQUEST_CODE);
|
||||||
|
} else {
|
||||||
|
// 权限已授予,可进行定位操作
|
||||||
|
//startLocationUpdates();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
||||||
|
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||||
|
if (requestCode == PERMISSION_REQUEST_CODE) {
|
||||||
|
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||||
|
//startLocationUpdates();
|
||||||
|
} else {
|
||||||
|
// 用户拒绝了权限请求
|
||||||
|
Toast.makeText(this, "请授予定位权限", Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,85 @@
|
|||||||
|
package cc.winboll.studio.positions.activities;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author ZhanGSKen@AliYun.Com
|
||||||
|
* @Date 2025/02/24 12:14:04
|
||||||
|
*/
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
|
import cc.winboll.studio.positions.R;
|
||||||
|
import com.tencent.map.vector.demo.heatoverlay.ScatterPlotOverlayActivity;
|
||||||
|
import com.tencent.tencentmap.mapsdk.maps.MapView;
|
||||||
|
import com.tencent.tencentmap.mapsdk.maps.TencentMap;
|
||||||
|
import com.tencent.tencentmap.mapsdk.maps.TencentMapOptions;
|
||||||
|
import com.tencent.tencentmap.mapsdk.maps.TextureMapView;
|
||||||
|
import com.tencent.tencentmap.mapsdk.maps.model.LatLng;
|
||||||
|
|
||||||
|
public class TestMapViewActivity extends AppCompatActivity {
|
||||||
|
|
||||||
|
public static final String TAG = "TestMapViewActivity";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 由于SDK并没有提供用于MapView管理地图生命周期的Activity
|
||||||
|
* 因此需要用户继承Activity后管理地图的生命周期,防止内存泄露
|
||||||
|
*/
|
||||||
|
|
||||||
|
private TextureMapView mapView;
|
||||||
|
protected TencentMap tencentMap;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_testmapview);
|
||||||
|
|
||||||
|
mapView = findViewById(R.id.mapview);
|
||||||
|
mapView.setOpaque(false);
|
||||||
|
//创建tencentMap地图对象,可以完成对地图的几乎所有操作
|
||||||
|
tencentMap = mapView.getMap();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mapview的生命周期管理
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected void onStart() {
|
||||||
|
super.onStart();
|
||||||
|
mapView.onStart();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
mapView.onResume();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPause() {
|
||||||
|
super.onPause();
|
||||||
|
mapView.onPause();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onStop() {
|
||||||
|
super.onStop();
|
||||||
|
mapView.onStop();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onDestroy() {
|
||||||
|
super.onDestroy();
|
||||||
|
mapView.onDestroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onRestart() {
|
||||||
|
super.onRestart();
|
||||||
|
mapView.onRestart();
|
||||||
|
}
|
||||||
|
}
|
@@ -17,6 +17,9 @@ import androidx.annotation.NonNull;
|
|||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import cc.winboll.studio.positions.views.GridMapView;
|
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 GmsFragment extends Fragment {
|
public class GmsFragment extends Fragment {
|
||||||
|
|
||||||
@@ -24,7 +27,9 @@ public class GmsFragment extends Fragment {
|
|||||||
|
|
||||||
private static final String ARG_PAGE = "ARG_PAGE";
|
private static final String ARG_PAGE = "ARG_PAGE";
|
||||||
private int mPage;
|
private int mPage;
|
||||||
|
private TextureMapView mapView;
|
||||||
|
protected TencentMap tencentMap;
|
||||||
|
|
||||||
public static GmsFragment newInstance(int page) {
|
public static GmsFragment newInstance(int page) {
|
||||||
Bundle args = new Bundle();
|
Bundle args = new Bundle();
|
||||||
args.putInt(ARG_PAGE, page);
|
args.putInt(ARG_PAGE, page);
|
||||||
@@ -47,19 +52,60 @@ public class GmsFragment extends Fragment {
|
|||||||
@Nullable Bundle savedInstanceState) {
|
@Nullable Bundle savedInstanceState) {
|
||||||
View view = inflater.inflate(R.layout.fragment_gms, container, false);
|
View view = inflater.inflate(R.layout.fragment_gms, container, false);
|
||||||
|
|
||||||
// 初始化视图
|
// // 初始化视图
|
||||||
GridMapView mapView = (GridMapView) view.findViewById(R.id.map_view);
|
// GridMapView mapView = (GridMapView) view.findViewById(R.id.map_view);
|
||||||
|
//
|
||||||
// 设置网格参数
|
// // 设置网格参数
|
||||||
mapView.setGridParameters(10000f, 10000f, 10f);
|
// mapView.setGridParameters(10000f, 10000f, 10f);
|
||||||
|
//
|
||||||
// 初始化显示区域(中心点400,300,显示范围2000x200)
|
// // 初始化显示区域(中心点400,300,显示范围2000x200)
|
||||||
mapView.initViewport(5000f, 5000f, 1000f, 1000f);
|
// mapView.initViewport(5000f, 5000f, 1000f, 1000f);
|
||||||
|
//
|
||||||
// 绘制图形
|
// // 绘制图形
|
||||||
mapView.drawPoint(5000f, 5000f, Color.RED, 8f);
|
// mapView.drawPoint(5000f, 5000f, Color.RED, 8f);
|
||||||
mapView.drawCircle(5000f, 5000f, 50f, Color.BLUE, 8f);
|
// mapView.drawCircle(5000f, 5000f, 50f, Color.BLUE, 8f);
|
||||||
mapView.drawLine(4975f, 4975f, 5025f, 5025f, Color.GREEN, 2f);
|
// mapView.drawLine(4975f, 4975f, 5025f, 5025f, Color.GREEN, 2f);
|
||||||
|
|
||||||
|
// 初始化地图视图
|
||||||
|
mapView = view.findViewById(R.id.mapView);
|
||||||
|
mapView.setOpaque(false);
|
||||||
|
//创建tencentMap地图对象,可以完成对地图的几乎所有操作
|
||||||
|
tencentMap = mapView.getMap();
|
||||||
|
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mapview的生命周期管理
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void onStart() {
|
||||||
|
super.onStart();
|
||||||
|
mapView.onStart();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
mapView.onResume();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPause() {
|
||||||
|
super.onPause();
|
||||||
|
mapView.onPause();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStop() {
|
||||||
|
super.onStop();
|
||||||
|
mapView.onStop();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDestroy() {
|
||||||
|
super.onDestroy();
|
||||||
|
mapView.onDestroy();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
11
positions/src/main/res/drawable/ic_location_searching.xml
Normal file
11
positions/src/main/res/drawable/ic_location_searching.xml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportHeight="24"
|
||||||
|
android:viewportWidth="24">
|
||||||
|
<path
|
||||||
|
android:fillColor="#ff000000"
|
||||||
|
android:pathData="M3.05,13H1V11H3.05C3.5,6.83 6.83,3.5 11,3.05V1H13V3.05C17.17,3.5 20.5,6.83 20.95,11H23V13H20.95C20.5,17.17 17.17,20.5 13,20.95V23H11V20.95C6.83,20.5 3.5,17.17 3.05,13M12,5A7,7 0,0 0,5 12A7,7 0,0 0,12 19A7,7 0,0 0,19 12A7,7 0,0 0,12 5Z"/>
|
||||||
|
|
||||||
|
</vector>
|
11
positions/src/main/res/drawable/ic_my_location.xml
Normal file
11
positions/src/main/res/drawable/ic_my_location.xml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportHeight="24"
|
||||||
|
android:viewportWidth="24">
|
||||||
|
<path
|
||||||
|
android:fillColor="#ff000000"
|
||||||
|
android:pathData="M12,8A4,4 0,0 1,16 12A4,4 0,0 1,12 16A4,4 0,0 1,8 12A4,4 0,0 1,12 8M3.05,13H1V11H3.05C3.5,6.83 6.83,3.5 11,3.05V1H13V3.05C17.17,3.5 20.5,6.83 20.95,11H23V13H20.95C20.5,17.17 17.17,20.5 13,20.95V23H11V20.95C6.83,20.5 3.5,17.17 3.05,13M12,5A7,7 0,0 0,5 12A7,7 0,0 0,12 19A7,7 0,0 0,19 12A7,7 0,0 0,12 5Z"/>
|
||||||
|
|
||||||
|
</vector>
|
@@ -5,23 +5,48 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent"
|
||||||
|
tools:context=".MainActivity">
|
||||||
|
|
||||||
<androidx.appcompat.widget.Toolbar
|
<androidx.appcompat.widget.Toolbar
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:id="@+id/activitymainToolbar1"/>
|
android:id="@+id/activitymainToolbar1"/>
|
||||||
|
|
||||||
<androidx.viewpager.widget.ViewPager
|
<RelativeLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:layout_weight="1.0"
|
android:layout_weight="1.0">
|
||||||
android:id="@+id/activitymainViewPager1"/>
|
|
||||||
|
|
||||||
<com.google.android.material.tabs.TabLayout
|
<com.tencent.tencentmap.mapsdk.maps.TextureMapView
|
||||||
android:layout_width="match_parent"
|
android:id="@+id/mapview"
|
||||||
android:layout_height="60dp"
|
android:layout_width="match_parent"
|
||||||
android:id="@+id/activitymainTabLayout1"/>
|
android:layout_height="match_parent"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_info"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textColor="@color/colorPrimary"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:textSize="14sp"
|
||||||
|
android:background="#CAFFFFFF"
|
||||||
|
android:layout_alignParentLeft="true"
|
||||||
|
android:layout_alignParentRight="true">
|
||||||
|
|
||||||
|
</TextView>
|
||||||
|
|
||||||
|
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||||
|
android:id="@+id/fab"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentBottom="true"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:layout_margin="16dp"
|
||||||
|
android:src="@drawable/ic_location_searching"
|
||||||
|
app:backgroundTint="@color/colorPrimary"/>
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
27
positions/src/main/res/layout/activity_main2.xml
Normal file
27
positions/src/main/res/layout/activity_main2.xml
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.Toolbar
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:id="@+id/activitymainToolbar1"/>
|
||||||
|
|
||||||
|
<androidx.viewpager.widget.ViewPager
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
android:layout_weight="1.0"
|
||||||
|
android:id="@+id/activitymainViewPager1"/>
|
||||||
|
|
||||||
|
<com.google.android.material.tabs.TabLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="60dp"
|
||||||
|
android:id="@+id/activitymainTabLayout1"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
14
positions/src/main/res/layout/activity_testmapview.xml
Normal file
14
positions/src/main/res/layout/activity_testmapview.xml
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="vertical"
|
||||||
|
tools:context=".basic.MapViewActivity">
|
||||||
|
<com.tencent.tencentmap.mapsdk.maps.TextureMapView
|
||||||
|
android:id="@+id/mapview"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
@@ -6,15 +6,10 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<FrameLayout android:layout_width="match_parent"
|
<com.tencent.tencentmap.mapsdk.maps.TextureMapView
|
||||||
android:layout_height="match_parent">
|
android:id="@+id/mapView"
|
||||||
|
android:layout_width="match_parent"
|
||||||
<cc.winboll.studio.positions.views.GridMapView
|
android:layout_height="match_parent" />
|
||||||
android:id="@+id/map_view"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"/>
|
|
||||||
|
|
||||||
</FrameLayout>
|
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
@@ -2,8 +2,8 @@
|
|||||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
<item
|
<item
|
||||||
android:id="@+id/item_mapview"
|
android:id="@+id/item_testmapview"
|
||||||
android:title="MapViewActivity"/>
|
android:title="TestMapViewActivity"/>
|
||||||
<item
|
<item
|
||||||
android:id="@+id/item_demomain"
|
android:id="@+id/item_demomain"
|
||||||
android:title="DemoMainActivity"/>
|
android:title="DemoMainActivity"/>
|
||||||
|
Reference in New Issue
Block a user