qin 3 years ago
parent 6f34809c7b
commit 91787c3b26

@ -1,2 +0,0 @@
# SchoolProject

@ -0,0 +1,7 @@
本软件的配置如下:
Android Studio 2021.2.1 Patch 2
截止2022/11/26 百度地图官方提供的插件与接口
注意:
在软件的AndroidManifest.xml文件中的107行需要填写自己在百度地图官方网站上申请的key值
详情请跳转https://lbsyun.baidu.com/index.php?title=androidsdk去获取密钥

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

@ -0,0 +1,7 @@
本软件的配置如下:
Android Studio 2021.2.1 Patch 2
截止2022/11/26 百度地图官方提供的插件与接口
注意:
在软件的AndroidManifest.xml文件中的107行需要填写自己在百度地图官方网站上申请的key值
详情请跳转https://lbsyun.baidu.com/index.php?title=androidsdk去获取密钥

@ -0,0 +1,15 @@
*.iml
.gradle
/local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
local.properties

@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml

@ -0,0 +1,117 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<codeStyleSettings language="XML">
<option name="FORCE_REARRANGE_MODE" value="1" />
<indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="4" />
</indentOptions>
<arrangement>
<rules>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:android</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:id</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>style</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>ANDROID_ATTRIBUTE_ORDER</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>.*</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
</rules>
</arrangement>
</codeStyleSettings>
</code_scheme>
</component>

@ -0,0 +1,5 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
</state>
</component>

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel target="11" />
</component>
</project>

@ -0,0 +1,9 @@
<component name="CopyrightManager">
<copyright>
<option name="notice" value="Copyright (C) &amp;#36;today.year Baidu, Inc. All Rights Reserved." />
<option name="keyword" value="Copyright" />
<option name="allowReplaceKeyword" value="" />
<option name="myName" value="Baidu" />
<option name="myLocal" value="true" />
</copyright>
</component>

@ -0,0 +1,7 @@
<component name="CopyrightManager">
<settings default="Baidu">
<LanguageOptions name="__TEMPLATE__">
<option name="addBlankAfter" value="false" />
</LanguageOptions>
</settings>
</component>

@ -0,0 +1,463 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DBNavigator.Project.DataEditorManager">
<record-view-column-sorting-type value="BY_INDEX" />
<value-preview-text-wrapping value="true" />
<value-preview-pinned value="false" />
</component>
<component name="DBNavigator.Project.DataExportManager">
<export-instructions>
<create-header value="true" />
<friendly-headers value="false" />
<quote-values-containing-separator value="true" />
<quote-all-values value="false" />
<value-separator value="" />
<file-name value="" />
<file-location value="" />
<scope value="GLOBAL" />
<destination value="FILE" />
<format value="EXCEL" />
<charset value="GBK" />
<charset value="GBK" />
</export-instructions>
</component>
<component name="DBNavigator.Project.DatabaseBrowserManager">
<autoscroll-to-editor value="false" />
<autoscroll-from-editor value="true" />
<show-object-properties value="true" />
<loaded-nodes />
</component>
<component name="DBNavigator.Project.DatabaseFileManager">
<open-files />
</component>
<component name="DBNavigator.Project.EditorStateManager">
<last-used-providers />
</component>
<component name="DBNavigator.Project.ExecutionManager">
<retain-sticky-names value="false" />
</component>
<component name="DBNavigator.Project.MethodExecutionManager">
<method-browser />
<execution-history>
<group-entries value="true" />
<execution-inputs />
</execution-history>
<argument-values-cache />
</component>
<component name="DBNavigator.Project.ObjectDependencyManager">
<last-used-dependency-type value="INCOMING" />
</component>
<component name="DBNavigator.Project.ObjectQuickFilterManager">
<last-used-operator value="EQUAL" />
<filters />
</component>
<component name="DBNavigator.Project.ParserDiagnosticsManager">
<diagnostics-history />
</component>
<component name="DBNavigator.Project.ScriptExecutionManager" clear-outputs="true">
<recently-used-interfaces />
</component>
<component name="DBNavigator.Project.Settings">
<connections />
<browser-settings>
<general>
<display-mode value="TABBED" />
<navigation-history-size value="100" />
<show-object-details value="false" />
</general>
<filters>
<object-type-filter>
<object-type name="SCHEMA" enabled="true" />
<object-type name="USER" enabled="true" />
<object-type name="ROLE" enabled="true" />
<object-type name="PRIVILEGE" enabled="true" />
<object-type name="CHARSET" enabled="true" />
<object-type name="TABLE" enabled="true" />
<object-type name="VIEW" enabled="true" />
<object-type name="MATERIALIZED_VIEW" enabled="true" />
<object-type name="NESTED_TABLE" enabled="true" />
<object-type name="COLUMN" enabled="true" />
<object-type name="INDEX" enabled="true" />
<object-type name="CONSTRAINT" enabled="true" />
<object-type name="DATASET_TRIGGER" enabled="true" />
<object-type name="DATABASE_TRIGGER" enabled="true" />
<object-type name="SYNONYM" enabled="true" />
<object-type name="SEQUENCE" enabled="true" />
<object-type name="PROCEDURE" enabled="true" />
<object-type name="FUNCTION" enabled="true" />
<object-type name="PACKAGE" enabled="true" />
<object-type name="TYPE" enabled="true" />
<object-type name="TYPE_ATTRIBUTE" enabled="true" />
<object-type name="ARGUMENT" enabled="true" />
<object-type name="DIMENSION" enabled="true" />
<object-type name="CLUSTER" enabled="true" />
<object-type name="DBLINK" enabled="true" />
</object-type-filter>
</filters>
<sorting>
<object-type name="COLUMN" sorting-type="NAME" />
<object-type name="FUNCTION" sorting-type="NAME" />
<object-type name="PROCEDURE" sorting-type="NAME" />
<object-type name="ARGUMENT" sorting-type="POSITION" />
<object-type name="TYPE ATTRIBUTE" sorting-type="POSITION" />
</sorting>
<default-editors>
<object-type name="VIEW" editor-type="SELECTION" />
<object-type name="PACKAGE" editor-type="SELECTION" />
<object-type name="TYPE" editor-type="SELECTION" />
</default-editors>
</browser-settings>
<navigation-settings>
<lookup-filters>
<lookup-objects>
<object-type name="SCHEMA" enabled="true" />
<object-type name="USER" enabled="false" />
<object-type name="ROLE" enabled="false" />
<object-type name="PRIVILEGE" enabled="false" />
<object-type name="CHARSET" enabled="false" />
<object-type name="TABLE" enabled="true" />
<object-type name="VIEW" enabled="true" />
<object-type name="MATERIALIZED VIEW" enabled="true" />
<object-type name="INDEX" enabled="true" />
<object-type name="CONSTRAINT" enabled="true" />
<object-type name="DATASET TRIGGER" enabled="true" />
<object-type name="DATABASE TRIGGER" enabled="true" />
<object-type name="SYNONYM" enabled="false" />
<object-type name="SEQUENCE" enabled="true" />
<object-type name="PROCEDURE" enabled="true" />
<object-type name="FUNCTION" enabled="true" />
<object-type name="PACKAGE" enabled="true" />
<object-type name="TYPE" enabled="true" />
<object-type name="DIMENSION" enabled="false" />
<object-type name="CLUSTER" enabled="false" />
<object-type name="DBLINK" enabled="true" />
</lookup-objects>
<force-database-load value="false" />
<prompt-connection-selection value="true" />
<prompt-schema-selection value="true" />
</lookup-filters>
</navigation-settings>
<dataset-grid-settings>
<general>
<enable-zooming value="true" />
<enable-column-tooltip value="true" />
</general>
<sorting>
<nulls-first value="true" />
<max-sorting-columns value="4" />
</sorting>
<audit-columns>
<column-names value="" />
<visible value="true" />
<editable value="false" />
</audit-columns>
</dataset-grid-settings>
<dataset-editor-settings>
<text-editor-popup>
<active value="false" />
<active-if-empty value="false" />
<data-length-threshold value="100" />
<popup-delay value="1000" />
</text-editor-popup>
<values-actions-popup>
<show-popup-button value="true" />
<element-count-threshold value="1000" />
<data-length-threshold value="250" />
</values-actions-popup>
<general>
<fetch-block-size value="100" />
<fetch-timeout value="30" />
<trim-whitespaces value="true" />
<convert-empty-strings-to-null value="true" />
<select-content-on-cell-edit value="true" />
<large-value-preview-active value="true" />
</general>
<filters>
<prompt-filter-dialog value="true" />
<default-filter-type value="BASIC" />
</filters>
<qualified-text-editor text-length-threshold="300">
<content-types>
<content-type name="Text" enabled="true" />
<content-type name="Properties" enabled="true" />
<content-type name="XML" enabled="true" />
<content-type name="DTD" enabled="true" />
<content-type name="HTML" enabled="true" />
<content-type name="XHTML" enabled="true" />
<content-type name="Java" enabled="true" />
<content-type name="SQL" enabled="true" />
<content-type name="PL/SQL" enabled="true" />
<content-type name="JSON" enabled="true" />
<content-type name="JSON5" enabled="true" />
<content-type name="Groovy" enabled="true" />
<content-type name="AIDL" enabled="true" />
<content-type name="YAML" enabled="true" />
<content-type name="Manifest" enabled="true" />
</content-types>
</qualified-text-editor>
<record-navigation>
<navigation-target value="VIEWER" />
</record-navigation>
</dataset-editor-settings>
<code-editor-settings>
<general>
<show-object-navigation-gutter value="false" />
<show-spec-declaration-navigation-gutter value="true" />
<enable-spellchecking value="true" />
<enable-reference-spellchecking value="false" />
</general>
<confirmations>
<save-changes value="false" />
<revert-changes value="true" />
</confirmations>
</code-editor-settings>
<code-completion-settings>
<filters>
<basic-filter>
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
<filter-element type="RESERVED_WORD" id="function" selected="true" />
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
<filter-element type="OBJECT" id="schema" selected="true" />
<filter-element type="OBJECT" id="role" selected="true" />
<filter-element type="OBJECT" id="user" selected="true" />
<filter-element type="OBJECT" id="privilege" selected="true" />
<user-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="false" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</user-schema>
<public-schema>
<filter-element type="OBJECT" id="table" selected="false" />
<filter-element type="OBJECT" id="view" selected="false" />
<filter-element type="OBJECT" id="materialized view" selected="false" />
<filter-element type="OBJECT" id="index" selected="false" />
<filter-element type="OBJECT" id="constraint" selected="false" />
<filter-element type="OBJECT" id="trigger" selected="false" />
<filter-element type="OBJECT" id="synonym" selected="false" />
<filter-element type="OBJECT" id="sequence" selected="false" />
<filter-element type="OBJECT" id="procedure" selected="false" />
<filter-element type="OBJECT" id="function" selected="false" />
<filter-element type="OBJECT" id="package" selected="false" />
<filter-element type="OBJECT" id="type" selected="false" />
<filter-element type="OBJECT" id="dimension" selected="false" />
<filter-element type="OBJECT" id="cluster" selected="false" />
<filter-element type="OBJECT" id="dblink" selected="false" />
</public-schema>
<any-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="true" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</any-schema>
</basic-filter>
<extended-filter>
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
<filter-element type="RESERVED_WORD" id="function" selected="true" />
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
<filter-element type="OBJECT" id="schema" selected="true" />
<filter-element type="OBJECT" id="user" selected="true" />
<filter-element type="OBJECT" id="role" selected="true" />
<filter-element type="OBJECT" id="privilege" selected="true" />
<user-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="true" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</user-schema>
<public-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="true" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</public-schema>
<any-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="true" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</any-schema>
</extended-filter>
</filters>
<sorting enabled="true">
<sorting-element type="RESERVED_WORD" id="keyword" />
<sorting-element type="RESERVED_WORD" id="datatype" />
<sorting-element type="OBJECT" id="column" />
<sorting-element type="OBJECT" id="table" />
<sorting-element type="OBJECT" id="view" />
<sorting-element type="OBJECT" id="materialized view" />
<sorting-element type="OBJECT" id="index" />
<sorting-element type="OBJECT" id="constraint" />
<sorting-element type="OBJECT" id="trigger" />
<sorting-element type="OBJECT" id="synonym" />
<sorting-element type="OBJECT" id="sequence" />
<sorting-element type="OBJECT" id="procedure" />
<sorting-element type="OBJECT" id="function" />
<sorting-element type="OBJECT" id="package" />
<sorting-element type="OBJECT" id="type" />
<sorting-element type="OBJECT" id="dimension" />
<sorting-element type="OBJECT" id="cluster" />
<sorting-element type="OBJECT" id="dblink" />
<sorting-element type="OBJECT" id="schema" />
<sorting-element type="OBJECT" id="role" />
<sorting-element type="OBJECT" id="user" />
<sorting-element type="RESERVED_WORD" id="function" />
<sorting-element type="RESERVED_WORD" id="parameter" />
</sorting>
<format>
<enforce-code-style-case value="true" />
</format>
</code-completion-settings>
<execution-engine-settings>
<statement-execution>
<fetch-block-size value="100" />
<execution-timeout value="20" />
<debug-execution-timeout value="600" />
<focus-result value="false" />
<prompt-execution value="false" />
</statement-execution>
<script-execution>
<command-line-interfaces />
<execution-timeout value="300" />
</script-execution>
<method-execution>
<execution-timeout value="30" />
<debug-execution-timeout value="600" />
<parameter-history-size value="10" />
</method-execution>
</execution-engine-settings>
<operation-settings>
<transactions>
<uncommitted-changes>
<on-project-close value="ASK" />
<on-disconnect value="ASK" />
<on-autocommit-toggle value="ASK" />
</uncommitted-changes>
<multiple-uncommitted-changes>
<on-commit value="ASK" />
<on-rollback value="ASK" />
</multiple-uncommitted-changes>
</transactions>
<session-browser>
<disconnect-session value="ASK" />
<kill-session value="ASK" />
<reload-on-filter-change value="false" />
</session-browser>
<compiler>
<compile-type value="KEEP" />
<compile-dependencies value="ASK" />
<always-show-controls value="false" />
</compiler>
<debugger>
<debugger-type value="ASK" />
<use-generic-runners value="true" />
</debugger>
</operation-settings>
<ddl-file-settings>
<extensions>
<mapping file-type-id="VIEW" extensions="vw" />
<mapping file-type-id="TRIGGER" extensions="trg" />
<mapping file-type-id="PROCEDURE" extensions="prc" />
<mapping file-type-id="FUNCTION" extensions="fnc" />
<mapping file-type-id="PACKAGE" extensions="pkg" />
<mapping file-type-id="PACKAGE_SPEC" extensions="pks" />
<mapping file-type-id="PACKAGE_BODY" extensions="pkb" />
<mapping file-type-id="TYPE" extensions="tpe" />
<mapping file-type-id="TYPE_SPEC" extensions="tps" />
<mapping file-type-id="TYPE_BODY" extensions="tpb" />
</extensions>
<general>
<lookup-ddl-files value="true" />
<create-ddl-files value="false" />
<synchronize-ddl-files value="true" />
<use-qualified-names value="false" />
<make-scripts-rerunnable value="true" />
</general>
</ddl-file-settings>
<general-settings>
<regional-settings>
<date-format value="MEDIUM" />
<number-format value="UNGROUPED" />
<locale value="SYSTEM_DEFAULT" />
<use-custom-formats value="false" />
</regional-settings>
<environment>
<environment-types>
<environment-type id="development" name="Development" description="Development environment" color="-2430209/-12296320" readonly-code="false" readonly-data="false" />
<environment-type id="integration" name="Integration" description="Integration environment" color="-2621494/-12163514" readonly-code="true" readonly-data="false" />
<environment-type id="production" name="Production" description="Productive environment" color="-11574/-10271420" readonly-code="true" readonly-data="true" />
<environment-type id="other" name="Other" description="" color="-1576/-10724543" readonly-code="false" readonly-data="false" />
</environment-types>
<visibility-settings>
<connection-tabs value="true" />
<dialog-headers value="true" />
<object-editor-tabs value="true" />
<script-editor-tabs value="false" />
<execution-result-tabs value="true" />
</visibility-settings>
</environment>
</general-settings>
</component>
<component name="DBNavigator.Project.StatementExecutionManager">
<execution-variables />
</component>
</project>

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="testRunner" value="GRADLE" />
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/app" />
</set>
</option>
</GradleProjectSettings>
</option>
</component>
</project>

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DesignSurface">
<option name="filePathToZoomLevelMap">
<map>
<entry key="..\:/Project/map/app/src/main/res/layout/activity_main.xml" value="0.28541666666666665" />
<entry key="..\:/Project/map3demo/app/src/main/res/layout/activity_class_table.xml" value="0.3" />
<entry key="..\:/Project/map3demo/app/src/main/res/layout/activity_class_table2.xml" value="0.3" />
<entry key="..\:/Project/map3demo/app/src/main/res/layout/activity_guide_main.xml" value="0.2989583333333333" />
<entry key="..\:/Project/map3demo/app/src/main/res/layout/activity_login_screen.xml" value="0.3" />
<entry key="..\:/Project/map3demo/app/src/main/res/layout/activity_main.xml" value="0.1" />
<entry key="..\:/Project/map3demo/app/src/main/res/layout/activity_main_screen.xml" value="0.3" />
<entry key="..\:/Project/map3demo/app/src/main/res/layout/activity_me.xml" value="0.4466666666666667" />
<entry key="..\:/Project/map3demo/app/src/main/res/layout/activity_register.xml" value="0.3" />
<entry key="..\:/Project/map3demo/app/src/main/res/layout/activity_sign_in_front.xml" value="0.3" />
<entry key="..\:/Project/map3demo/app/src/main/res/layout/activity_tianjiakebiao.xml" value="0.28541666666666665" />
<entry key="..\:/Project/map3demo/app/src/main/res/layout/activity_welcome_screen.xml" value="0.3" />
<entry key="..\:/Project/map3demo/app/src/main/res/layout/activity_zhuxiao.xml" value="0.3" />
<entry key="..\:/Project/map3demo/app/src/main/res/layout/deleteclass.xml" value="0.3" />
<entry key="..\:/Project/map3demo/app/src/main/res/layout/press.xml" value="0.3" />
<entry key="..\:/Project/map3demo/app/src/main/res/menu/menu.xml" value="0.3" />
<entry key="..\:/Project/mapdemo/app/src/main/res/layout/activity_main.xml" value="0.3" />
<entry key="..\:/Project/mapdemoditu/app/src/main/res/drawable/btn_selector.xml" value="0.253" />
<entry key="..\:/Project/mapdemoditu/app/src/main/res/drawable/ic_launcher_background.xml" value="0.253" />
<entry key="..\:/Project/mapdemoditu/app/src/main/res/layout/activity_main.xml" value="0.3" />
<entry key="..\:/Project/mapdemoditu/app/src/main/res/layout/activity_me.xml" value="0.3" />
<entry key="..\:/Project/mapdemoditu/app/src/main/res/layout/activity_sign_in_front.xml" value="0.3" />
<entry key="..\:/Project/mapdemoditu/app/src/main/res/layout/layout_map_item.xml" value="0.3" />
</map>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="Android Studio default JDK" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
<component name="VisualizationToolProject">
<option name="state">
<ProjectState>
<option name="scale" value="0.28541666666666665" />
</ProjectState>
</option>
</component>
</project>

@ -0,0 +1 @@
/build

@ -0,0 +1,50 @@
plugins {
id 'com.android.application'
}
android {
compileSdk 32
defaultConfig {
applicationId "com.example.map"
minSdk 26
targetSdk 32
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
sourceSets{
main{
jniLibs.srcDirs = ['libs']
}
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.3.0'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation files('libs\\BaiduLBS_Android.jar')
implementation fileTree(dir:'libs',include:['*.jar'])
implementation 'com.google.android.gms:play-services-maps:17.0.1'
implementation files('libs\\BaiduLBS_Android.jar')
implementation files('libs\\BaiduLBS_Android.jar')
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}

@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

@ -0,0 +1,26 @@
package com.example.map;
import android.content.Context;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
/**
* Instrumented test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
assertEquals("com.example.map", appContext.getPackageName());
}
}

@ -0,0 +1,132 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.map">
<!-- 访问网络进行地图相关业务数据请求包括地图数据路线规划POI检索等 -->
<uses-permission android:name="android.permission.INTERNET" /> <!-- 获取网络状态,根据网络状态切换进行数据请求网络转换 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 读取外置存储。如果开发者使用了so动态加载功能并且把so文件放在了外置存储区域则需要申请该权限否则不需要 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 写外置存储。如果开发者使用了离线地图,并且数据写在外置存储区域,则需要申请该权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- 这个权限用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 这个权限用于访问GPS定位 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 读写sd卡 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 写sd卡 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_GPS" /> <!-- 获取精确gps位置 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 获取粗略位置 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 允许程序访问额外的定位提供者指令获取模拟定位信息 -->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <!-- 网络链接 -->
<uses-permission android:name="android.permission.INTERNET" /> <!-- 获取网络状态 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 更改wifi连状态 -->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- 获取wifi状态 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 允许程序读写手机状态和身份 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- 访问网络进行地图相关业务数据请求包括地图数据路线规划POI检索等 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 获取网络状态,根据网络状态切换进行数据请求网络转换 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 获取允许应用程序更改Wi-Fi连接状态的权限用于室内步行导航wifi定位,如果不需要室内步行导航功能则该权限无需申请 -->
<uses-permission android:name="android.Manifest.permission.CHANGE_WIFI_STATE" />
<!-- 读取外置存储。如果开发者使用了So动态加载功能并且把SO文件放在了外置存储区域则需要申请该权限否则不需要 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- 写外置存储。如果开发者使用了离线地图,并且数据写在外置存储区域,则需要申请该权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 以下两个权限用于Demo中定位功能展示如果开发者实际不需要百度定位功能可不申请 -->
<!-- 这个权限用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 这个权限用于访问GPS定位 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 用于AR步行导航需要使用相机权限如果不需要AR歩导则不需申请该权限 -->
<uses-permission android:name="android.permission.CAMERA" />
<!-- 用于步骑行导航Demo中振动效果提示开发者根据自己业务需求决定是否申请 -->
<uses-permission android:name="android.permission.VIBRATE"/>
<!-- OpenGLES 2.0 -->
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
<application
android:name=".DemoApplication"
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Map"
tools:targetApi="31">
<activity
android:name=".sign_in_front"
android:exported="false" />
<activity
android:name=".me"
android:exported="false" /> <!-- 在Application标签中声明定位的service组件 -->
<activity
android:name=".LoginScreen"
android:exported="false" />
<activity
android:name=".LogOut"
android:exported="false" />
<activity
android:name=".Register"
android:exported="false" />
<activity
android:name=".UserScreen"
android:exported="false" />
<activity
android:name=".util.ClassTable"
android:exported="false" />
<activity
android:name=".ClassTable"
android:exported="false" />
<activity
android:name=".AddClasses"
android:exported="false" />
<activity
android:name=".DeleteClasses"
android:exported="false" />
<activity
android:name=".Detail"
android:exported="false" />
<activity
android:name=".BNaviGuideActivity"
/>
<activity
android:name=".BNaviMainActivity"
/>
<activity
android:name=".WNaviGuideActivity" />
<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote">
</service>
<service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote" />
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="这里是老师自己的key值在百度地图开发网站上申请" />
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

@ -0,0 +1,88 @@
package com.example.map;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.example.map.database.ClassDBHelper;
import com.example.map.enity.Class_demo;
@SuppressWarnings("rawtypes")
public class AddClasses extends AppCompatActivity implements View.OnClickListener{
Button close_activity;//关闭按钮
Button save_activity;//保存按钮
Spinner selected_time;//选择上课时间
Spinner selected_day;//选择哪天上课
EditText subject;//科目
EditText teacher;//老师名字
private ClassDBHelper mHelper;
public final String DB_NAME = "class.db";
public final String TABLE_NAME = "class_table";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_tianjiakebiao);
save_activity=findViewById(R.id.save_activity);
selected_time=findViewById(R.id.selected_time);
selected_day=findViewById(R.id.selected_day);
subject=findViewById(R.id.subject);
teacher=findViewById(R.id.teacher);
//当点击dialog之外完成此activity
setFinishOnTouchOutside (true);
//关闭按钮操作
close_activity=(Button) findViewById(R.id.close_activity);
close_activity.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AddClasses.this.finish();
}
});
findViewById(R.id.subject).setOnClickListener(this);
findViewById(R.id.teacher).setOnClickListener(this);
findViewById(R.id.save_activity).setOnClickListener(this);
}
protected void onStart() {
super.onStart();
// 获得数据库帮助器的实例
mHelper = ClassDBHelper.getInstance(this);
// 打开数据库帮助器的读写连接
mHelper.openWriteLink();
mHelper.openReadLink();
}
public void onClick(View v) {
String subject_=subject.getText().toString().trim();
String teacher_=teacher.getText().toString().trim();
String time = selected_time.getSelectedItem().toString();
String day = selected_day.getSelectedItem().toString();
Class_demo classes = null;
switch (v.getId()){
case R.id.close_activity:
Intent intent = new Intent(AddClasses.this, ClassTable.class);//跳转到注册界面
startActivity(intent);
finish();
break;
case R.id.save_activity:
classes=new Class_demo(subject_,time,day,teacher_);
if (mHelper.insert(classes) > 0) {
Toast.makeText(this, "课表添加成功", Toast.LENGTH_SHORT).show();
}
break;
}
}
}

@ -0,0 +1,31 @@
/*
* Copyright (C) 2016 Baidu, Inc. All Rights Reserved.
*/
package com.example.map;
import android.app.Application;
import com.baidu.mapapi.SDKInitializer;
public class BNaviDemoApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
/**
* SDK
* false线, SDK
* true线
*/
SDKInitializer.setAgreePrivacy(this, true);
// 在SDK初始化时捕获抛出的异常
try {
SDKInitializer.initialize(this);
} catch (Exception e) {
}
}
}

@ -0,0 +1,137 @@
/*
* Copyright (C) 2016 Baidu, Inc. All Rights Reserved.
*/
package com.example.map;
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import com.baidu.mapapi.bikenavi.BikeNavigateHelper;
import com.baidu.mapapi.bikenavi.adapter.IBNaviStatusListener;
import com.baidu.mapapi.bikenavi.adapter.IBRouteGuidanceListener;
import com.baidu.mapapi.bikenavi.adapter.IBTTSPlayer;
import com.baidu.mapapi.bikenavi.model.BikeRouteDetailInfo;
import com.baidu.mapapi.bikenavi.model.IBRouteIconInfo;
import com.baidu.mapapi.bikenavi.params.BikeNaviLaunchParam;
import com.baidu.mapapi.walknavi.model.RouteGuideKind;
public class BNaviGuideActivity extends Activity {
private final static String TAG = BNaviGuideActivity.class.getSimpleName();
private BikeNavigateHelper mNaviHelper;
BikeNaviLaunchParam param;
@Override
protected void onDestroy() {
super.onDestroy();
mNaviHelper.quit();
}
@Override
protected void onResume() {
super.onResume();
mNaviHelper.resume();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mNaviHelper = BikeNavigateHelper.getInstance();
View view = mNaviHelper.onCreate(BNaviGuideActivity.this);
if (view != null) {
setContentView(view);
}
mNaviHelper.setBikeNaviStatusListener(new IBNaviStatusListener() {
@Override
public void onNaviExit() {
Log.d(TAG, "onNaviExit");
}
});
mNaviHelper.setTTsPlayer(new IBTTSPlayer() {
@Override
public int playTTSText(String s, boolean b) {
Log.d("tts", s);
return 0;
}
});
mNaviHelper.startBikeNavi(BNaviGuideActivity.this);
mNaviHelper.setRouteGuidanceListener(this, new IBRouteGuidanceListener() {
@Override
public void onRouteGuideIconInfoUpdate(IBRouteIconInfo ibRouteIconInfo) {
}
@Override
public void onRouteGuideIconUpdate(Drawable drawable) {
}
@Override
public void onRouteGuideKind(RouteGuideKind routeGuideKind) {
}
@Override
public void onRoadGuideTextUpdate(CharSequence charSequence, CharSequence charSequence1) {
}
@Override
public void onRemainDistanceUpdate(CharSequence charSequence) {
}
@Override
public void onRemainTimeUpdate(CharSequence charSequence) {
}
@Override
public void onGpsStatusChange(CharSequence charSequence, Drawable drawable) {
}
@Override
public void onRouteFarAway(CharSequence charSequence, Drawable drawable) {
}
@Override
public void onRoutePlanYawing(CharSequence charSequence, Drawable drawable) {
}
@Override
public void onReRouteComplete() {
}
@Override
public void onArriveDest() {
}
@Override
public void onVibrate() {
}
@Override
public void onGetRouteDetailInfo(BikeRouteDetailInfo bikeRouteDetailInfo) {
}
});
}
}

@ -0,0 +1,322 @@
package com.example.map;
import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import com.baidu.mapapi.bikenavi.BikeNavigateHelper;
import com.baidu.mapapi.bikenavi.adapter.IBEngineInitListener;
import com.baidu.mapapi.bikenavi.adapter.IBRoutePlanListener;
import com.baidu.mapapi.bikenavi.model.BikeRoutePlanError;
import com.baidu.mapapi.bikenavi.params.BikeNaviLaunchParam;
import com.baidu.mapapi.bikenavi.params.BikeRouteNodeInfo;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.MapStatus;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.Marker;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.TextureMapView;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.walknavi.WalkNavigateHelper;
import com.baidu.mapapi.walknavi.adapter.IWEngineInitListener;
import com.baidu.mapapi.walknavi.adapter.IWRoutePlanListener;
import com.baidu.mapapi.walknavi.model.WalkRoutePlanError;
import com.baidu.mapapi.walknavi.params.WalkNaviLaunchParam;
import com.baidu.mapapi.walknavi.params.WalkRouteNodeInfo;
import java.util.ArrayList;
public class BNaviMainActivity extends Activity {
private final static String TAG = BNaviMainActivity.class.getSimpleName();
private TextureMapView mMapView;
private BaiduMap mBaiduMap = null;
/*导航起终点Marker可拖动改变起终点的坐标*/
private Marker mStartMarker;
private Marker mEndMarker;
private LatLng startPt;
private LatLng endPt;
private BikeNaviLaunchParam bikeParam;
private WalkNaviLaunchParam walkParam;
private static boolean isPermissionRequested = false;
private BitmapDescriptor bdStart = BitmapDescriptorFactory
.fromResource(R.drawable.icon_start);
private BitmapDescriptor bdEnd = BitmapDescriptorFactory
.fromResource(R.drawable.icon_end);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_guide_main);
requestPermission();
mMapView = (TextureMapView)findViewById(R.id.mapview);
initMapStatus();
/*骑行导航入口*/
Button bikeBtn = (Button) findViewById(R.id.btn_bikenavi);
bikeBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startBikeNavi();
}
});
startPt = new LatLng(39.112193,117.359531);
endPt = new LatLng(39.110484,117.359181);
/*构造导航起终点参数对象*/
BikeRouteNodeInfo bikeStartNode = new BikeRouteNodeInfo();
bikeStartNode.setLocation(startPt);
BikeRouteNodeInfo bikeEndNode = new BikeRouteNodeInfo();
bikeEndNode.setLocation(endPt);
bikeParam = new BikeNaviLaunchParam().startNodeInfo(bikeStartNode).endNodeInfo(bikeEndNode);
WalkRouteNodeInfo walkStartNode = new WalkRouteNodeInfo();
walkStartNode.setLocation(startPt);
WalkRouteNodeInfo walkEndNode = new WalkRouteNodeInfo();
walkEndNode.setLocation(endPt);
walkParam = new WalkNaviLaunchParam().startNodeInfo(walkStartNode).endNodeInfo(walkEndNode);
/* 初始化起终点Marker */
initOverlay();
}
/**
*
*/
private void initMapStatus(){
mBaiduMap = mMapView.getMap();
MapStatus.Builder builder = new MapStatus.Builder();
builder.target(new LatLng(39.112759,117.358732)).zoom(15);
mBaiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
}
/**
* Marker
*/
public void initOverlay() {
MarkerOptions ooA = new MarkerOptions().position(startPt).icon(bdStart)
.zIndex(9).draggable(true);
mStartMarker = (Marker) (mBaiduMap.addOverlay(ooA));
mStartMarker.setDraggable(true);
MarkerOptions ooB = new MarkerOptions().position(endPt).icon(bdEnd)
.zIndex(5);
mEndMarker = (Marker) (mBaiduMap.addOverlay(ooB));
mEndMarker.setDraggable(true);
mBaiduMap.setOnMarkerDragListener(new BaiduMap.OnMarkerDragListener() {
public void onMarkerDrag(Marker marker) {
}
public void onMarkerDragEnd(Marker marker) {
if(marker == mStartMarker){
startPt = marker.getPosition();
}else if(marker == mEndMarker){
endPt = marker.getPosition();
}
BikeRouteNodeInfo bikeStartNode = new BikeRouteNodeInfo();
bikeStartNode.setLocation(startPt);
BikeRouteNodeInfo bikeEndNode = new BikeRouteNodeInfo();
bikeEndNode.setLocation(endPt);
bikeParam = new BikeNaviLaunchParam().startNodeInfo(bikeStartNode).endNodeInfo(bikeEndNode);
WalkRouteNodeInfo walkStartNode = new WalkRouteNodeInfo();
walkStartNode.setLocation(startPt);
WalkRouteNodeInfo walkEndNode = new WalkRouteNodeInfo();
walkEndNode.setLocation(endPt);
walkParam = new WalkNaviLaunchParam().startNodeInfo(walkStartNode).endNodeInfo(walkEndNode);
}
public void onMarkerDragStart(Marker marker) {
}
});
}
/**
*
*/
private void startBikeNavi() {
Log.d(TAG, "startBikeNavi");
try {
BikeNavigateHelper.getInstance().initNaviEngine(this, new IBEngineInitListener() {
@Override
public void engineInitSuccess() {
Log.d(TAG, "BikeNavi engineInitSuccess");
routePlanWithBikeParam();
}
@Override
public void engineInitFail() {
Log.d(TAG, "BikeNavi engineInitFail");
BikeNavigateHelper.getInstance().unInitNaviEngine();
}
});
} catch (Exception e) {
Log.d(TAG, "startBikeNavi Exception");
e.printStackTrace();
}
}
/**
*
*/
private void startWalkNavi() {
Log.d(TAG, "startWalkNavi");
try {
WalkNavigateHelper.getInstance().initNaviEngine(this, new IWEngineInitListener() {
@Override
public void engineInitSuccess() {
Log.d(TAG, "WalkNavi engineInitSuccess");
routePlanWithWalkParam();
}
@Override
public void engineInitFail() {
Log.d(TAG, "WalkNavi engineInitFail");
WalkNavigateHelper.getInstance().unInitNaviEngine();
}
});
} catch (Exception e) {
Log.d(TAG, "startBikeNavi Exception");
e.printStackTrace();
}
}
/**
*
*/
private void routePlanWithBikeParam() {
BikeNavigateHelper.getInstance().routePlanWithRouteNode(bikeParam, new IBRoutePlanListener() {
@Override
public void onRoutePlanStart() {
Log.d(TAG, "BikeNavi onRoutePlanStart");
}
@Override
public void onRoutePlanSuccess() {
Log.d(TAG, "BikeNavi onRoutePlanSuccess");
Intent intent = new Intent();
intent.setClass(BNaviMainActivity.this, BNaviGuideActivity.class);
startActivity(intent);
}
@Override
public void onRoutePlanFail(BikeRoutePlanError error) {
Log.d(TAG, "BikeNavi onRoutePlanFail");
}
});
}
/**
*
*/
private void routePlanWithWalkParam() {
WalkNavigateHelper.getInstance().routePlanWithRouteNode(walkParam, new IWRoutePlanListener() {
@Override
public void onRoutePlanStart() {
Log.d(TAG, "WalkNavi onRoutePlanStart");
}
@Override
public void onRoutePlanSuccess() {
Log.d(TAG, "onRoutePlanSuccess");
Intent intent = new Intent();
intent.setClass(BNaviMainActivity.this, WNaviGuideActivity.class);
startActivity(intent);
}
@Override
public void onRoutePlanFail(WalkRoutePlanError error) {
Log.d(TAG, "WalkNavi onRoutePlanFail");
}
});
}
/**
* Android6.0
*/
private void requestPermission() {
if (Build.VERSION.SDK_INT >= 23 && !isPermissionRequested) {
isPermissionRequested = true;
ArrayList<String> permissionsList = new ArrayList<>();
String[] permissions = {
Manifest.permission.RECORD_AUDIO,
Manifest.permission.ACCESS_NETWORK_STATE,
Manifest.permission.INTERNET,
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.MODIFY_AUDIO_SETTINGS,
Manifest.permission.WRITE_SETTINGS,
Manifest.permission.ACCESS_WIFI_STATE,
Manifest.permission.CHANGE_WIFI_STATE,
Manifest.permission.CHANGE_WIFI_MULTICAST_STATE
};
for (String perm : permissions) {
if (PackageManager.PERMISSION_GRANTED != checkSelfPermission(perm)) {
permissionsList.add(perm);
// 进入到这里代表没有权限.
}
}
if (permissionsList.isEmpty()) {
return;
} else {
requestPermissions(permissionsList.toArray(new String[permissionsList.size()]), 0);
}
}
}
protected void onPause() {
super.onPause();
mMapView.onPause();
}
@Override
protected void onResume() {
super.onResume();
mMapView.onResume();
}
@Override
protected void onDestroy() {
super.onDestroy();
mMapView.onDestroy();
bdStart.recycle();
bdEnd.recycle();
}
}

@ -0,0 +1,213 @@
package com.example.map;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.widget.GridLayout;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import com.example.map.database.ClassDBHelper;
import com.example.map.enity.Class_demo;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class ClassTable extends AppCompatActivity implements View.OnTouchListener {
private static final String DB_NAME="class.db";
private static final String TABLE_NAME="class_table";
private static final int DB_VERSION=1;
private ClassDBHelper mHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_class_table);
ClassDBHelper dbHelper=new ClassDBHelper(this,DB_NAME,null,DB_VERSION);
framework();
applyDraw(dbHelper);
}
protected void onStart() {
super.onStart();
// 获得数据库帮助器的实例
mHelper = ClassDBHelper.getInstance(this);
// 打开数据库帮助器的读写连接
mHelper.openWriteLink();
mHelper.openReadLink();
}
public GridLayout LayoutColumn(int i) {
//di->周一
GridLayout gridLayout = findViewById(R.id.d1);
switch (i) {
case 1: {
gridLayout = findViewById(R.id.d1);
break;
}
case 2: {
gridLayout = findViewById(R.id.d2);
break;
}
case 3: {
gridLayout = findViewById(R.id.d3);
break;
}
case 4: {
gridLayout = findViewById(R.id.d4);
break;
}
case 5: {
gridLayout = findViewById(R.id.d5);
break;
}
case 6: {
gridLayout = findViewById(R.id.d6);
break;
}
case 7: {
gridLayout = findViewById(R.id.d7);
break;
}
}
return gridLayout;
}
public void framework() {
GridLayout gridLayout;
int id = 1;
for (int i = 1; i < 8; i++) {
gridLayout = LayoutColumn(i);
for (int j = 1; j < 10; j +=2) {
TextView textView1 = new TextView(this);
textView1.setId(id++);
textView1.setText("");
textView1.setMaxLines(5);
textView1.setEllipsize(TextUtils.TruncateAt.END);
textView1.setBackgroundColor(Color.parseColor("#F0FFFF"));
textView1.setGravity(Gravity.CENTER);
GridLayout.LayoutParams params1 = new GridLayout.LayoutParams();
params1.rowSpec = GridLayout.spec( j, 2,1);
params1.setMargins(5,10,5,10);
params1.width = GridLayout.LayoutParams.MATCH_PARENT;
params1.height = 0;
gridLayout.addView(textView1, params1);
}
}
}
@SuppressLint("ClickableViewAccessibility")
public void applyDraw(ClassDBHelper DBHelper) {
List<Class_demo> classes = query(DBHelper);
for (Class_demo aClass : classes) {
//第几节课
int i = Integer.parseInt(aClass.c_time.charAt(0) + "");
// int i=1;
//星期几
int j = utils.getDay(aClass.getC_day());
//获取此课程对应TextView的id
TextView Class = findViewById((j - 1) * 5 + ((i - 1)/2 + 1));
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEEE");
if (aClass.getC_day().equals(simpleDateFormat.format(date).toString())) {
Class.setBackgroundColor(Color.rgb(28, 217, 204));
}
//课程表信息映射出来
int louceng=(int)(Math.random()*10+1);
int jiaoshihao=(int)(Math.random()*400+1);
String jiaoshi="S"+louceng+"-"+jiaoshihao;
String xinxi="课程:"+aClass.getC_subject()+'\n'+ "教师:"+aClass.getC_teacher()+'\n';
Class.setText(xinxi);
//触碰此课程框触发
Class.setOnTouchListener(ClassTable.this);
}
}
public List<Class_demo> query(ClassDBHelper dbHelper) {
List<Class_demo> classes = new ArrayList<>();
SQLiteDatabase db = dbHelper.getWritableDatabase();
Cursor cursor1 = db.query(TABLE_NAME, null, null, null, null, null, null);
// cursor1.moveToFirst();
while (cursor1.moveToNext()) {
Cursor cursor=db.query(TABLE_NAME,null,null,null,null,null,null);
@SuppressLint("Range") String subject=cursor1.getString(cursor.getColumnIndex("c_subject"));
@SuppressLint("Range") String time=cursor1.getString(cursor.getColumnIndex("c_time"));
@SuppressLint("Range") String day=cursor1.getString(cursor.getColumnIndex("c_day"));
@SuppressLint("Range") String teacher=cursor1.getString(cursor.getColumnIndex("c_teacher"));
classes.add(new Class_demo(subject,time,day,teacher));
}
db.close();
return classes;
}
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
MenuItem menuItem=menu.findItem(R.id.action_menu);
MenuItem close=menu.findItem(R.id.action_close);
MenuItem delete_class=menu.findItem(R.id.action_delete);
menuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
Intent intent = new Intent();
intent.setClass(ClassTable.this, AddClasses.class);
startActivity(intent);
return true;
}
});
close.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Intent intent = new Intent();
intent.setClass(ClassTable.this, MainActivity.class);
startActivity(intent);
return true;
}
});
delete_class.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Intent intent = new Intent();
intent.setClass(ClassTable.this, DeleteClasses.class);
startActivity(intent);
return true;
}
});
return super.onCreateOptionsMenu(menu);
}
/**
* Called when a touch event is dispatched to a view. This allows listeners to
* get a chance to respond before the target view.
*
* @param v The view the touch event has been dispatched to.
* @param event The MotionEvent object containing full information about
* the event.
* @return True if the listener has consumed the event, false otherwise.
*/
@Override
public boolean onTouch(View v, MotionEvent event) {
return false;
}
/**
* Called when a view has been clicked.
*
* @param v The view that was clicked.
*/
}

@ -0,0 +1,86 @@
package com.example.map;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.example.map.database.ClassDBHelper;
import com.example.map.enity.Class_demo;
public class DeleteClasses extends AppCompatActivity implements View.OnClickListener{
Button close_activity;//关闭按钮
Button delete_activity;//删除按钮
// Spinner selected_time;//选择上课时间
// Spinner selected_day;//选择哪天上课
EditText subject;//科目
EditText teacher;//老师名字
private ClassDBHelper mHelper;
public final String DB_NAME = "class.db";
public final String TABLE_NAME = "class_table";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.deleteclass);
delete_activity=findViewById(R.id.delete_activity);
// selected_time=findViewById(R.id.delete_selected_time);
// selected_day=findViewById(R.id.delete_selected_day);
subject=findViewById(R.id.delete_subject);
teacher=findViewById(R.id.delete_teacher);
//当点击dialog之外完成此activity
setFinishOnTouchOutside (true);
//关闭按钮操作
close_activity=(Button) findViewById(R.id.close_activity);
close_activity.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DeleteClasses.this.finish();
}
});
findViewById(R.id.delete_subject).setOnClickListener(this);
findViewById(R.id.delete_teacher).setOnClickListener(this);
findViewById(R.id.delete_activity).setOnClickListener(this);
}
protected void onStart() {
super.onStart();
// 获得数据库帮助器的实例
mHelper = ClassDBHelper.getInstance(this);
// 打开数据库帮助器的读写连接
mHelper.openWriteLink();
mHelper.openReadLink();
}
public void onClick(View v) {
String subject_=subject.getText().toString().trim();
String teacher_=teacher.getText().toString().trim();
// String time = selected_time.getSelectedItem().toString();
// String day = selected_day.getSelectedItem().toString();
Class_demo classes = null;
switch (v.getId()){
case R.id.close_activity:
Intent intent = new Intent(DeleteClasses.this, ClassTable.class);//跳转到注册界面
startActivity(intent);
finish();
break;
case R.id.delete_activity:
classes=new Class_demo(subject_,teacher_);
if (mHelper.delete(classes) > 0) {
Toast.makeText(this, "课表删除成功", Toast.LENGTH_SHORT).show();
}
break;
}
}
}

@ -0,0 +1,30 @@
package com.example.map;
import android.app.Application;
import com.baidu.mapapi.CoordType;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.common.BaiduMapSDKException;
public class DemoApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
//在使用SDK各组件之前初始化context信息传入ApplicationContext
SDKInitializer.setAgreePrivacy(this, true);
try {
// 在使用 SDK 各组间之前初始化 context 信息,传入 ApplicationContext
SDKInitializer.initialize(this);
} catch (BaiduMapSDKException e) {
}
//自4.3.0起百度地图SDK所有接口均支持百度坐标和国测局坐标用此方法设置您使用的坐标类型.
//包括BD09LL和GCJ02两种坐标默认是BD09LL坐标。
SDKInitializer.setCoordType(CoordType.BD09LL);
//开启地图的定位图层
// mBaiduMap.setMyLocationEnabled(true);
}
}

@ -0,0 +1,42 @@
package com.example.map;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Window;
import android.widget.TextView;
public class Detail extends Activity {
TextView time;
TextView clsNum;
TextView sub;
TextView teacher;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.press);
Intent intent = getIntent();
sub = findViewById(R.id.sub);
sub.setText(intent.getStringExtra("name"));
time = findViewById(R.id.time);
time.setText(intent.getStringExtra("day"));
clsNum = findViewById(R.id.clsNum);
clsNum.setText(intent.getStringExtra("time"));
teacher = findViewById(R.id.teacher);
teacher.setText(intent.getStringExtra("teacher"));
setFinishOnTouchOutside(true);
}
}

@ -0,0 +1,88 @@
package com.example.map;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.example.map.database.UserDBHelper;
import com.example.map.enity.User;
public class LogOut extends AppCompatActivity implements View.OnClickListener{
private EditText username,userpassword;
private String userName;
private UserDBHelper mHelper;
private SharedPreferences.Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_zhuxiao);
initView();//初始化界面
UserDBHelper userDBHelper = new UserDBHelper(this);
SharedPreferences sp = getSharedPreferences("user_mes", MODE_PRIVATE);
editor = sp.edit();
if(sp.getBoolean("flag",false)){
String user_read = sp.getString("user","");
String psw_read = sp.getString("psw","");
username.setText(user_read);
userpassword.setText(psw_read);
}
}
private void initView() {
//初始化控件
username = findViewById(R.id.zhuxiao_name);
userpassword = findViewById(R.id.zhuxiao_passwd);
Button btn_Login = findViewById(R.id.zhuxiao_queding);
Button tv_register = findViewById(R.id.zhuxiao_fanhui);
//设置点击事件监听器
btn_Login.setOnClickListener(this);
tv_register.setOnClickListener(this);
}
protected void onStart() {
super.onStart();
// 获得数据库帮助器的实例
mHelper = UserDBHelper.getInstance(this);
// 打开数据库帮助器的读写连接
mHelper.openWriteLink();
mHelper.openReadLink();
}
@Override
public void onClick(View v) {
String name=username.getText().toString().trim();
String password_=userpassword.getText().toString().trim();
User user=null;
switch (v.getId()){
case R.id.zhuxiao_fanhui:
Intent intent=new Intent(LogOut.this, UserScreen.class);
startActivity(intent);
finish();
break;
case R.id.zhuxiao_queding:
user=new User(name,password_);
if(name.isEmpty()&&password_.isEmpty()){
Toast.makeText(this,"请输入正确的用户名或密码",Toast.LENGTH_SHORT).show();
}
else{
if (mHelper.delete(user)>0){
Toast.makeText(this, "课表删除成功", Toast.LENGTH_SHORT).show();
Intent intent_=new Intent(LogOut.this,LoginScreen.class);
startActivity(intent_);
finish();
}
}
}
}
}

@ -0,0 +1,121 @@
package com.example.map;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.example.map.database.UserDBHelper;
import com.example.map.enity.User;
import com.example.map.util.ToastUtil;
import java.util.ArrayList;
/**
* implements View.OnClickListener
* onClickonCreate()
* onCreate()
*/
public class LoginScreen extends AppCompatActivity implements View.OnClickListener{
// private UserDBHelper userDBHelper;
private EditText username,userpassword;
private String userName;
private SharedPreferences.Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login_screen);//屏幕显示的布局
getSupportActionBar().hide();
initView();//初始化界面
UserDBHelper userDBHelper = new UserDBHelper(this);
SharedPreferences sp = getSharedPreferences("user_mes", MODE_PRIVATE);
editor = sp.edit();
if(sp.getBoolean("flag",false)){
String user_read = sp.getString("user","");
String psw_read = sp.getString("psw","");
username.setText(user_read);
userpassword.setText(psw_read);
}
}
private void initView() {
//初始化控件
username = findViewById(R.id.user_name);
userpassword = findViewById(R.id.passwd);
Button btn_Login = findViewById(R.id.Login_button);
Button tv_register = findViewById(R.id.zhuce_button);
//设置点击事件监听器
btn_Login.setOnClickListener(this);
tv_register.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.zhuce_button: //注册
Intent intent = new Intent(LoginScreen.this, Register.class);//跳转到注册界面
startActivity(intent);
finish();
break;
case R.id.Login_button:
String name = username.getText().toString().trim();
String password = userpassword.getText().toString().trim();
if (!TextUtils.isEmpty(name) && !TextUtils.isEmpty(password)) {
UserDBHelper userDBHelper = new UserDBHelper(this);
ArrayList<User> data = userDBHelper.getAllData();
boolean match = false;
for (int i = 0; i < data.size(); i++) {
User user = data.get(i);
if ((name.equals(user.getName()) && password.equals(user.getPassword()))) {
userName = user.getName();
match = true;
break;
} else {
match = false;
// Toast.makeText(this, "密码错误", Toast.LENGTH_SHORT).show();
}
}
if (match) {
ToastUtil.show(this,"登录成功");
Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();
Runnable target;
//用线程启动
Thread thread = new Thread(){
@Override
public void run(){
try {
sleep(2000);//2秒 模拟登录时间
String user_name = userName;
Intent intent1 = new Intent(LoginScreen.this, MainActivity.class);//设置自己跳转到成功的界面
//intent1.putExtra("user_name",user_name);
startActivity(intent1);
finish();
}catch (Exception e){
e.printStackTrace();
}
}
};
thread.start();//打开线程
} else {
Toast.makeText(this, "用户名或密码不正确,请重新输入", Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(this, "请输入你的用户名或密码", Toast.LENGTH_SHORT).show();
}
break;
}
}
}

@ -0,0 +1,765 @@
package com.example.map;
import android.Manifest;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import com.baidu.location.BDAbstractLocationListener;
import com.baidu.location.BDLocation;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.InfoWindow;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.Marker;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.map.OverlayOptions;
import com.baidu.mapapi.map.TextureMapView;
import com.baidu.mapapi.model.LatLng;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends Activity implements View.OnClickListener {
TextView locationInfo;
public LocationClient mLocationClient = null;
private MyLocationListener myListener = new MyLocationListener();
//显示地图
TextureMapView mMapView;
BaiduMap mBaiduMap = null;
boolean isFirstLocate = true;
private InfoWindow infoWindow;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//环境初始化
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
//这个是显示经纬度信息
//locationInfo = findViewById(R.id.locationInfo);
//添加弹窗
// findViewById(R.id.show).setOnClickListener(this);
LocationClient.setAgreePrivacy(true);
try {
mLocationClient = new LocationClient(getApplicationContext());
mLocationClient.registerLocationListener(new MyLocationListener());
mMapView = findViewById(R.id.bmapView);
mBaiduMap = mMapView.getMap();
mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
mBaiduMap.setMyLocationEnabled(true);//当前的定位
requestLocation();
//三个最基础的权限
List<String> PermissionList = new ArrayList<String>();
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED){
PermissionList.add(Manifest.permission.ACCESS_FINE_LOCATION);
}
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_PHONE_STATE)!= PackageManager.PERMISSION_GRANTED){
PermissionList.add(Manifest.permission.READ_PHONE_STATE);
}
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){
PermissionList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
}
if (!PermissionList.isEmpty()) {
String[] permissions = PermissionList.toArray(new String[PermissionList.size()]);
ActivityCompat.requestPermissions(MainActivity.this,permissions,1);
} else {
requestLocation();
}
} catch (Exception e) {
e.printStackTrace();
}
//控件选择
//按钮“我的”
Button button = findViewById(R.id.Myself);
button.setOnClickListener(new View.OnClickListener() {
@Override
//按钮点击后执行下面回调方法
public void onClick(View v) {
Intent intent = new Intent();
//setclass显示意图直接指定来源和目的
intent.setClass(getApplicationContext(), me.class);//跳转的目的地
startActivity(intent);
}
});
button = findViewById(R.id.classtable);
button.setOnClickListener(new View.OnClickListener() {
@Override
//按钮点击后执行下面回调方法
public void onClick(View v) {
Intent intent = new Intent();
//setclass显示意图直接指定来源和目的
intent.setClass(getApplicationContext(), ClassTable.class);//跳转的目的地
startActivity(intent);
}
});
button = findViewById(R.id.show);
button.setOnClickListener(new View.OnClickListener() {
@Override
//按钮点击后执行下面回调方法
public void onClick(View v) {
Intent intent = new Intent();
//setclass显示意图直接指定来源和目的
intent.setClass(getApplicationContext(), BNaviMainActivity.class);//跳转的目的地
startActivity(intent);
}
});
// //定义Maker坐标点--南苑
// //以下是南苑的坐标点
// //南1教学楼
// LatLng point = new LatLng(39.112298,117.358615);
// Bundle mBundle = new Bundle();//这一行是后面的点击事件
//
// //构建Marker图标
// BitmapDescriptor bitmap = BitmapDescriptorFactory
// .fromResource(R.drawable.school);
// //构建MarkerOption用于在地图上添加Marker
// OverlayOptions option = new MarkerOptions()
// .position(point) //必传参数
// .icon(bitmap) //必传参数
// .draggable(true)
// //设置平贴地图,在地图中双指下拉查看效果
// .flat(true)
// .alpha(0.5f)
// //后面的点击事件
// .extraInfo(mBundle);
// //在地图上添加Marker并显示
// mBaiduMap.addOverlay(option);
// mBaiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() {
// //marker被点击时回调的方法
// //若响应点击事件返回true否则返回false
// //默认返回false
// @Override
// public boolean onMarkerClick(Marker marker) {
// Bundle extraInfo = marker.getExtraInfo(); //通过这个方法获取到,你前面塞的值
// Toast.makeText(MainActivity.this, "南1教学楼", Toast.LENGTH_SHORT).show();
// InfoWindow mInfoWindow = new InfoWindow(button, point, -47);
// mBaiduMap.showInfoWindow(mInfoWindow);
// return false;
// }
// });
//定义坐标
List<LatLng> latLngList = new ArrayList<>();
List<OverlayOptions> optionsList = new ArrayList<>();
mBaiduMap.clear();//先清除 地图上的覆盖物
//定义Maker坐标点
LatLng point = new LatLng(39.112298,117.358615);
//南院教学楼
latLngList.add(new LatLng(39.112193,117.359531));//1
latLngList.add(new LatLng(39.112759,117.358732));//2
latLngList.add(new LatLng(39.111363,117.359266));//3
latLngList.add(new LatLng(39.110474,117.359217));//4
latLngList.add(new LatLng(39.108321,117.360066));//5
latLngList.add(new LatLng(39.106142,117.363084));//空A
latLngList.add(new LatLng(39.106404,117.363194));//空B
latLngList.add(new LatLng(39.10696,117.363457));//空C
latLngList.add(new LatLng(39.10696,117.363457));//航海科技大厦
latLngList.add(new LatLng(39.107646,117.362559));//电子信息与自动化学
//北院教学楼
latLngList.add(new LatLng(39.117437,117.35455));//北1
latLngList.add(new LatLng(39.117755,117.353755));//北2
latLngList.add(new LatLng(39.11786,117.354846));//北3
latLngList.add(new LatLng(39.11672,117.356387));//北4
latLngList.add(new LatLng(39.116557,117.355909));//北6
latLngList.add(new LatLng(39.11724,117.356567));//北8
latLngList.add(new LatLng(39.12175,117.356234));//北14
latLngList.add(new LatLng(39.1228,117.358565));//北16
latLngList.add(new LatLng(39.118786,117.36109));//北19
latLngList.add(new LatLng(39.117056,117.361164));//北20
latLngList.add(new LatLng(39.115893,117.361754));//北21
latLngList.add(new LatLng(39.115432,117.361703));//北22
latLngList.add(new LatLng(39.115987,117.360279));//北23
latLngList.add(new LatLng(39.116167,117.35932));//北24
latLngList.add(new LatLng(39.12252,117.35663));//北25
//南院宿舍楼
latLngList.add(new LatLng(39.109831,117.359846));//1
latLngList.add(new LatLng(39.109505,117.359846));//2
latLngList.add(new LatLng(39.109831,117.360394));//3
latLngList.add(new LatLng(39.109505,117.360394));//4
latLngList.add(new LatLng(39.109131,117.359846));//5
latLngList.add(new LatLng(39.108795,117.359846));//6
latLngList.add(new LatLng(39.109131,117.360394));//7
latLngList.add(new LatLng(39.108795,117.360394));//8
latLngList.add(new LatLng(39.109831,117.360977));//9
latLngList.add(new LatLng(39.109505,117.360977));//10
latLngList.add(new LatLng(39.109131,117.360977));//11
latLngList.add(new LatLng(39.108795,117.360977));//12
latLngList.add(new LatLng(39.109137,117.359046));//13
latLngList.add(new LatLng(39.10885,117.359015));//14
latLngList.add(new LatLng(39.109928,117.361656));//15
latLngList.add(new LatLng(39.109548,117.361793));//16
latLngList.add(new LatLng(39.109214,117.361681));//17
latLngList.add(new LatLng(39.10923,117.362534));//18
latLngList.add(new LatLng(39.108878,117.362538));//19
latLngList.add(new LatLng(39.108294,117.358777));//20
latLngList.add(new LatLng(39.108005,117.358797));//21
latLngList.add(new LatLng(39.107442,117.358763));//22
latLngList.add(new LatLng(39.107191,117.358739));//23
//北院宿舍楼
latLngList.add(new LatLng(39.11919,117.354523));//1
latLngList.add(new LatLng(39.119435,117.354658));//2
latLngList.add(new LatLng(39.119659,117.354842));//3
latLngList.add(new LatLng(39.119953,117.354981));//4
latLngList.add(new LatLng(39.120177,117.35512));//5
latLngList.add(new LatLng(39.121296,117.355713));//6
latLngList.add(new LatLng(39.121107,117.357555));//7
latLngList.add(new LatLng(39.121286,117.357802));//8
latLngList.add(new LatLng(39.121496,117.357968));//9
latLngList.add(new LatLng(39.121814,117.358305));//10
latLngList.add(new LatLng(39.120938,117.358655));//11
latLngList.add(new LatLng(39.121318,117.358718));//12
latLngList.add(new LatLng(39.11859,117.35524));//13
latLngList.add(new LatLng(39.116535,117.357445));//14
latLngList.add(new LatLng(39.116575,117.357335));//17
latLngList.add(new LatLng(39.116575,117.357335));//18
latLngList.add(new LatLng(39.116575,117.357335));//19
latLngList.add(new LatLng(39.116575,117.357335));//20
latLngList.add(new LatLng(39.116575,117.357335));//21
latLngList.add(new LatLng(39.116575,117.357335));//23
latLngList.add(new LatLng(39.118086,117.358226));//24
latLngList.add(new LatLng(39.117663,117.357941));//25
latLngList.add(new LatLng(39.11714,117.35775));//26
latLngList.add(new LatLng(39.1169,117.357535));//27
//南院食堂
latLngList.add(new LatLng(39.109673,117.359073));//1
latLngList.add(new LatLng(39.108135,117.357461));//2
latLngList.add(new LatLng(39.109613,117.357759));//3
//北院食堂
latLngList.add(new LatLng(39.117583,117.355635));//1
latLngList.add(new LatLng(39.11834,117.357357));//2
latLngList.add(new LatLng(39.119609,117.355716));//3
latLngList.add(new LatLng(39.120747,117.358574));//5
latLngList.add(new LatLng(39.119232,117.355929));//清真
//构建MarkerOption用于在地图上添加Marker
int north_school = 1;//北院教学楼
int south_dormitory = 1;//南院宿舍楼
int north_dormitory = 1;//北院宿舍楼
int south_canteen = 1;//南院食堂
int north_canteen = 1;//北院院食堂
for (int i = 0; i < 75; i++) {
Bundle mBundle = new Bundle(); //用来传值 也可以识别点击的是哪一个marker
if ( i<10 ) { //南院教学楼
//构建Marker图标
BitmapDescriptor bitmap = BitmapDescriptorFactory
.fromResource(R.drawable.school);
i = i+1;
mBundle.putString("title", "南" + i + "教学楼");
i = i-1;
mBundle.putDouble("lat", latLngList.get(i).latitude);
mBundle.putDouble("lng", latLngList.get(i).longitude);
OverlayOptions option = new MarkerOptions()
.extraInfo(mBundle) //这里bundle 跟maker关联上
// .title("lat="+latLngList.get(i).latitude+"---lng="+latLngList.get(i).longitude) //也可以用title但是官方提示已经过时了
.position(latLngList.get(i)) //设置经纬度
.icon(bitmap);//设置marker图标
optionsList.add(option);
} else if ( i<25 ){ //北院教学楼
//构建Marker图标
BitmapDescriptor bitmap = BitmapDescriptorFactory
.fromResource(R.drawable.school);
mBundle.putString("title", "北" + north_school + "教学楼");
mBundle.putDouble("lat", latLngList.get(i).latitude);
mBundle.putDouble("lng", latLngList.get(i).longitude);
north_school = north_school + 1;
OverlayOptions option = new MarkerOptions()
.extraInfo(mBundle) //这里bundle 跟maker关联上
// .title("lat="+latLngList.get(i).latitude+"---lng="+latLngList.get(i).longitude) //也可以用title但是官方提示已经过时了
.position(latLngList.get(i)) //设置经纬度
.icon(bitmap);//设置marker图标
optionsList.add(option);
} else if ( i<48 ){ //南院宿舍楼
//构建Marker图标
BitmapDescriptor bitmap = BitmapDescriptorFactory
.fromResource(R.drawable.dormitory);
mBundle.putString("title", "南" + south_dormitory + "宿舍楼");
mBundle.putDouble("lat", latLngList.get(i).latitude);
mBundle.putDouble("lng", latLngList.get(i).longitude);
south_dormitory = south_dormitory + 1;
OverlayOptions option = new MarkerOptions()
.extraInfo(mBundle) //这里bundle 跟maker关联上
// .title("lat="+latLngList.get(i).latitude+"---lng="+latLngList.get(i).longitude) //也可以用title但是官方提示已经过时了
.position(latLngList.get(i)) //设置经纬度
.icon(bitmap);//设置marker图标
optionsList.add(option);
} else if ( i < 73){ //北院宿舍楼
//构建Marker图标
BitmapDescriptor bitmap = BitmapDescriptorFactory
.fromResource(R.drawable.dormitory);
mBundle.putString("title", "北" + north_dormitory + "宿舍楼");
mBundle.putDouble("lat", latLngList.get(i).latitude);
mBundle.putDouble("lng", latLngList.get(i).longitude);
north_dormitory = north_dormitory + 1;
OverlayOptions option = new MarkerOptions()
.extraInfo(mBundle) //这里bundle 跟maker关联上
// .title("lat="+latLngList.get(i).latitude+"---lng="+latLngList.get(i).longitude) //也可以用title但是官方提示已经过时了
.position(latLngList.get(i)) //设置经纬度
.icon(bitmap);//设置marker图标
optionsList.add(option);
} else if (i<76) {
//构建Marker图标
BitmapDescriptor bitmap = BitmapDescriptorFactory
.fromResource(R.drawable.canteen);
mBundle.putString("title", "南" + south_canteen + "食堂");
mBundle.putDouble("lat", latLngList.get(i).latitude);
mBundle.putDouble("lng", latLngList.get(i).longitude);
south_canteen = south_canteen + 1;
OverlayOptions option = new MarkerOptions()
.extraInfo(mBundle) //这里bundle 跟maker关联上
// .title("lat="+latLngList.get(i).latitude+"---lng="+latLngList.get(i).longitude) //也可以用title但是官方提示已经过时了
.position(latLngList.get(i)) //设置经纬度
.icon(bitmap);//设置marker图标
optionsList.add(option);
} else if (i<81) {
//构建Marker图标
BitmapDescriptor bitmap = BitmapDescriptorFactory
.fromResource(R.drawable.canteen);
mBundle.putString("title", "北" + north_canteen + "食堂");
mBundle.putDouble("lat", latLngList.get(i).latitude);
mBundle.putDouble("lng", latLngList.get(i).longitude);
north_canteen = north_canteen + 1;
OverlayOptions option = new MarkerOptions()
.extraInfo(mBundle) //这里bundle 跟maker关联上
// .title("lat="+latLngList.get(i).latitude+"---lng="+latLngList.get(i).longitude) //也可以用title但是官方提示已经过时了
.position(latLngList.get(i)) //设置经纬度
.icon(bitmap);//设置marker图标
optionsList.add(option);
}
}
//在地图上添加Marker并显示
// mBaiduMap.addOverlay(option); 添加一个marker使用这个
mBaiduMap.addOverlays(optionsList); //添加marker list 的话,用这个
mBaiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
Bundle extraInfo = marker.getExtraInfo(); //通过这个方法获取到,你前面塞的值
String title = extraInfo.getString("title");
double lat = extraInfo.getDouble("lat");
double lng = extraInfo.getDouble("lng");
Toast.makeText(MainActivity.this, title + " " + lat + " " + lng, Toast.LENGTH_SHORT).show();
return false;
}
});
// //南二教学楼
// LatLng point_south_two_school = new LatLng(39.112193,117.359531);
// BitmapDescriptor bitmap_south_two_school = BitmapDescriptorFactory
// .fromResource(R.drawable.school);
// OverlayOptions option_south_two_school = new MarkerOptions()
// .position(point_south_two_school)
// .icon(bitmap_south_two_school)
// .draggable(true)
// .flat(true)
// .alpha(0.5f);
// mBaiduMap.addOverlay(option_south_two_school);
//
//
//
// //南三教学楼
// LatLng point_south_three_school = new LatLng(39.111363,117.359266);
// BitmapDescriptor bitmap_south_three_school = BitmapDescriptorFactory
// .fromResource(R.drawable.school);
// OverlayOptions option_south_three_school = new MarkerOptions()
// .position(point_south_three_school)
// .icon(bitmap_south_three_school)
// .draggable(true)
// .flat(true)
// .alpha(0.5f);
// mBaiduMap.addOverlay(option_south_three_school);
//
// //南四教学楼
// LatLng point_south_four_school = new LatLng(39.110474,117.359217);
// BitmapDescriptor bitmap_south_four_school = BitmapDescriptorFactory
// .fromResource(R.drawable.school);
// OverlayOptions option_south_four_school = new MarkerOptions()
// .position(point_south_four_school)
// .icon(bitmap_south_four_school)
// .draggable(true)
// .flat(true)
// .alpha(0.5f);
// mBaiduMap.addOverlay(option_south_four_school);
//
// //南五教学楼
// LatLng point_south_five_school = new LatLng(39.108553,117.360111);
// BitmapDescriptor bitmap_south_five_school = BitmapDescriptorFactory
// .fromResource(R.drawable.school);
// OverlayOptions option_south_five_school = new MarkerOptions()
// .position(point_south_five_school)
// .icon(bitmap_south_five_school)
// .draggable(true)
// .flat(true)
// .alpha(0.5f);
// mBaiduMap.addOverlay(option_south_five_school);
//
// //南一宿舍
// LatLng point_south_one_domitory = new LatLng(39.109831,117.359846);
// BitmapDescriptor bitmap_south_one_domitory = BitmapDescriptorFactory
// .fromResource(R.drawable.dormitory);
// OverlayOptions option_south_one_domitory = new MarkerOptions()
// .position(point_south_one_domitory)
// .icon(bitmap_south_one_domitory)
// .draggable(true)
// .flat(true)
// .alpha(0.5f);
// mBaiduMap.addOverlay(option_south_one_domitory);
//
// //南二宿舍
// LatLng point_south_two_domitory = new LatLng(39.109505,117.359846);
// BitmapDescriptor bitmap_south_two_domitory = BitmapDescriptorFactory
// .fromResource(R.drawable.dormitory);
// OverlayOptions option_south_two_domitory = new MarkerOptions()
// .position(point_south_two_domitory)
// .icon(bitmap_south_two_domitory)
// .draggable(true)
// .flat(true)
// .alpha(0.5f);
// mBaiduMap.addOverlay(option_south_two_domitory);
//
// //南三宿舍
// LatLng point_south_three_domitory = new LatLng(39.109831,117.360394);
// BitmapDescriptor bitmap_south_three_domitory = BitmapDescriptorFactory
// .fromResource(R.drawable.dormitory);
// OverlayOptions option_south_three_domitory = new MarkerOptions()
// .position(point_south_three_domitory)
// .icon(bitmap_south_three_domitory)
// .draggable(true)
// .flat(true)
// .alpha(0.5f);
// mBaiduMap.addOverlay(option_south_three_domitory);
//
// //南四宿舍
// LatLng point_south_four_domitory = new LatLng(39.109505,117.360394);
// BitmapDescriptor bitmap_south_four_domitory = BitmapDescriptorFactory
// .fromResource(R.drawable.dormitory);
// OverlayOptions option_south_four_domitory = new MarkerOptions()
// .position(point_south_four_domitory)
// .icon(bitmap_south_four_domitory)
// .draggable(true)
// .flat(true)
// .alpha(0.5f);
// mBaiduMap.addOverlay(option_south_four_domitory);
//
// //南五宿舍
// LatLng point_south_five_domitory = new LatLng(39.109131,117.359846);
// BitmapDescriptor bitmap_south_five_domitory = BitmapDescriptorFactory
// .fromResource(R.drawable.dormitory);
// OverlayOptions option_south_five_domitory = new MarkerOptions()
// .position(point_south_five_domitory)
// .icon(bitmap_south_five_domitory)
// .draggable(true)
// .flat(true)
// .alpha(0.5f);
// mBaiduMap.addOverlay(option_south_five_domitory);
//
// //南六宿舍
// LatLng point_south_six_domitory = new LatLng(39.108795,117.359846);
// BitmapDescriptor bitmap_south_six_domitory = BitmapDescriptorFactory
// .fromResource(R.drawable.dormitory);
// OverlayOptions option_south_six_domitory = new MarkerOptions()
// .position(point_south_six_domitory)
// .icon(bitmap_south_six_domitory)
// .draggable(true)
// .flat(true)
// .alpha(0.5f);
// mBaiduMap.addOverlay(option_south_six_domitory);
//
// //南七宿舍
// LatLng point_south_seven_domitory = new LatLng(39.109131,117.360394);
// BitmapDescriptor bitmap_south_seven_domitory = BitmapDescriptorFactory
// .fromResource(R.drawable.dormitory);
// OverlayOptions option_south_seven_domitory = new MarkerOptions()
// .position(point_south_seven_domitory)
// .icon(bitmap_south_seven_domitory)
// .draggable(true)
// .flat(true)
// .alpha(0.5f);
// mBaiduMap.addOverlay(option_south_seven_domitory);
//
// //南八宿舍
// LatLng point_south_eight_domitory = new LatLng(39.108795,117.360394);
// BitmapDescriptor bitmap_south_eight_domitory = BitmapDescriptorFactory
// .fromResource(R.drawable.dormitory);
// OverlayOptions option_south_eight_domitory = new MarkerOptions()
// .position(point_south_eight_domitory)
// .icon(bitmap_south_eight_domitory)
// .draggable(true)
// .flat(true)
// .alpha(0.5f);
// mBaiduMap.addOverlay(option_south_eight_domitory);
//
// //南九宿舍
// LatLng point_south_nine_domitory = new LatLng(39.109831,117.360977);
// BitmapDescriptor bitmap_south_nine_domitory = BitmapDescriptorFactory
// .fromResource(R.drawable.dormitory);
// OverlayOptions option_south_nine_domitory = new MarkerOptions()
// .position(point_south_nine_domitory)
// .icon(bitmap_south_nine_domitory)
// .draggable(true)
// .flat(true)
// .alpha(0.5f);
// mBaiduMap.addOverlay(option_south_nine_domitory);
//
// //南十宿舍
// LatLng point_south_ten_domitory = new LatLng(39.109505,117.360977);
// BitmapDescriptor bitmap_south_ten_domitory = BitmapDescriptorFactory
// .fromResource(R.drawable.dormitory);
// OverlayOptions option_south_ten_domitory = new MarkerOptions()
// .position(point_south_ten_domitory)
// .icon(bitmap_south_ten_domitory)
// .draggable(true)
// .flat(true)
// .alpha(0.5f);
// mBaiduMap.addOverlay(option_south_ten_domitory);
//
// //南十一宿舍
// LatLng point_south_eleven_domitory = new LatLng(39.109131,117.360977);
// BitmapDescriptor bitmap_south_eleven_domitory = BitmapDescriptorFactory
// .fromResource(R.drawable.dormitory);
// OverlayOptions option_south_eleven_domitory = new MarkerOptions()
// .position(point_south_eleven_domitory)
// .icon(bitmap_south_eleven_domitory)
// .draggable(true)
// .flat(true)
// .alpha(0.5f);
// mBaiduMap.addOverlay(option_south_eleven_domitory);
//
// //南十二宿舍
// LatLng point_south_twelve_domitory = new LatLng(39.108795,117.360977);
// BitmapDescriptor bitmap_south_twelve_domitory = BitmapDescriptorFactory
// .fromResource(R.drawable.dormitory);
// OverlayOptions option_south_twelve_domitory = new MarkerOptions()
// .position(point_south_twelve_domitory)
// .icon(bitmap_south_twelve_domitory)
// .draggable(true)
// .flat(true)
// .alpha(0.5f);
// mBaiduMap.addOverlay(option_south_twelve_domitory);
//
// //南十三宿舍
// LatLng point_south_thirteen_domitory = new LatLng(39.109134,117.359037);
// BitmapDescriptor bitmap_south_thirteen_domitory = BitmapDescriptorFactory
// .fromResource(R.drawable.dormitory);
// OverlayOptions option_south_thirteen_domitory = new MarkerOptions()
// .position(point_south_thirteen_domitory)
// .icon(bitmap_south_thirteen_domitory)
// .draggable(true)
// .flat(true)
// .alpha(0.5f);
// mBaiduMap.addOverlay(option_south_thirteen_domitory);
//
// //南14宿舍
// LatLng point_south_fourteen_domitory = new LatLng(39.108809,117.359037);
// BitmapDescriptor bitmap_south_fourteen_domitory = BitmapDescriptorFactory
// .fromResource(R.drawable.dormitory);
// OverlayOptions option_south_fourteen_domitory = new MarkerOptions()
// .position(point_south_fourteen_domitory)
// .icon(bitmap_south_fourteen_domitory)
// .draggable(true)
// .flat(true)
// .alpha(0.5f);
// mBaiduMap.addOverlay(option_south_fourteen_domitory);
//南15宿舍
LatLng point_south_fifteen_domitory = new LatLng(39.109131,117.359846);
BitmapDescriptor bitmap_south_fifteen_domitory = BitmapDescriptorFactory
.fromResource(R.drawable.dormitory);
OverlayOptions option_south_fifteen_domitory = new MarkerOptions()
.position(point_south_fifteen_domitory)
.icon(bitmap_south_fifteen_domitory)
.draggable(true)
.flat(true)
.alpha(0.5f);
mBaiduMap.addOverlay(option_south_fifteen_domitory);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case 1:
if (grantResults.length>0) {
for (int result:grantResults) {
if (result !=PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this,"必须统一所有的权限才能使用本程序",Toast.LENGTH_SHORT).show();
finish();
return;
}
}
requestLocation();
} else {
Toast.makeText(this,"发生未知错误",Toast.LENGTH_SHORT).show();
finish();
}
break;
case 2:
}
}
private void requestLocation() {
initLocation();//对监听的地理位置的参数
mLocationClient.start();
}
private void initLocation() {
//通过LocationClientOption设置LocationClient相关参数
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true); // 打开gps
option.setCoorType("bd09ll"); // 设置坐标类型
option.setScanSpan(1000);
option.setLocationMode(LocationClientOption.LocationMode.Battery_Saving);//设置的高精度模式
option.setLocationNotify(true);//设置是否当GPS有效时按照1s/1次频率输出GPS结果
option.setIsNeedAddress(true);//显示地理位置信息;
//设置locationClientOption
mLocationClient.setLocOption(option);
}
@Override
public void onPointerCaptureChanged(boolean hasCapture) {
super.onPointerCaptureChanged(hasCapture);
}
private class MyLocationListener extends BDAbstractLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
navigateTo(location);
// 这个是显示信息
// StringBuilder currentPosition = new StringBuilder();
// currentPosition.append("纬度:").append(location.getLongitude()).append("\n");
// currentPosition.append("经度:").append(location.getLatitude()).append("\n");
// currentPosition.append("国家:").append(location.getCountry()).append("\n");
// currentPosition.append("省:").append(location.getProvince()).append("\n");
// currentPosition.append("市:").append(location.getCity()).append("\n");
// currentPosition.append("区:").append(location.getDistrict()).append("\n");
// currentPosition.append("村镇:").append(location.getTown()).append("\n");
// currentPosition.append("街道:").append(location.getStreet()).append("\n");
// currentPosition.append("地址:").append(location.getAddrStr()).append("\n");
// currentPosition.append("定位方式:");
// if (location.getLocType()==BDLocation.TypeGpsLocation) {
// currentPosition.append("GPS");
// } else if (location.getLocType()==BDLocation.TypeNetWorkLocation) {
// currentPosition.append("网络");
// }
// locationInfo.setText(currentPosition);
}
}
//缩放?
private void navigateTo(BDLocation location) {
if (isFirstLocate) {
LatLng ll = new LatLng(location.getLatitude(),location.getLongitude());
MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(ll);
mBaiduMap.animateMapStatus(update);//更新
update = MapStatusUpdateFactory.zoomTo(16f);
mBaiduMap.animateMapStatus(update);
isFirstLocate = false;
}
MyLocationData.Builder locationBuilder = new MyLocationData.Builder();
locationBuilder.longitude(location.getLongitude());
locationBuilder.latitude(location.getLatitude());
MyLocationData locationData = locationBuilder.build();
mBaiduMap.setMyLocationData(locationData);
}
@Override
public void onClick(View view) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("展示");
builder.setMessage("12345");
builder.setPositiveButton("关闭", (dialogInterface, i) -> {
});
AlertDialog dialog= builder.create();
dialog.show();
}
//相应的生命周期
@Override
protected void onDestroy() {
super.onDestroy();
mMapView.onDestroy();
mBaiduMap.setMyLocationEnabled(false);
mLocationClient.stop();
}
@Override
protected void onResume() {
super.onResume();
//在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
//在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
mMapView.onPause();
}
}

@ -0,0 +1,28 @@
package com.example.map;
import com.baidu.location.BDAbstractLocationListener;
import com.baidu.location.BDLocation;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.map.TextureMapView;
//构造地图数据
//我们通过继承抽象类BDAbstractListener并重写其onReceieveLocation方法来获取定位数据并将其传给MapView
public class MyLocationListener extends BDAbstractLocationListener {
private TextureMapView mMapView = null;
private BaiduMap mBaiduMap;
public void onReceiveLocation(BDLocation location) {
//mapView 销毁后不在处理新接收的位置
if (location == null || mMapView == null){
return;
}
MyLocationData locData = new MyLocationData.Builder()
.accuracy(location.getRadius())
// 此处设置开发者获取到的方向信息顺时针0-360
.direction(location.getDirection()).latitude(location.getLatitude())
.longitude(location.getLongitude()).build();
mBaiduMap.setMyLocationData(locData);
}
}

@ -0,0 +1,78 @@
package com.example.map;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
import com.example.map.database.UserDBHelper;
import com.example.map.enity.User;
import com.example.map.util.ToastUtil;
public class Register extends AppCompatActivity implements View.OnClickListener{
private EditText et_user_name;//用户账号
private EditText password;//用户密码
private UserDBHelper mHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
et_user_name = findViewById(R.id.register_username);
password = findViewById(R.id.register_password);
//跳转事件
Button button =findViewById(R.id.back_button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent();
intent.setClass(getApplicationContext(),LoginScreen.class);//跳转的目的地
startActivity(intent);
finish();
}
});
//监听事件
findViewById(R.id.register2_button).setOnClickListener(this);
findViewById(R.id.register_username).setOnClickListener(this);
findViewById(R.id.register_password).setOnClickListener(this);
}
protected void onStart() {
super.onStart();
// 获得数据库帮助器的实例
mHelper = UserDBHelper.getInstance(this);
// 打开数据库帮助器的读写连接
mHelper.openWriteLink();
mHelper.openReadLink();
}
@Override
public void onClick(View v) {
String name=et_user_name.getText().toString().trim();
String password_=password.getText().toString().trim();
User user = null;
switch (v.getId()){
case R.id.register2_button:
user=new User(name, password_);
if (mHelper.insert(user) > 0) {
ToastUtil.show(this, "注册成功");
Intent intent=new Intent(Register.this,LoginScreen.class);
startActivity(intent);
finish();
}
break;
}
}
// protected void onStop() {
// super.onStop();
// // 关闭数据库连接
// mHelper.closeLink();
// }
}

@ -0,0 +1,61 @@
package com.example.map;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class UserScreen extends AppCompatActivity implements View.OnClickListener{
private TextView tv_alert;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_me);
//按钮点击后执行下面回调方法
Button button=findViewById(R.id.map_);//跳转源按钮
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent();
intent.setClass(getApplicationContext(),MainActivity.class);//跳转的目的地
startActivity(intent);
}
});
Button button1=findViewById(R.id.zhuxiao);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent();
intent.setClass(getApplicationContext(), LogOut.class);//跳转的目的地
startActivity(intent);
}
});
//按钮点击后执行下面回调方法
Button button_=findViewById(R.id.exit);
findViewById(R.id.exit).setOnClickListener(this);
button_.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent();
intent.setClass(getApplicationContext(),LoginScreen.class);//跳转的目的地
startActivity(intent);
}
});
}
/**
* Called when a view has been clicked.
*
* @param v The view that was clicked.
*/
@Override
public void onClick(View v) {
}
}

@ -0,0 +1,172 @@
/*
* Copyright (C) 2017 Baidu, Inc. All Rights Reserved.
*/
package com.example.map;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import com.baidu.mapapi.walknavi.WalkNavigateHelper;
import com.baidu.mapapi.walknavi.adapter.IWNaviStatusListener;
import com.baidu.mapapi.walknavi.adapter.IWRouteGuidanceListener;
import com.baidu.mapapi.walknavi.adapter.IWTTSPlayer;
import com.baidu.mapapi.walknavi.model.IWRouteIconInfo;
import com.baidu.mapapi.walknavi.model.RouteGuideKind;
import com.baidu.platform.comapi.walknavi.WalkNaviModeSwitchListener;
import com.baidu.platform.comapi.walknavi.widget.ArCameraView;
public class WNaviGuideActivity extends Activity {
private final static String TAG = WNaviGuideActivity.class.getSimpleName();
private WalkNavigateHelper mNaviHelper;
@Override
protected void onDestroy() {
super.onDestroy();
mNaviHelper.quit();
}
@Override
protected void onResume() {
super.onResume();
mNaviHelper.resume();
}
@Override
protected void onPause() {
super.onPause();
mNaviHelper.pause();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mNaviHelper = WalkNavigateHelper.getInstance();
try {
View view = mNaviHelper.onCreate(WNaviGuideActivity.this);
if (view != null) {
setContentView(view);
}
} catch (Exception e) {
e.printStackTrace();
}
mNaviHelper.setWalkNaviStatusListener(new IWNaviStatusListener() {
@Override
public void onWalkNaviModeChange(int mode, WalkNaviModeSwitchListener listener) {
Log.d(TAG, "onWalkNaviModeChange : " + mode);
mNaviHelper.switchWalkNaviMode(WNaviGuideActivity.this, mode, listener);
}
@Override
public void onNaviExit() {
Log.d(TAG, "onNaviExit");
}
});
mNaviHelper.setTTsPlayer(new IWTTSPlayer() {
@Override
public int playTTSText(final String s, boolean b) {
Log.d(TAG, "tts: " + s);
return 0;
}
});
boolean startResult = mNaviHelper.startWalkNavi(WNaviGuideActivity.this);
Log.e(TAG, "startWalkNavi result : " + startResult);
mNaviHelper.setRouteGuidanceListener(this, new IWRouteGuidanceListener() {
@Override
public void onRouteGuideIconInfoUpdate(IWRouteIconInfo iwRouteIconInfo) {
}
@Override
public void onRouteGuideIconUpdate(Drawable drawable) {
}
@Override
public void onRouteGuideKind(RouteGuideKind routeGuideKind) {
}
@Override
public void onRoadGuideTextUpdate(CharSequence charSequence, CharSequence charSequence1) {
}
@Override
public void onRemainDistanceUpdate(CharSequence charSequence) {
}
@Override
public void onRemainTimeUpdate(CharSequence charSequence) {
}
@Override
public void onGpsStatusChange(CharSequence charSequence, Drawable drawable) {
}
@Override
public void onRouteFarAway(CharSequence charSequence, Drawable drawable) {
}
@Override
public void onRoutePlanYawing(CharSequence charSequence, Drawable drawable) {
}
@Override
public void onReRouteComplete() {
}
@Override
public void onArriveDest() {
}
@Override
public void onIndoorEnd(Message message) {
}
@Override
public void onFinalEnd(Message message) {
}
@Override
public void onVibrate() {
}
});
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == ArCameraView.WALK_AR_PERMISSION) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_DENIED) {
Toast.makeText(WNaviGuideActivity.this, "没有相机权限,请打开后重试", Toast.LENGTH_SHORT).show();
} else if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
mNaviHelper.startCameraAndSetMapView(WNaviGuideActivity.this);
}
}
}
}

@ -0,0 +1,120 @@
package com.example.map.database;
import android.annotation.SuppressLint;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import androidx.annotation.Nullable;
import com.example.map.enity.Class_demo;
import java.util.ArrayList;
public class ClassDBHelper extends SQLiteOpenHelper {
private static final String DB_NAME="class.db";
private static final String ClassTABLE_NAME="class_table";
private static final int DB_VERSION=1;
private static ClassDBHelper mHelper = null;
private SQLiteDatabase mRDB=null;//用来读
private SQLiteDatabase mWDB=null;//用来写
public SQLiteDatabase db;
//参数为上下文context所谓上下文就是这个类所在包的路径
public ClassDBHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
db = getReadableDatabase();
}
public ClassDBHelper(@Nullable Context context,
@Nullable String name,
@Nullable SQLiteDatabase.CursorFactory factory,
int version) {
super(context, name, factory, version);
}
//利用单例模式获取数据库帮助器的唯一实例
public static ClassDBHelper getInstance(Context context){
if(mHelper==null){
mHelper=new ClassDBHelper(context);
}
return mHelper;
}
//打开数据库的读连接
public SQLiteDatabase openReadLink(){
if (mRDB==null || !mRDB.isOpen()){
mRDB= mHelper.getReadableDatabase();
}
return mRDB;
}
//打开数据库的写连接
public SQLiteDatabase openWriteLink(){
if (mWDB==null || !mWDB.isOpen()){
mWDB= mHelper.getWritableDatabase();
}
return mWDB;
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql="CREATE TABLE IF NOT EXISTS "+ ClassTABLE_NAME + " (" +
"c_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"+
" c_subject VARCHAR NOT NULL,"+
" c_time VARCHAR NOT NULL,"+
" c_day VARCHAR NOT NULL,"+
" c_teacher VARCHAR NOT NULL);";
ContentValues values=new ContentValues();
values.put("c_subject","0");
values.put("c_time","0");
values.put("c_day","0");
values.put("c_teacher","0");
//插入id 1-36 个课程数据,以便添加课程
for (int i = 1; i < 37; i++) {
values.put("c_id", i);
db.insert(ClassTABLE_NAME, "", values);
}
db.execSQL(sql);
}
public long insert(Class_demo classes){
ContentValues values=new ContentValues();
values.put("c_subject",classes.getC_subject());
values.put("c_time",classes.getC_time());
values.put("c_day",classes.getC_day());
values.put("c_teacher",classes.getC_teacher());
return mWDB.insert(ClassTABLE_NAME,null,values);
}
public long delete(Class_demo classes){
String subject=classes.getC_subject();
String teacher=classes.getC_teacher();
return mWDB.delete(ClassTABLE_NAME,"c_subject=? and c_teacher=?",new String[]{subject,teacher});
}
public ArrayList<Class_demo> getAllData(){
ArrayList<Class_demo> list = new ArrayList<>();
@SuppressLint("Recycle") Cursor cursor = db.query(ClassTABLE_NAME,null,null,null,null,null,null);
while(cursor.moveToNext()){
@SuppressLint("Range") String c_subject = cursor.getString(cursor.getColumnIndex("c_subject"));
@SuppressLint("Range") String c_time = cursor.getString(cursor.getColumnIndex("c_time"));
@SuppressLint("Range") String c_day = cursor.getString(cursor.getColumnIndex("c_day"));
@SuppressLint("Range") String c_teacher = cursor.getString(cursor.getColumnIndex("c_teacher"));
list.add(new Class_demo(c_subject,c_time,c_day,c_teacher));
}
return list;
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}

@ -0,0 +1,95 @@
package com.example.map.database;
import android.annotation.SuppressLint;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import com.example.map.enity.User;
import java.util.ArrayList;
public class UserDBHelper extends SQLiteOpenHelper {
private static final String DB_NAME="user.db";
private static final String TABLE_NAME="user_table";
private static final int DB_VERSION=1;
private static UserDBHelper mHelper = null;
private SQLiteDatabase mRDB=null;//用来读
private SQLiteDatabase mWDB=null;//用来写
public SQLiteDatabase db;
//参数为上下文context所谓上下文就是这个类所在包的路径
public UserDBHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
db = getReadableDatabase();
}
//利用单例模式获取数据库帮助器的唯一实例
public static UserDBHelper getInstance(Context context){
if(mHelper==null){
mHelper=new UserDBHelper(context);
}
return mHelper;
}
//打开数据库的读连接
public SQLiteDatabase openReadLink(){
if (mRDB==null || !mRDB.isOpen()){
mRDB= mHelper.getReadableDatabase();
}
return mRDB;
}
//打开数据库的写连接
public SQLiteDatabase openWriteLink(){
if (mWDB==null || !mWDB.isOpen()){
mWDB= mHelper.getWritableDatabase();
}
return mWDB;
}
//创建数据库,执行建表语言
@Override
public void onCreate(SQLiteDatabase db) {
String sql="CREATE TABLE IF NOT EXISTS "+ TABLE_NAME + " (" +
"_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"+
" user_name VARCHAR NOT NULL,"+
" password VARCHAR NOT NULL);";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
public long insert(User user){
ContentValues values=new ContentValues();
values.put("user_name",user.user_name);
values.put("password",user.password);
return mWDB.insert(TABLE_NAME,null,values);
}
public long delete(User user){
String name= user.getName();
String passwd= user.getPassword();
return mWDB.delete(TABLE_NAME,"user_name=? and password=?",new String[]{name,passwd});
}
//我们查询出来的内容需要有个容器存放以供使用所以定义了一个ArrayList类的list
//这里使用游标Cursor
public ArrayList<User> getAllData(){
ArrayList<User> list = new ArrayList<User>();
@SuppressLint("Recycle") Cursor cursor = db.query(TABLE_NAME,null,null,null,null,null,null);
while(cursor.moveToNext()){
@SuppressLint("Range") String user_name = cursor.getString(cursor.getColumnIndex("user_name"));
@SuppressLint("Range") String password = cursor.getString(cursor.getColumnIndex("password"));
list.add(new User(user_name,password));
}
return list;
}
}

@ -0,0 +1,43 @@
package com.example.map.enity;
public class Class_demo {
public String c_subject;
public String c_time;
public String c_day;
public String c_teacher;
public Class_demo(String c_subject, String c_teacher) {
this.c_subject = c_subject;
this.c_teacher = c_teacher;
}
public Class_demo(String c_subject, String c_time, String c_day, String c_teacher) {
this.c_subject = c_subject;
this.c_time = c_time;
this.c_day = c_day;
this.c_teacher = c_teacher;
}
@Override
public String toString() {
return "Classes{" +
", c_subject='" + c_subject + '\'' +
", c_time='" + c_time + '\'' +
", c_day='" + c_day + '\'' +
", c_teacher='" + c_teacher + '\'' +
'}';
}
public String getC_subject(){
return c_subject;
}
public String getC_time(){
return c_time;
}
public String getC_day(){
return c_day;
}
public String getC_teacher(){
return c_teacher;
}
}

@ -0,0 +1,30 @@
package com.example.map.enity;
public class User {
public String user_name;
public String password;
public User(String user_name, String password) {
this.user_name = user_name;
this.password = password;
}
public User(){
}
public String getName(){
return user_name;
}
public String getPassword(){
return password;
}
@Override
public String toString() {
return "User{" +
"user_name=" + user_name +
", password=" + password +
'}';
}
}

@ -0,0 +1,17 @@
/*
* Copyright (C) 2016 Baidu, Inc. All Rights Reserved.
*/
package com.example.map.location;
import android.location.Location;
import android.os.Bundle;
/**
* @author by liuhongjian01 on 16/8/17.
*/
public interface BDLocationListener {
void onLocationChanged(Location location);
void onStatusChanged(String provider, int status, Bundle extras);
void onProviderEnabled(String provider);
void onProviderDisabled(String provider);
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save