├── .gitattributes
├── .gitignore
├── .gradle
└── 2.14.1
│ ├── taskArtifacts
│ ├── cache.properties
│ ├── cache.properties.lock
│ ├── fileHashes.bin
│ ├── fileSnapshots.bin
│ ├── fileSnapshotsToTreeSnapshotsIndex.bin
│ └── taskArtifacts.bin
│ └── tasks
│ ├── _app_compileDebugJavaWithJavac
│ ├── localClassSetAnalysis
│ │ ├── localClassSetAnalysis.bin
│ │ └── localClassSetAnalysis.lock
│ └── localJarClasspathSnapshot
│ │ ├── localJarClasspathSnapshot.bin
│ │ └── localJarClasspathSnapshot.lock
│ └── _app_compileReleaseJavaWithJavac
│ ├── localClassSetAnalysis
│ ├── localClassSetAnalysis.bin
│ └── localClassSetAnalysis.lock
│ └── localJarClasspathSnapshot
│ ├── localJarClasspathSnapshot.bin
│ └── localJarClasspathSnapshot.lock
├── .idea
├── compiler.xml
├── copyright
│ └── profiles_settings.xml
├── gradle.xml
├── libraries
│ ├── AMap3DMap_5_0_0_AMapNavi_5_0_1_AMapSearch_5_0_0_AMapLocation_3_3_0_20170410.xml
│ ├── adapters_1_2_1.xml
│ ├── animated_vector_drawable_25_2_0.xml
│ ├── appcompat_v7_25_2_0.xml
│ ├── baseLibrary_2_2_3.xml
│ ├── compiler_2_2_3.xml
│ ├── design_25_2_0.xml
│ ├── espresso_core_2_2_2.xml
│ ├── espresso_idling_resource_2_2_2.xml
│ ├── exposed_instrumentation_api_publish_0_5.xml
│ ├── glide_3_7_0.xml
│ ├── glide_transformations_2_0_2.xml
│ ├── hamcrest_core_1_3.xml
│ ├── hamcrest_integration_1_3.xml
│ ├── hamcrest_library_1_3.xml
│ ├── imagepicker_0_5_4.xml
│ ├── javawriter_2_1_1.xml
│ ├── javax_annotation_api_1_2.xml
│ ├── javax_inject_1.xml
│ ├── jsr305_2_0_1.xml
│ ├── junit_4_12.xml
│ ├── juniversalchardet_1_0_3.xml
│ ├── library_1_2_1.xml
│ ├── library_1_2_4.xml
│ ├── recyclerview_v7_25_2_0.xml
│ ├── rules_0_5.xml
│ ├── runner_0_5.xml
│ ├── support_annotations_25_2_0.xml
│ ├── support_compat_25_2_0.xml
│ ├── support_core_ui_25_2_0.xml
│ ├── support_core_utils_25_2_0.xml
│ ├── support_fragment_25_2_0.xml
│ ├── support_media_compat_25_2_0.xml
│ ├── support_v4_25_2_0.xml
│ ├── support_vector_drawable_25_2_0.xml
│ ├── transition_25_2_0.xml
│ └── zxing_library_2_1.xml
├── misc.xml
├── modules.xml
├── runConfigurations.xml
└── workspace.xml
├── CarryOnDown.iml
├── README.md
├── app
├── .gitignore
├── app-release.apk
├── app.iml
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── carryondown
│ │ └── app
│ │ └── ExampleInstrumentedTest.java
│ ├── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ │ └── carryondown
│ │ │ └── app
│ │ │ ├── MainActivity.java
│ │ │ ├── activity
│ │ │ ├── DestinationActivity.java
│ │ │ ├── LoginActivity.java
│ │ │ ├── MyMessageActivity.java
│ │ │ ├── MyTripActivity.java
│ │ │ ├── MyWalletActivity.java
│ │ │ ├── PersonalInformationActivity.java
│ │ │ ├── SettingActivity.java
│ │ │ ├── UserKnowActivity.java
│ │ │ └── route
│ │ │ │ ├── BusResultListAdapter.java
│ │ │ │ ├── BusRouteActivity.java
│ │ │ │ ├── BusRouteDetailActivity.java
│ │ │ │ ├── BusSegmentListAdapter.java
│ │ │ │ ├── DriveRouteActivity.java
│ │ │ │ ├── DriveRouteDetailActivity.java
│ │ │ │ ├── DriveSegmentListAdapter.java
│ │ │ │ ├── RideRouteActivity.java
│ │ │ │ ├── RideRouteDetailActivity.java
│ │ │ │ ├── RideSegmentListAdapter.java
│ │ │ │ ├── RouteActivity.java
│ │ │ │ ├── SchemeBusStep.java
│ │ │ │ ├── WalkRouteActivity.java
│ │ │ │ ├── WalkRouteDetailActivity.java
│ │ │ │ └── WalkSegmentListAdapter.java
│ │ │ ├── application
│ │ │ └── MyApplication.java
│ │ │ ├── base
│ │ │ ├── BaseActivity.java
│ │ │ └── PerfectClickListener.java
│ │ │ ├── dialog
│ │ │ └── LoadDialog.java
│ │ │ ├── lib
│ │ │ ├── InputTipTask.java
│ │ │ ├── LocationTask.java
│ │ │ ├── OnLocationGetListener.java
│ │ │ ├── PoiSearchTask.java
│ │ │ ├── PositionEntity.java
│ │ │ ├── RecomandAdapter.java
│ │ │ ├── RegeocodeTask.java
│ │ │ ├── RouteTask.java
│ │ │ ├── Sha1.java
│ │ │ └── Utils.java
│ │ │ ├── overlay
│ │ │ ├── AMapServicesUtil.java
│ │ │ ├── BusLineOverlay.java
│ │ │ ├── BusRouteOverlay.java
│ │ │ ├── DrivingRouteOverlay.java
│ │ │ ├── PoiOverlay.java
│ │ │ ├── RideRouteOverlay.java
│ │ │ ├── RouteOverlay.java
│ │ │ ├── TraceOverlay.java
│ │ │ └── WalkRouteOverlay.java
│ │ │ ├── util
│ │ │ ├── AMapUtil.java
│ │ │ ├── ChString.java
│ │ │ ├── CommonUtils.java
│ │ │ ├── Constants.java
│ │ │ ├── GlideImagePickerLoader.java
│ │ │ ├── OffLineMapUtils.java
│ │ │ ├── PermissionUtil.java
│ │ │ ├── ScreenUtil.java
│ │ │ ├── SensorEventHelper.java
│ │ │ └── ToastUtil.java
│ │ │ └── view
│ │ │ ├── CircleImageView.java
│ │ │ ├── ClearEditText.java
│ │ │ ├── HeadZoomScrollView.java
│ │ │ └── statusbar
│ │ │ ├── StatusBarUtil.java
│ │ │ └── StatusBarView.java
│ ├── jniLibs
│ │ ├── AMap3DMap_5.0.0_AMapNavi_5.0.1_AMapSearch_5.0.0_AMapLocation_3.3.0_20170410.jar
│ │ ├── arm64-v8a
│ │ │ ├── libGNaviData.so
│ │ │ ├── libGNaviGuide.so
│ │ │ ├── libGNaviMap.so
│ │ │ ├── libGNaviMapex.so
│ │ │ ├── libGNaviPos.so
│ │ │ ├── libGNaviRoute.so
│ │ │ ├── libGNaviSearch.so
│ │ │ ├── libGNaviUtils.so
│ │ │ ├── libRoadLineRebuildAPI.so
│ │ │ ├── librtbt800.so
│ │ │ └── libwtbt800.so
│ │ ├── armeabi-v7a
│ │ │ ├── libGNaviData.so
│ │ │ ├── libGNaviGuide.so
│ │ │ ├── libGNaviMap.so
│ │ │ ├── libGNaviMapex.so
│ │ │ ├── libGNaviPos.so
│ │ │ ├── libGNaviRoute.so
│ │ │ ├── libGNaviSearch.so
│ │ │ ├── libGNaviUtils.so
│ │ │ ├── libRoadLineRebuildAPI.so
│ │ │ ├── librtbt800.so
│ │ │ └── libwtbt800.so
│ │ ├── armeabi
│ │ │ ├── libGNaviData.so
│ │ │ ├── libGNaviGuide.so
│ │ │ ├── libGNaviMap.so
│ │ │ ├── libGNaviMapex.so
│ │ │ ├── libGNaviPos.so
│ │ │ ├── libGNaviRoute.so
│ │ │ ├── libGNaviSearch.so
│ │ │ ├── libGNaviUtils.so
│ │ │ ├── libRoadLineRebuildAPI.so
│ │ │ ├── librtbt800.so
│ │ │ └── libwtbt800.so
│ │ ├── x86
│ │ │ ├── libGNaviData.so
│ │ │ ├── libGNaviGuide.so
│ │ │ ├── libGNaviMap.so
│ │ │ ├── libGNaviMapex.so
│ │ │ ├── libGNaviPos.so
│ │ │ ├── libGNaviRoute.so
│ │ │ ├── libGNaviSearch.so
│ │ │ ├── libGNaviUtils.so
│ │ │ ├── libRoadLineRebuildAPI.so
│ │ │ ├── librtbt800.so
│ │ │ └── libwtbt800.so
│ │ └── x86_64
│ │ │ ├── libGNaviData.so
│ │ │ ├── libGNaviGuide.so
│ │ │ ├── libGNaviMap.so
│ │ │ ├── libGNaviMapex.so
│ │ │ ├── libGNaviPos.so
│ │ │ ├── libGNaviRoute.so
│ │ │ ├── libGNaviSearch.so
│ │ │ ├── libGNaviUtils.so
│ │ │ ├── libRoadLineRebuildAPI.so
│ │ │ ├── librtbt800.so
│ │ │ └── libwtbt800.so
│ └── res
│ │ ├── anim
│ │ └── tips.xml
│ │ ├── drawable-hdpi
│ │ ├── amap_bus.png
│ │ ├── amap_car.png
│ │ ├── amap_end.png
│ │ ├── amap_man.png
│ │ ├── amap_ride.png
│ │ ├── amap_start.png
│ │ ├── amap_through.png
│ │ ├── arrow_right_blue.png
│ │ ├── back.png
│ │ ├── bg_bottom_bar.9.png
│ │ ├── border_bg.9.png
│ │ ├── dir1.png
│ │ ├── dir10.png
│ │ ├── dir11.png
│ │ ├── dir12.png
│ │ ├── dir13.png
│ │ ├── dir14.png
│ │ ├── dir15.png
│ │ ├── dir16.png
│ │ ├── dir2.png
│ │ ├── dir3.png
│ │ ├── dir4.png
│ │ ├── dir5.png
│ │ ├── dir6.png
│ │ ├── dir7.png
│ │ ├── dir8.png
│ │ ├── dir9.png
│ │ ├── dir_end.png
│ │ ├── dir_start.png
│ │ ├── dir_station.png
│ │ ├── down.png
│ │ ├── ic_map_go.png
│ │ ├── route_bus_normal.png
│ │ ├── route_bus_select.png
│ │ ├── route_drive_normal.png
│ │ ├── route_drive_select.png
│ │ ├── route_walk_normal.png
│ │ ├── route_walk_select.png
│ │ ├── title_background.9.png
│ │ └── up.png
│ │ ├── drawable-v21
│ │ └── home_click_bg.xml
│ │ ├── drawable-xhdpi
│ │ ├── end.png
│ │ └── start.png
│ │ ├── drawable-xxhdpi
│ │ ├── arrow_right_blue.png
│ │ ├── avatar_default_login.png
│ │ ├── default_image.png
│ │ ├── home_bottom_white_bg.png
│ │ ├── ic_load.png
│ │ ├── ic_search_clear.png
│ │ ├── icon_actionbar_home_normal.png
│ │ ├── icon_actionbar_home_press.png
│ │ ├── icon_actionbar_search_normal.png
│ │ ├── icon_actionbar_search_press.png
│ │ ├── icon_back.png
│ │ ├── icon_help.png
│ │ ├── icon_loaction_start.png
│ │ ├── icon_message.png
│ │ ├── icon_money.png
│ │ ├── icon_popover_arrow_down.png
│ │ ├── icon_refresh.png
│ │ ├── icon_scan_code.png
│ │ ├── icon_search_map.png
│ │ ├── icon_setting.png
│ │ ├── icon_trip.png
│ │ ├── location_marker.png
│ │ ├── mobike_title_img.png
│ │ ├── report_issue_scan_qrcode.png
│ │ ├── report_violation_img.png
│ │ ├── route_bus_normal.png
│ │ ├── route_bus_select.png
│ │ ├── route_drive_normal.png
│ │ ├── route_drive_select.png
│ │ ├── route_walk_normal.png
│ │ ├── route_walk_select.png
│ │ ├── scan_qrcode_flash_light_off.png
│ │ ├── scan_qrcode_flash_light_on.png
│ │ ├── stable_cluster_marker_one_normal.png
│ │ └── stable_cluster_marker_one_select.png
│ │ ├── drawable
│ │ ├── home_background.xml
│ │ ├── home_click_bg.xml
│ │ ├── search_background.xml
│ │ ├── shape_corner.xml
│ │ └── show_window_shape.xml
│ │ ├── layout
│ │ ├── activity_base.xml
│ │ ├── activity_destination.xml
│ │ ├── activity_login.xml
│ │ ├── activity_main.xml
│ │ ├── activity_my_message.xml
│ │ ├── activity_my_trip.xml
│ │ ├── activity_my_wallet.xml
│ │ ├── activity_personal_information.xml
│ │ ├── activity_route_detail.xml
│ │ ├── activity_setting.xml
│ │ ├── activity_user_know.xml
│ │ ├── app_bar_main.xml
│ │ ├── info_window.xml
│ │ ├── item_bus_result.xml
│ │ ├── item_bus_segment.xml
│ │ ├── item_bus_segment_ex.xml
│ │ ├── load.xml
│ │ ├── nav_header_main.xml
│ │ ├── route_activity.xml
│ │ └── view_recommond.xml
│ │ ├── menu
│ │ └── main.xml
│ │ ├── mipmap-hdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-mdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xhdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xxhdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xxxhdpi
│ │ └── ic_launcher.png
│ │ ├── values-w820dp
│ │ └── dimens.xml
│ │ └── values
│ │ ├── attrs.xml
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── drawables.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── test
│ └── java
│ └── com
│ └── carryondown
│ └── app
│ └── ExampleUnitTest.java
├── build.gradle
├── build
├── generated
│ └── mockable-android-25.jar
└── intermediates
│ └── dex-cache
│ └── cache.xml
├── carryondown.jks
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── local.properties
├── settings.gradle
└── 示例图
├── 1.jpg
├── 2.jpg
├── 3.jpg
├── 4.jpg
├── 5.jpg
├── 6.jpg
└── 7.jpg
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
4 | # Custom for Visual Studio
5 | *.cs diff=csharp
6 |
7 | # Standard to msysgit
8 | *.doc diff=astextplain
9 | *.DOC diff=astextplain
10 | *.docx diff=astextplain
11 | *.DOCX diff=astextplain
12 | *.dot diff=astextplain
13 | *.DOT diff=astextplain
14 | *.pdf diff=astextplain
15 | *.PDF diff=astextplain
16 | *.rtf diff=astextplain
17 | *.RTF diff=astextplain
18 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Windows image file caches
2 | Thumbs.db
3 | ehthumbs.db
4 |
5 | # Folder config file
6 | Desktop.ini
7 |
8 | # Recycle Bin used on file shares
9 | $RECYCLE.BIN/
10 |
11 | # Windows Installer files
12 | *.cab
13 | *.msi
14 | *.msm
15 | *.msp
16 |
17 | # Windows shortcuts
18 | *.lnk
19 |
20 | # =========================
21 | # Operating System Files
22 | # =========================
23 |
24 | # OSX
25 | # =========================
26 |
27 | .DS_Store
28 | .AppleDouble
29 | .LSOverride
30 |
31 | # Thumbnails
32 | ._*
33 |
34 | # Files that might appear in the root of a volume
35 | .DocumentRevisions-V100
36 | .fseventsd
37 | .Spotlight-V100
38 | .TemporaryItems
39 | .Trashes
40 | .VolumeIcon.icns
41 |
42 | # Directories potentially created on remote AFP share
43 | .AppleDB
44 | .AppleDesktop
45 | Network Trash Folder
46 | Temporary Items
47 | .apdisk
48 |
--------------------------------------------------------------------------------
/.gradle/2.14.1/taskArtifacts/cache.properties:
--------------------------------------------------------------------------------
1 | #Wed Apr 19 09:20:20 CST 2017
2 |
--------------------------------------------------------------------------------
/.gradle/2.14.1/taskArtifacts/cache.properties.lock:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/.gradle/2.14.1/taskArtifacts/cache.properties.lock
--------------------------------------------------------------------------------
/.gradle/2.14.1/taskArtifacts/fileHashes.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/.gradle/2.14.1/taskArtifacts/fileHashes.bin
--------------------------------------------------------------------------------
/.gradle/2.14.1/taskArtifacts/fileSnapshots.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/.gradle/2.14.1/taskArtifacts/fileSnapshots.bin
--------------------------------------------------------------------------------
/.gradle/2.14.1/taskArtifacts/fileSnapshotsToTreeSnapshotsIndex.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/.gradle/2.14.1/taskArtifacts/fileSnapshotsToTreeSnapshotsIndex.bin
--------------------------------------------------------------------------------
/.gradle/2.14.1/taskArtifacts/taskArtifacts.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/.gradle/2.14.1/taskArtifacts/taskArtifacts.bin
--------------------------------------------------------------------------------
/.gradle/2.14.1/tasks/_app_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/.gradle/2.14.1/tasks/_app_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin
--------------------------------------------------------------------------------
/.gradle/2.14.1/tasks/_app_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/.gradle/2.14.1/tasks/_app_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock
--------------------------------------------------------------------------------
/.gradle/2.14.1/tasks/_app_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/.gradle/2.14.1/tasks/_app_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin
--------------------------------------------------------------------------------
/.gradle/2.14.1/tasks/_app_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/.gradle/2.14.1/tasks/_app_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock
--------------------------------------------------------------------------------
/.gradle/2.14.1/tasks/_app_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/.gradle/2.14.1/tasks/_app_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin
--------------------------------------------------------------------------------
/.gradle/2.14.1/tasks/_app_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/.gradle/2.14.1/tasks/_app_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock
--------------------------------------------------------------------------------
/.gradle/2.14.1/tasks/_app_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/.gradle/2.14.1/tasks/_app_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin
--------------------------------------------------------------------------------
/.gradle/2.14.1/tasks/_app_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/.gradle/2.14.1/tasks/_app_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock
--------------------------------------------------------------------------------
/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/.idea/copyright/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
17 |
18 |
--------------------------------------------------------------------------------
/.idea/libraries/AMap3DMap_5_0_0_AMapNavi_5_0_1_AMapSearch_5_0_0_AMapLocation_3_3_0_20170410.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/libraries/adapters_1_2_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/libraries/animated_vector_drawable_25_2_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/libraries/appcompat_v7_25_2_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/.idea/libraries/baseLibrary_2_2_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/libraries/compiler_2_2_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/libraries/design_25_2_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/.idea/libraries/espresso_core_2_2_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/libraries/espresso_idling_resource_2_2_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/libraries/exposed_instrumentation_api_publish_0_5.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/libraries/glide_3_7_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/glide_transformations_2_0_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/libraries/hamcrest_core_1_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/hamcrest_integration_1_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/libraries/hamcrest_library_1_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/imagepicker_0_5_4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/libraries/javawriter_2_1_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/libraries/javax_annotation_api_1_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/javax_inject_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/jsr305_2_0_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/libraries/junit_4_12.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/juniversalchardet_1_0_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/libraries/library_1_2_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/libraries/library_1_2_4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/libraries/recyclerview_v7_25_2_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/.idea/libraries/rules_0_5.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/.idea/libraries/runner_0_5.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/.idea/libraries/support_annotations_25_2_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/support_compat_25_2_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/.idea/libraries/support_core_ui_25_2_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/.idea/libraries/support_core_utils_25_2_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/.idea/libraries/support_fragment_25_2_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/.idea/libraries/support_media_compat_25_2_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/.idea/libraries/support_v4_25_2_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.idea/libraries/support_vector_drawable_25_2_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/libraries/transition_25_2_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/libraries/zxing_library_2_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 | 1.8
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/CarryOnDown.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # ofo
2 | 仿ofo、摩拜,共享单车,基于高德地图
3 | 
4 | 
5 | 
6 | 
7 | 
8 | 
9 | 
10 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/app/app-release.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/app-release.apk
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | android {
4 | compileSdkVersion 25
5 | buildToolsVersion "25.0.2"
6 | defaultConfig {
7 | applicationId "com.carryondown.app"
8 | minSdkVersion 21
9 | targetSdkVersion 25
10 | versionCode 1
11 | versionName "1.0"
12 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
13 | }
14 |
15 | // dataBinding 加入
16 | dataBinding {
17 | enabled = true
18 | }
19 |
20 | signingConfigs {
21 | release {
22 | storeFile file("../carryondown.jks")
23 | storePassword "carryondown419"
24 | keyAlias "carryondown"
25 | keyPassword "carryondown419"
26 | }
27 | }
28 | buildTypes {
29 | release {
30 | signingConfig signingConfigs.release
31 | minifyEnabled false
32 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
33 | }
34 | debug {
35 | signingConfig signingConfigs.release
36 | }
37 | }
38 | lintOptions{
39 | checkReleaseBuilds false
40 | abortOnError false
41 | }
42 | }
43 |
44 | dependencies {
45 | compile fileTree(include: ['*.jar'], dir: 'libs')
46 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
47 | exclude group: 'com.android.support', module: 'support-annotations'
48 | })
49 | compile 'com.android.support:appcompat-v7:25.2.0'
50 | compile 'com.android.support:design:25.2.0'
51 | testCompile 'junit:junit:4.12'
52 | compile files('src/main/jniLibs/AMap3DMap_5.0.0_AMapNavi_5.0.1_AMapSearch_5.0.0_AMapLocation_3.3.0_20170410.jar')
53 | compile 'cn.yipianfengye.android:zxing-library:2.1'
54 | compile 'jp.wasabeef:glide-transformations:2.0.2'
55 | compile 'com.lzy.widget:imagepicker:0.5.4'
56 | }
57 |
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/carryondown/app/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app;
2 |
3 | import android.content.Context;
4 | import android.support.test.InstrumentationRegistry;
5 | import android.support.test.runner.AndroidJUnit4;
6 |
7 | import org.junit.Test;
8 | import org.junit.runner.RunWith;
9 |
10 | import static org.junit.Assert.*;
11 |
12 | /**
13 | * Instrumentation test, which will execute on an Android device.
14 | *
15 | * @see Testing documentation
16 | */
17 | @RunWith(AndroidJUnit4.class)
18 | public class ExampleInstrumentedTest {
19 | @Test
20 | public void useAppContext() throws Exception {
21 | // Context of the app under test.
22 | Context appContext = InstrumentationRegistry.getTargetContext();
23 |
24 | assertEquals("com.carryondown.app", appContext.getPackageName());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/activity/LoginActivity.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.activity;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 | import android.os.Bundle;
6 |
7 | import com.carryondown.app.R;
8 | import com.carryondown.app.base.BaseActivity;
9 | import com.carryondown.app.databinding.ActivityLoginBinding;
10 |
11 | /**
12 | * Created by Administrator on 2017/4/27.
13 | */
14 |
15 | public class LoginActivity extends BaseActivity {
16 | @Override
17 | protected void onCreate(Bundle savedInstanceState) {
18 | super.onCreate(savedInstanceState);
19 | setContentView(R.layout.activity_login);
20 | setTitle("手机登陆");
21 | showContentView();
22 | }
23 | public static void start(Context mContext) {
24 | Intent intent = new Intent(mContext, LoginActivity.class);
25 | mContext.startActivity(intent);
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/activity/MyMessageActivity.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.activity;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 | import android.os.Bundle;
6 |
7 | import com.carryondown.app.R;
8 | import com.carryondown.app.base.BaseActivity;
9 |
10 | /**
11 | * Created by Administrator on 2017/4/27.
12 | */
13 |
14 | public class MyMessageActivity extends BaseActivity {
15 | @Override
16 | protected void onCreate(Bundle savedInstanceState) {
17 | super.onCreate(savedInstanceState);
18 | setContentView(R.layout.activity_my_message);
19 | setTitle("我的消息");
20 | showContentView();
21 | }
22 | public static void start(Context mContext) {
23 | Intent intent = new Intent(mContext, MyMessageActivity.class);
24 | mContext.startActivity(intent);
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/activity/MyWalletActivity.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.activity;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 | import android.os.Bundle;
6 |
7 | import com.carryondown.app.R;
8 | import com.carryondown.app.base.BaseActivity;
9 |
10 | /**
11 | * Created by Administrator on 2017/4/27.
12 | */
13 |
14 | public class MyWalletActivity extends BaseActivity {
15 | @Override
16 | protected void onCreate(Bundle savedInstanceState) {
17 | super.onCreate(savedInstanceState);
18 | setContentView(R.layout.activity_my_wallet);
19 | setTitle("我的钱包");
20 | showContentView();
21 | }
22 | public static void start(Context mContext) {
23 | Intent intent = new Intent(mContext, MyWalletActivity.class);
24 | mContext.startActivity(intent);
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/activity/PersonalInformationActivity.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.activity;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 | import android.os.Bundle;
6 | import android.view.View;
7 | import android.widget.Toast;
8 |
9 | import com.bumptech.glide.Glide;
10 | import com.carryondown.app.R;
11 | import com.carryondown.app.base.BaseActivity;
12 | import com.carryondown.app.databinding.ActivityPersonalInformationBinding;
13 | import com.carryondown.app.util.GlideImagePickerLoader;
14 | import com.lzy.imagepicker.ImagePicker;
15 | import com.lzy.imagepicker.bean.ImageItem;
16 | import com.lzy.imagepicker.ui.ImageGridActivity;
17 | import com.lzy.imagepicker.view.CropImageView;
18 |
19 | import java.util.ArrayList;
20 |
21 | import jp.wasabeef.glide.transformations.BlurTransformation;
22 |
23 | /**
24 | * Created by Administrator on 2017/4/26.
25 | */
26 |
27 | public class PersonalInformationActivity extends BaseActivity implements View.OnClickListener {
28 | private static final int IMAGE_PICKER = 1;
29 |
30 | @Override
31 | protected void onCreate(Bundle savedInstanceState) {
32 | super.onCreate(savedInstanceState);
33 | setContentView(R.layout.activity_personal_information);
34 | setTitle("个人信息");
35 | showContentView();
36 | Glide.with(this).load(R.drawable.avatar_default_login)
37 | .bitmapTransform(new BlurTransformation(getApplicationContext()))
38 | .into(bindingView.bgImage);
39 | initImagePicker();
40 | bindingView.rlBg.setOnClickListener(this);
41 | }
42 | private void initImagePicker()
43 | {
44 | ImagePicker imagePicker = ImagePicker.getInstance();
45 | imagePicker.setImageLoader(new GlideImagePickerLoader()); //设置图片加载器
46 | imagePicker.setShowCamera(true); //显示拍照按钮
47 | imagePicker.setCrop(true); //允许裁剪(单选才有效)
48 | imagePicker.setSaveRectangle(true); //是否按矩形区域保存
49 | // imagePicker.setSelectLimit(9); //选中数量限制
50 | imagePicker.setMultiMode(false); //单选
51 | imagePicker.setStyle(CropImageView.Style.CIRCLE); //裁剪框的形状
52 | imagePicker.setFocusWidth(800); //裁剪框的宽度。单位像素(圆形自动取宽高最小值)
53 | imagePicker.setFocusHeight(800); //裁剪框的高度。单位像素(圆形自动取宽高最小值)
54 | imagePicker.setOutPutX(1000);//保存文件的宽度。单位像素
55 | imagePicker.setOutPutY(1000);//保存文件的高度。单位像素
56 | }
57 |
58 | public static void start(Context mContext) {
59 | Intent intent = new Intent(mContext, PersonalInformationActivity.class);
60 | mContext.startActivity(intent);
61 | }
62 |
63 | @Override
64 | public void onClick(View view) {
65 | switch (view.getId())
66 | {
67 | case R.id.rl_bg:
68 | Intent intent = new Intent(this, ImageGridActivity.class);
69 | startActivityForResult(intent, IMAGE_PICKER);
70 | break;
71 | }
72 | }
73 | @Override
74 | protected void onActivityResult(int requestCode, int resultCode, Intent data) {
75 | super.onActivityResult(requestCode, resultCode, data);
76 | if (resultCode == ImagePicker.RESULT_CODE_ITEMS) {
77 | if (data != null && requestCode == IMAGE_PICKER) {
78 | ArrayList images = (ArrayList) data.getSerializableExtra(ImagePicker.EXTRA_RESULT_ITEMS);
79 | showHeadImg(images.get(0).path);
80 | } else {
81 | Toast.makeText(this, "没有数据", Toast.LENGTH_SHORT).show();
82 | }
83 | }
84 | }
85 | private void showHeadImg(String url)
86 | {
87 | Glide.with(this).load(url).into(bindingView.profileImage);
88 | Glide.with(this).load(url)
89 | .bitmapTransform(new BlurTransformation(getApplicationContext()))
90 | .into(bindingView.bgImage);
91 | }
92 | }
93 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/activity/SettingActivity.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.activity;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 | import android.os.Bundle;
6 |
7 | import com.carryondown.app.R;
8 | import com.carryondown.app.base.BaseActivity;
9 |
10 | /**
11 | * Created by Administrator on 2017/4/27.
12 | */
13 |
14 | public class SettingActivity extends BaseActivity {
15 | @Override
16 | protected void onCreate(Bundle savedInstanceState) {
17 | super.onCreate(savedInstanceState);
18 | setContentView(R.layout.activity_setting);
19 | setTitle("设置");
20 | showContentView();
21 | }
22 | public static void start(Context mContext) {
23 | Intent intent = new Intent(mContext, SettingActivity.class);
24 | mContext.startActivity(intent);
25 | }
26 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/activity/UserKnowActivity.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.activity;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 | import android.os.Bundle;
6 |
7 | import com.carryondown.app.R;
8 | import com.carryondown.app.base.BaseActivity;
9 |
10 | /**
11 | * Created by Administrator on 2017/4/27.
12 | */
13 |
14 | public class UserKnowActivity extends BaseActivity {
15 | @Override
16 | protected void onCreate(Bundle savedInstanceState) {
17 | super.onCreate(savedInstanceState);
18 | setContentView(R.layout.activity_user_know);
19 | setTitle("用户指南");
20 | showContentView();
21 | }
22 | public static void start(Context mContext) {
23 | Intent intent = new Intent(mContext, UserKnowActivity.class);
24 | mContext.startActivity(intent);
25 | }
26 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/activity/route/BusResultListAdapter.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.activity.route;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 | import android.view.View;
6 | import android.view.View.OnClickListener;
7 | import android.view.ViewGroup;
8 | import android.widget.BaseAdapter;
9 | import android.widget.TextView;
10 |
11 | import com.amap.api.services.route.BusPath;
12 | import com.amap.api.services.route.BusRouteResult;
13 | import com.carryondown.app.R;
14 | import com.carryondown.app.util.AMapUtil;
15 |
16 | import java.util.List;
17 |
18 | public class BusResultListAdapter extends BaseAdapter {
19 | private Context mContext;
20 | private List mBusPathList;
21 | private BusRouteResult mBusRouteResult;
22 |
23 | public BusResultListAdapter(Context context, BusRouteResult busrouteresult) {
24 | mContext = context;
25 | mBusRouteResult = busrouteresult;
26 | mBusPathList = busrouteresult.getPaths();
27 | }
28 |
29 | @Override
30 | public int getCount() {
31 | return mBusPathList.size();
32 | }
33 |
34 | @Override
35 | public Object getItem(int position) {
36 | return mBusPathList.get(position);
37 | }
38 |
39 | @Override
40 | public long getItemId(int position) {
41 | return position;
42 | }
43 |
44 | @Override
45 | public View getView(int position, View convertView, ViewGroup parent) {
46 | ViewHolder holder = null;
47 | if (convertView == null) {
48 | holder = new ViewHolder();
49 | convertView = View.inflate(mContext, R.layout.item_bus_result, null);
50 | holder.title = (TextView) convertView.findViewById(R.id.bus_path_title);
51 | holder.des = (TextView) convertView.findViewById(R.id.bus_path_des);
52 | convertView.setTag(holder);
53 | } else {
54 | holder = (ViewHolder) convertView.getTag();
55 | }
56 |
57 | final BusPath item = mBusPathList.get(position);
58 | holder.title.setText(AMapUtil.getBusPathTitle(item));
59 | holder.des.setText(AMapUtil.getBusPathDes(item));
60 |
61 | convertView.setOnClickListener(new OnClickListener() {
62 |
63 | @Override
64 | public void onClick(View v) {
65 | Intent intent = new Intent(mContext.getApplicationContext(),
66 | BusRouteDetailActivity.class);
67 | intent.putExtra("bus_path", item);
68 | intent.putExtra("bus_result", mBusRouteResult);
69 | intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
70 | mContext.startActivity(intent);
71 |
72 | }
73 | });
74 |
75 | return convertView;
76 | }
77 |
78 | private class ViewHolder {
79 | TextView title;
80 | TextView des;
81 | }
82 |
83 | }
84 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/activity/route/DriveRouteDetailActivity.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.activity.route;
2 |
3 | import android.content.Intent;
4 | import android.os.Bundle;
5 | import android.util.Log;
6 | import android.view.View;
7 | import android.widget.ListView;
8 | import android.widget.TextView;
9 |
10 | import com.amap.api.services.route.DrivePath;
11 | import com.amap.api.services.route.DriveRouteResult;
12 | import com.amap.api.services.route.DriveStep;
13 | import com.amap.api.services.route.TMC;
14 | import com.carryondown.app.R;
15 | import com.carryondown.app.base.BaseActivity;
16 | import com.carryondown.app.util.AMapUtil;
17 |
18 | import java.util.List;
19 |
20 | /**
21 | * 驾车路线详情
22 | */
23 | public class DriveRouteDetailActivity extends BaseActivity {
24 | private DrivePath mDrivePath;
25 | private DriveRouteResult mDriveRouteResult;
26 | private TextView mTitleDriveRoute, mDesDriveRoute;
27 | private ListView mDriveSegmentList;
28 | private DriveSegmentListAdapter mDriveSegmentListAdapter;
29 |
30 | @Override
31 | public void onCreate(Bundle savedInstanceState) {
32 | super.onCreate(savedInstanceState);
33 | setContentView(R.layout.activity_route_detail);
34 | setTitle("驾车路线详情");
35 | showContentView();
36 | getIntentData();
37 | init();
38 | }
39 |
40 | private void init() {
41 | mTitleDriveRoute = (TextView) findViewById(R.id.firstline);
42 | mDesDriveRoute = (TextView) findViewById(R.id.secondline);
43 | String dur = AMapUtil.getFriendlyTime((int) mDrivePath.getDuration());
44 | String dis = AMapUtil.getFriendlyLength((int) mDrivePath
45 | .getDistance());
46 | mTitleDriveRoute.setText(dur + "(" + dis + ")");
47 | int taxiCost = (int) mDriveRouteResult.getTaxiCost();
48 | mDesDriveRoute.setText("打车约"+taxiCost+"元");
49 | mDesDriveRoute.setVisibility(View.VISIBLE);
50 | configureListView();
51 | }
52 |
53 | private void configureListView() {
54 | mDriveSegmentList = (ListView) findViewById(R.id.bus_segment_list);
55 | mDriveSegmentListAdapter = new DriveSegmentListAdapter(
56 | this.getApplicationContext(), mDrivePath.getSteps());
57 | mDriveSegmentList.setAdapter(mDriveSegmentListAdapter);
58 | }
59 |
60 | private void getIntentData() {
61 | Intent intent = getIntent();
62 | if (intent == null) {
63 | return;
64 | }
65 | mDrivePath = intent.getParcelableExtra("drive_path");
66 | mDriveRouteResult = intent.getParcelableExtra("drive_result");
67 | for (int i = 0; i < mDrivePath.getSteps().size(); i++) {
68 | DriveStep step = mDrivePath.getSteps().get(i);
69 | List tmclist = step.getTMCs();
70 | for (int j = 0; j < tmclist.size(); j++) {
71 | String s = ""+tmclist.get(j).getPolyline().size();
72 | Log.i("MY", s+tmclist.get(j).getStatus()
73 | +tmclist.get(j).getDistance()
74 | +tmclist.get(j).getPolyline().toString());
75 | }
76 | }
77 | }
78 | }
79 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/activity/route/DriveSegmentListAdapter.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.activity.route;
2 |
3 | import android.content.Context;
4 | import android.view.View;
5 | import android.view.ViewGroup;
6 | import android.widget.BaseAdapter;
7 | import android.widget.ImageView;
8 | import android.widget.TextView;
9 |
10 | import com.amap.api.services.route.DriveStep;
11 | import com.carryondown.app.R;
12 | import com.carryondown.app.util.AMapUtil;
13 |
14 | import java.util.ArrayList;
15 | import java.util.List;
16 |
17 | /**
18 | * 驾车路线详情页adapter
19 | *
20 | * @author ligen
21 | *
22 | */
23 | public class DriveSegmentListAdapter extends BaseAdapter {
24 | private Context mContext;
25 | private List mItemList = new ArrayList();
26 |
27 | public DriveSegmentListAdapter(Context context, List list) {
28 | this.mContext = context;
29 | mItemList.add(new DriveStep());
30 | for (DriveStep driveStep : list) {
31 | mItemList.add(driveStep);
32 | }
33 | mItemList.add(new DriveStep());
34 | }
35 |
36 | @Override
37 | public int getCount() {
38 | // TODO Auto-generated method stub
39 | return mItemList.size();
40 | }
41 |
42 | @Override
43 | public Object getItem(int position) {
44 | // TODO Auto-generated method stub
45 | return mItemList.get(position);
46 | }
47 |
48 | @Override
49 | public long getItemId(int position) {
50 | // TODO Auto-generated method stub
51 | return position;
52 | }
53 |
54 | @Override
55 | public View getView(int position, View convertView, ViewGroup parent) {
56 | // TODO Auto-generated method stub
57 | ViewHolder holder = null;
58 | if (convertView == null) {
59 | holder = new ViewHolder();
60 | convertView = View.inflate(mContext, R.layout.item_bus_segment,
61 | null);
62 | holder.driveDirIcon = (ImageView) convertView
63 | .findViewById(R.id.bus_dir_icon);
64 | holder.driveLineName = (TextView) convertView
65 | .findViewById(R.id.bus_line_name);
66 | holder.driveDirUp = (ImageView) convertView
67 | .findViewById(R.id.bus_dir_icon_up);
68 | holder.driveDirDown = (ImageView) convertView
69 | .findViewById(R.id.bus_dir_icon_down);
70 | holder.splitLine = (ImageView) convertView
71 | .findViewById(R.id.bus_seg_split_line);
72 | convertView.setTag(holder);
73 | } else {
74 | holder = (ViewHolder) convertView.getTag();
75 | }
76 | final DriveStep item = mItemList.get(position);
77 | if (position == 0) {
78 | holder.driveDirIcon.setImageResource(R.drawable.dir_start);
79 | holder.driveLineName.setText("出发");
80 | holder.driveDirUp.setVisibility(View.GONE);
81 | holder.driveDirDown.setVisibility(View.VISIBLE);
82 | holder.splitLine.setVisibility(View.GONE);
83 | return convertView;
84 | } else if (position == mItemList.size() - 1) {
85 | holder.driveDirIcon.setImageResource(R.drawable.dir_end);
86 | holder.driveLineName.setText("到达终点");
87 | holder.driveDirUp.setVisibility(View.VISIBLE);
88 | holder.driveDirDown.setVisibility(View.GONE);
89 | holder.splitLine.setVisibility(View.VISIBLE);
90 | return convertView;
91 | } else {
92 | String actionName = item.getAction();
93 | int resID = AMapUtil.getDriveActionID(actionName);
94 | holder.driveDirIcon.setImageResource(resID);
95 | holder.driveLineName.setText(item.getInstruction());
96 | holder.driveDirUp.setVisibility(View.VISIBLE);
97 | holder.driveDirDown.setVisibility(View.VISIBLE);
98 | holder.splitLine.setVisibility(View.VISIBLE);
99 | return convertView;
100 | }
101 |
102 | }
103 |
104 | private class ViewHolder {
105 | TextView driveLineName;
106 | ImageView driveDirIcon;
107 | ImageView driveDirUp;
108 | ImageView driveDirDown;
109 | ImageView splitLine;
110 | }
111 |
112 | }
113 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/activity/route/RideRouteDetailActivity.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.activity.route;
2 |
3 | import android.content.Intent;
4 | import android.os.Bundle;
5 | import android.view.View;
6 | import android.widget.ListView;
7 | import android.widget.TextView;
8 |
9 | import com.amap.api.services.route.RidePath;
10 | import com.carryondown.app.R;
11 | import com.carryondown.app.base.BaseActivity;
12 | import com.carryondown.app.util.AMapUtil;
13 |
14 | /**
15 | * 骑行路线详情
16 | */
17 | public class RideRouteDetailActivity extends BaseActivity {
18 | private RidePath mRidePath;
19 | private TextView mTitleWalkRoute;
20 | private ListView mRideSegmentList;
21 | private RideSegmentListAdapter mRideSegmentListAdapter;
22 |
23 | @Override
24 | public void onCreate(Bundle savedInstanceState) {
25 | super.onCreate(savedInstanceState);
26 | setContentView(R.layout.activity_route_detail);
27 | setTitle("骑行路线详情");
28 | showContentView();
29 | getIntentData();
30 | mTitleWalkRoute = (TextView) findViewById(R.id.firstline);
31 | String dur = AMapUtil.getFriendlyTime((int) mRidePath.getDuration());
32 | String dis = AMapUtil
33 | .getFriendlyLength((int) mRidePath.getDistance());
34 | mTitleWalkRoute.setText(dur + "(" + dis + ")");
35 | mRideSegmentList = (ListView) findViewById(R.id.bus_segment_list);
36 | mRideSegmentListAdapter = new RideSegmentListAdapter(
37 | this.getApplicationContext(), mRidePath.getSteps());
38 | mRideSegmentList.setAdapter(mRideSegmentListAdapter);
39 |
40 | }
41 |
42 | private void getIntentData() {
43 | Intent intent = getIntent();
44 | if (intent == null) {
45 | return;
46 | }
47 | mRidePath = intent.getParcelableExtra("ride_path");
48 | }
49 |
50 |
51 | }
52 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/activity/route/RideSegmentListAdapter.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.activity.route;
2 |
3 | import android.content.Context;
4 | import android.view.View;
5 | import android.view.ViewGroup;
6 | import android.widget.BaseAdapter;
7 | import android.widget.ImageView;
8 | import android.widget.TextView;
9 |
10 | import com.amap.api.services.route.RideStep;
11 | import com.carryondown.app.R;
12 | import com.carryondown.app.util.AMapUtil;
13 |
14 | import java.util.ArrayList;
15 | import java.util.List;
16 |
17 | /**
18 | * 骑行路线详情页adapter
19 | *
20 | */
21 | public class RideSegmentListAdapter extends BaseAdapter {
22 | private Context mContext;
23 | private List mItemList = new ArrayList();
24 |
25 | public RideSegmentListAdapter(Context applicationContext,
26 | List steps) {
27 | mContext = applicationContext;
28 | mItemList.add(new RideStep());
29 | for (RideStep rideStep : steps) {
30 | mItemList.add(rideStep);
31 | }
32 | mItemList.add(new RideStep());
33 | }
34 |
35 | @Override
36 | public int getCount() {
37 | return mItemList.size();
38 | }
39 |
40 | @Override
41 | public Object getItem(int position) {
42 | return mItemList.get(position);
43 | }
44 |
45 | @Override
46 | public long getItemId(int position) {
47 | return position;
48 | }
49 |
50 | @Override
51 | public View getView(int position, View convertView, ViewGroup parent) {
52 | ViewHolder holder = null;
53 | if (convertView == null) {
54 | holder = new ViewHolder();
55 | convertView = View.inflate(mContext, R.layout.item_bus_segment,
56 | null);
57 | holder.lineName = (TextView) convertView
58 | .findViewById(R.id.bus_line_name);
59 | holder.dirIcon = (ImageView) convertView
60 | .findViewById(R.id.bus_dir_icon);
61 | holder.dirUp = (ImageView) convertView
62 | .findViewById(R.id.bus_dir_icon_up);
63 | holder.dirDown = (ImageView) convertView
64 | .findViewById(R.id.bus_dir_icon_down);
65 | holder.splitLine = (ImageView) convertView
66 | .findViewById(R.id.bus_seg_split_line);
67 | convertView.setTag(holder);
68 | } else {
69 | holder = (ViewHolder) convertView.getTag();
70 | }
71 | final RideStep item = mItemList.get(position);
72 | if (position == 0) {
73 | holder.dirIcon.setImageResource(R.drawable.dir_start);
74 | holder.lineName.setText("出发");
75 | holder.dirUp.setVisibility(View.INVISIBLE);
76 | holder.dirDown.setVisibility(View.VISIBLE);
77 | holder.splitLine.setVisibility(View.INVISIBLE);
78 | return convertView;
79 | } else if (position == mItemList.size() - 1) {
80 | holder.dirIcon.setImageResource(R.drawable.dir_end);
81 | holder.lineName.setText("到达终点");
82 | holder.dirUp.setVisibility(View.VISIBLE);
83 | holder.dirDown.setVisibility(View.INVISIBLE);
84 | return convertView;
85 | } else {
86 | holder.splitLine.setVisibility(View.VISIBLE);
87 | holder.dirUp.setVisibility(View.VISIBLE);
88 | holder.dirDown.setVisibility(View.VISIBLE);
89 | String actionName = item.getAction();
90 | int resID = AMapUtil.getWalkActionID(actionName);
91 | holder.dirIcon.setImageResource(resID);
92 | holder.lineName.setText(item.getInstruction());
93 | return convertView;
94 | }
95 |
96 | }
97 |
98 | private class ViewHolder {
99 | TextView lineName;
100 | ImageView dirIcon;
101 | ImageView dirUp;
102 | ImageView dirDown;
103 | ImageView splitLine;
104 | }
105 |
106 | }
107 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/activity/route/SchemeBusStep.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.activity.route;
2 |
3 | import com.amap.api.services.route.BusStep;
4 |
5 | public class SchemeBusStep extends BusStep {
6 |
7 | private boolean isWalk = false;
8 | private boolean isBus = false;
9 | private boolean israilway = false;
10 | private boolean istaxi = false;
11 | private boolean isStart = false;
12 | private boolean isEnd = false;
13 |
14 | public SchemeBusStep(BusStep step) {
15 | if (step != null) {
16 | this.setBusLine(step.getBusLine());
17 | this.setWalk(step.getWalk());
18 | this.setRailway(step.getRailway());
19 | this.setTaxi(step.getTaxi());
20 | }
21 | }
22 |
23 | public boolean isWalk() {
24 | return isWalk;
25 | }
26 |
27 | public void setWalk(boolean isWalk) {
28 | this.isWalk = isWalk;
29 | }
30 |
31 | public boolean isBus() {
32 | return isBus;
33 | }
34 |
35 | public void setBus(boolean isBus) {
36 | this.isBus = isBus;
37 | }
38 |
39 | public boolean isStart() {
40 | return isStart;
41 | }
42 |
43 | public void setStart(boolean isStart) {
44 | this.isStart = isStart;
45 | }
46 |
47 | public boolean isEnd() {
48 | return isEnd;
49 | }
50 |
51 | public void setEnd(boolean isEnd) {
52 | this.isEnd = isEnd;
53 | }
54 |
55 | public boolean isRailway() {
56 | return israilway;
57 | }
58 |
59 | public boolean isTaxi() {
60 | return istaxi;
61 | }
62 |
63 | public void setRailway(boolean israilway) {
64 | this.israilway = israilway;
65 | }
66 |
67 | public void setTaxi(boolean istaxi) {
68 | this.istaxi = istaxi;
69 | }
70 |
71 |
72 |
73 |
74 | }
75 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/activity/route/WalkRouteDetailActivity.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.activity.route;
2 |
3 | import android.content.Intent;
4 | import android.os.Bundle;
5 | import android.widget.ListView;
6 | import android.widget.TextView;
7 |
8 | import com.amap.api.services.route.WalkPath;
9 | import com.carryondown.app.R;
10 | import com.carryondown.app.base.BaseActivity;
11 | import com.carryondown.app.util.AMapUtil;
12 |
13 | public class WalkRouteDetailActivity extends BaseActivity {
14 | private WalkPath mWalkPath;
15 | private TextView mTitleWalkRoute;
16 | private ListView mWalkSegmentList;
17 | private WalkSegmentListAdapter mWalkSegmentListAdapter;
18 |
19 | @Override
20 | public void onCreate(Bundle savedInstanceState) {
21 | super.onCreate(savedInstanceState);
22 | setContentView(R.layout.activity_route_detail);
23 | setTitle("步行路线详情");
24 | showContentView();
25 | getIntentData();
26 | mTitleWalkRoute = (TextView) findViewById(R.id.firstline);
27 | String dur = AMapUtil.getFriendlyTime((int) mWalkPath.getDuration());
28 | String dis = AMapUtil
29 | .getFriendlyLength((int) mWalkPath.getDistance());
30 | mTitleWalkRoute.setText(dur + "(" + dis + ")");
31 | mWalkSegmentList = (ListView) findViewById(R.id.bus_segment_list);
32 | mWalkSegmentListAdapter = new WalkSegmentListAdapter(
33 | this.getApplicationContext(), mWalkPath.getSteps());
34 | mWalkSegmentList.setAdapter(mWalkSegmentListAdapter);
35 |
36 | }
37 |
38 | private void getIntentData() {
39 | Intent intent = getIntent();
40 | if (intent == null) {
41 | return;
42 | }
43 | mWalkPath = intent.getParcelableExtra("walk_path");
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/activity/route/WalkSegmentListAdapter.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.activity.route;
2 |
3 | import android.content.Context;
4 | import android.view.View;
5 | import android.view.ViewGroup;
6 | import android.widget.BaseAdapter;
7 | import android.widget.ImageView;
8 | import android.widget.TextView;
9 |
10 | import com.amap.api.services.route.WalkStep;
11 | import com.carryondown.app.R;
12 | import com.carryondown.app.util.AMapUtil;
13 |
14 | import java.util.ArrayList;
15 | import java.util.List;
16 |
17 | /**
18 | * 步行路线详情页adapter
19 | *
20 | */
21 | public class WalkSegmentListAdapter extends BaseAdapter {
22 | private Context mContext;
23 | private List mItemList = new ArrayList();
24 |
25 | public WalkSegmentListAdapter(Context applicationContext,
26 | List steps) {
27 | mContext = applicationContext;
28 | mItemList.add(new WalkStep());
29 | for (WalkStep walkStep : steps) {
30 | mItemList.add(walkStep);
31 | }
32 | mItemList.add(new WalkStep());
33 | }
34 |
35 | @Override
36 | public int getCount() {
37 | return mItemList.size();
38 | }
39 |
40 | @Override
41 | public Object getItem(int position) {
42 | return mItemList.get(position);
43 | }
44 |
45 | @Override
46 | public long getItemId(int position) {
47 | return position;
48 | }
49 |
50 | @Override
51 | public View getView(int position, View convertView, ViewGroup parent) {
52 | ViewHolder holder = null;
53 | if (convertView == null) {
54 | holder = new ViewHolder();
55 | convertView = View.inflate(mContext, R.layout.item_bus_segment,
56 | null);
57 | holder.lineName = (TextView) convertView
58 | .findViewById(R.id.bus_line_name);
59 | holder.dirIcon = (ImageView) convertView
60 | .findViewById(R.id.bus_dir_icon);
61 | holder.dirUp = (ImageView) convertView
62 | .findViewById(R.id.bus_dir_icon_up);
63 | holder.dirDown = (ImageView) convertView
64 | .findViewById(R.id.bus_dir_icon_down);
65 | holder.splitLine = (ImageView) convertView
66 | .findViewById(R.id.bus_seg_split_line);
67 | convertView.setTag(holder);
68 | } else {
69 | holder = (ViewHolder) convertView.getTag();
70 | }
71 | final WalkStep item = mItemList.get(position);
72 | if (position == 0) {
73 | holder.dirIcon.setImageResource(R.drawable.dir_start);
74 | holder.lineName.setText("出发");
75 | holder.dirUp.setVisibility(View.INVISIBLE);
76 | holder.dirDown.setVisibility(View.VISIBLE);
77 | holder.splitLine.setVisibility(View.INVISIBLE);
78 | return convertView;
79 | } else if (position == mItemList.size() - 1) {
80 | holder.dirIcon.setImageResource(R.drawable.dir_end);
81 | holder.lineName.setText("到达终点");
82 | holder.dirUp.setVisibility(View.VISIBLE);
83 | holder.dirDown.setVisibility(View.INVISIBLE);
84 | return convertView;
85 | } else {
86 | holder.splitLine.setVisibility(View.VISIBLE);
87 | holder.dirUp.setVisibility(View.VISIBLE);
88 | holder.dirDown.setVisibility(View.VISIBLE);
89 | String actionName = item.getAction();
90 | int resID = AMapUtil.getWalkActionID(actionName);
91 | holder.dirIcon.setImageResource(resID);
92 | holder.lineName.setText(item.getInstruction());
93 | return convertView;
94 | }
95 |
96 | }
97 |
98 | private class ViewHolder {
99 | TextView lineName;
100 | ImageView dirIcon;
101 | ImageView dirUp;
102 | ImageView dirDown;
103 | ImageView splitLine;
104 | }
105 |
106 | }
107 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/application/MyApplication.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.application;
2 |
3 | import android.app.Application;
4 |
5 | import com.uuzuche.lib_zxing.activity.ZXingLibrary;
6 |
7 | /**
8 | * Created by Administrator on 2017/4/20.
9 | */
10 |
11 | public class MyApplication extends Application {
12 |
13 | private static MyApplication myApplication;
14 | public static MyApplication getInstance() {
15 | return myApplication;
16 | }
17 |
18 | @Override
19 | public void onCreate() {
20 | super.onCreate();
21 | myApplication = this;
22 | ZXingLibrary.initDisplayOpinion(this);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/base/PerfectClickListener.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.base;
2 |
3 | import android.view.View;
4 | import android.view.View.OnClickListener;
5 |
6 | import java.util.Calendar;
7 |
8 | /**
9 | * 避免在1秒内出发多次点击
10 | * Created by yangcai on 2016/1/15.
11 | */
12 | public abstract class PerfectClickListener implements OnClickListener {
13 | public static final int MIN_CLICK_DELAY_TIME = 1000;
14 | private long lastClickTime = 0;
15 | private int id = -1;
16 |
17 | @Override
18 | public void onClick(View v) {
19 | long currentTime = Calendar.getInstance().getTimeInMillis();
20 | int mId = v.getId();
21 | if (id != mId) {
22 | id = mId;
23 | lastClickTime = currentTime;
24 | onNoDoubleClick(v);
25 | return;
26 | }
27 | if (currentTime - lastClickTime > MIN_CLICK_DELAY_TIME) {
28 | lastClickTime = currentTime;
29 | onNoDoubleClick(v);
30 | }
31 | }
32 |
33 | protected abstract void onNoDoubleClick(View v);
34 | }
35 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/dialog/LoadDialog.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.dialog;
2 |
3 | import android.os.Bundle;
4 | import android.support.annotation.Nullable;
5 | import android.support.annotation.StyleRes;
6 | import android.support.v4.app.DialogFragment;
7 | import android.view.LayoutInflater;
8 | import android.view.View;
9 | import android.view.ViewGroup;
10 | import android.view.Window;
11 | import android.view.animation.Animation;
12 | import android.view.animation.AnimationUtils;
13 | import android.view.animation.LinearInterpolator;
14 | import android.widget.ImageView;
15 |
16 | import com.carryondown.app.R;
17 |
18 | /**
19 | * Created by Administrator on 2017/4/24.
20 | */
21 |
22 | public class LoadDialog extends DialogFragment {
23 |
24 | public static LoadDialog getInstance()
25 | {
26 | return FirstQuote.instance;
27 | }
28 |
29 | //在第一次被引用时被加载
30 | static class FirstQuote
31 | {
32 | private static LoadDialog instance = new LoadDialog();
33 | }
34 |
35 | @Nullable
36 | @Override
37 | public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
38 | getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
39 | getDialog().setCanceledOnTouchOutside(false);
40 | View view = inflater.inflate(R.layout.load, container);
41 | Animation operatingAnim = AnimationUtils.loadAnimation(view.getContext(), R.anim.tips);
42 | LinearInterpolator lin = new LinearInterpolator();
43 | operatingAnim.setInterpolator(lin);
44 | ImageView iv_load = (ImageView)view.findViewById(R.id.iv_load);
45 | iv_load.setAnimation(operatingAnim);
46 | return view;
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/lib/InputTipTask.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Project Name:Android_Car_Example
3 | * File Name:InputTipTask.java
4 | * Package Name:com.amap.api.car.example
5 | * Date:2015年4月7日上午10:42:41
6 | */
7 |
8 | package com.carryondown.app.lib;
9 |
10 | import android.content.Context;
11 |
12 | import com.amap.api.services.core.AMapException;
13 | import com.amap.api.services.help.Inputtips;
14 | import com.amap.api.services.help.Inputtips.InputtipsListener;
15 | import com.amap.api.services.help.InputtipsQuery;
16 | import com.amap.api.services.help.Tip;
17 |
18 | import java.util.ArrayList;
19 | import java.util.List;
20 |
21 | /**
22 | * ClassName:InputTipTask
23 | * Function: 简单封装了Inputtips的搜索服务,将其余提示的adapter进行数据绑定
24 | * Date: 2015年4月7日 上午10:42:41
25 | * @author yiyi.qi
26 | * @version
27 | * @since JDK 1.6
28 | * @see
29 | */
30 | public class InputTipTask implements InputtipsListener {
31 |
32 | private static InputTipTask mInputTipTask;
33 |
34 | private Inputtips mInputTips;
35 |
36 | private RecomandAdapter mAdapter;
37 |
38 | public static InputTipTask getInstance(RecomandAdapter adapter) {
39 | if (mInputTipTask == null) {
40 | mInputTipTask = new InputTipTask();
41 | }
42 | //单例情况,多次进入DestinationActivity传进来的RecomandAdapter对象会不是同一个
43 | mInputTipTask.setRecommandAdapter(adapter);
44 | return mInputTipTask;
45 | }
46 |
47 | public void setRecommandAdapter(RecomandAdapter adapter) {
48 | mAdapter = adapter;
49 | }
50 |
51 | private InputTipTask() {
52 |
53 |
54 | }
55 |
56 | public void searchTips(Context context, String keyWord, String city) {
57 |
58 | InputtipsQuery query = new InputtipsQuery(keyWord, city);
59 |
60 | mInputTips = new Inputtips(context, query);
61 | mInputTips.setInputtipsListener(this);
62 | mInputTips.requestInputtipsAsyn();
63 |
64 |
65 | }
66 |
67 | @Override
68 | public void onGetInputtips(List tips, int resultCode) {
69 |
70 | if (resultCode == AMapException.CODE_AMAP_SUCCESS && tips != null) {
71 | ArrayList positions = new ArrayList();
72 | for (Tip tip : tips) {
73 |
74 | if (tip.getPoint() != null) {
75 |
76 | positions.add(new PositionEntity(tip.getPoint().getLatitude(), tip.getPoint().getLongitude(), tip.getName(), tip.getDistrict()));
77 | } else {
78 | positions.add(new PositionEntity(0, 0, tip.getName(), tip.getDistrict()));
79 | }
80 |
81 | }
82 | mAdapter.setPositionEntities(positions);
83 | mAdapter.notifyDataSetChanged();
84 | }
85 | //TODO 可以根据app自身需求对查询错误情况进行相应的提示或者逻辑处理
86 | }
87 |
88 | }
89 |
90 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/lib/LocationTask.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Project Name:Android_Car_Example
3 | * File Name:LocationTask.java
4 | * Package Name:com.amap.api.car.example
5 | * Date:2015年4月3日上午9:27:45
6 | *
7 | */
8 |
9 | package com.carryondown.app.lib;
10 |
11 | import android.content.Context;
12 | import android.text.TextUtils;
13 |
14 | import com.amap.api.location.AMapLocation;
15 | import com.amap.api.location.AMapLocationClient;
16 | import com.amap.api.location.AMapLocationClientOption;
17 | import com.amap.api.location.AMapLocationListener;
18 |
19 |
20 | /**
21 | * ClassName:LocationTask
22 | * Function: 简单封装了定位请求,可以进行单次定位和多次定位,注意的是在app结束或定位结束时注意销毁定位
23 | * Date: 2015年4月3日 上午9:27:45
24 | *
25 | * @author yiyi.qi
26 | * @version
27 | * @since JDK 1.6
28 | * @see
29 | */
30 | public class LocationTask implements AMapLocationListener,
31 | OnLocationGetListener {
32 |
33 | private AMapLocationClient mLocationClient;
34 |
35 | private static LocationTask mLocationTask;
36 |
37 | private Context mContext;
38 |
39 | private OnLocationGetListener mOnLocationGetlisGetListener;
40 |
41 | private RegeocodeTask mRegecodeTask;
42 |
43 | private LocationTask(Context context) {
44 | mLocationClient = new AMapLocationClient(context);
45 | mLocationClient.setLocationListener(this);
46 | mRegecodeTask = new RegeocodeTask(context);
47 | mRegecodeTask.setOnLocationGetListener(this);
48 | mContext = context;
49 | }
50 |
51 | public void setOnLocationGetListener(
52 | OnLocationGetListener onGetLocationListener) {
53 | mOnLocationGetlisGetListener = onGetLocationListener;
54 | }
55 |
56 | public static LocationTask getInstance(Context context) {
57 | if (mLocationTask == null) {
58 | mLocationTask = new LocationTask(context);
59 | }
60 | return mLocationTask;
61 | }
62 |
63 | /**
64 | * 开启单次定位
65 | */
66 | public void startSingleLocate() {
67 | AMapLocationClientOption option=new AMapLocationClientOption();
68 | option.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
69 | option.setOnceLocation(true);
70 | mLocationClient.setLocationOption(option);
71 |
72 | mLocationClient.startLocation();
73 |
74 | }
75 |
76 | /**
77 | * 开启多次定位
78 | */
79 | public void startLocate() {
80 |
81 | AMapLocationClientOption option=new AMapLocationClientOption();
82 | option.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
83 | option.setOnceLocation(false);
84 | option.setInterval(1000);
85 | mLocationClient.setLocationOption(option);
86 | mLocationClient.startLocation();
87 |
88 | }
89 |
90 | /**
91 | * 结束定位,可以跟多次定位配合使用
92 | */
93 | public void stopLocate() {
94 | mLocationClient.stopLocation();
95 |
96 | }
97 |
98 | /**
99 | * 销毁定位资源
100 | */
101 | public void onDestroy() {
102 | mLocationClient.stopLocation();
103 | mLocationClient.onDestroy();
104 | mLocationTask = null;
105 | }
106 |
107 |
108 |
109 | @Override
110 | public void onLocationChanged(AMapLocation amapLocation) {
111 | if (amapLocation != null && amapLocation.getErrorCode() == 0) {
112 | PositionEntity entity = new PositionEntity();
113 | entity.latitue = amapLocation.getLatitude();
114 | entity.longitude = amapLocation.getLongitude();
115 |
116 | if (!TextUtils.isEmpty(amapLocation.getAddress())) {
117 | entity.address = amapLocation.getAddress();
118 | }
119 | if (!TextUtils.isEmpty(amapLocation.getCity())) {
120 | entity.city = amapLocation.getCity();
121 | }
122 | mOnLocationGetlisGetListener.onLocationGet(entity);
123 |
124 | }
125 | }
126 |
127 | @Override
128 | public void onLocationGet(PositionEntity entity) {
129 |
130 | // TODO Auto-generated method stub
131 |
132 | }
133 |
134 | @Override
135 | public void onRegecodeGet(PositionEntity entity) {
136 |
137 | // TODO Auto-generated method stub
138 |
139 | }
140 |
141 | }
142 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/lib/OnLocationGetListener.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Project Name:Android_Car_Example
3 | * File Name:OnLocationGetListener.java
4 | * Package Name:com.amap.api.car.example
5 | * Date:2015年4月2日下午6:17:17
6 | *
7 | */
8 |
9 | package com.carryondown.app.lib;
10 | /**
11 | * ClassName:OnLocationGetListener
12 | * Function: 逆地理编码或者定位完成后回调接口
13 | * Date: 2015年4月2日 下午6:17:17
14 | * @author yiyi.qi
15 | * @version
16 | * @since JDK 1.6
17 | * @see
18 | */
19 | public interface OnLocationGetListener {
20 |
21 | public void onLocationGet(PositionEntity entity);
22 |
23 | public void onRegecodeGet(PositionEntity entity);
24 | }
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/lib/PoiSearchTask.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Project Name:Android_Car_Example
3 | * File Name:PoiSearchTask.java
4 | * Package Name:com.amap.api.car.example
5 | * Date:2015年4月7日上午11:25:07
6 | *
7 | */
8 |
9 | package com.carryondown.app.lib;
10 |
11 | import android.content.Context;
12 | import android.util.Log;
13 |
14 | import com.amap.api.services.core.AMapException;
15 | import com.amap.api.services.core.PoiItem;
16 | import com.amap.api.services.poisearch.PoiResult;
17 | import com.amap.api.services.poisearch.PoiSearch;
18 | import com.amap.api.services.poisearch.PoiSearch.OnPoiSearchListener;
19 | import com.amap.api.services.poisearch.PoiSearch.Query;
20 |
21 | import java.util.ArrayList;
22 | import java.util.List;
23 |
24 | /**
25 | * ClassName:PoiSearchTask
26 | * Function: 简单封装了poi搜索的功能,搜索结果配合RecommendAdapter进行使用显示
27 | * Date: 2015年4月7日 上午11:25:07
28 | *
29 | * @author yiyi.qi
30 | * @version
31 | * @since JDK 1.6
32 | * @see
33 | */
34 | public class PoiSearchTask implements OnPoiSearchListener {
35 |
36 | private Context mContext;
37 |
38 | private RecomandAdapter mRecommandAdapter;
39 |
40 | public PoiSearchTask(Context context, RecomandAdapter recomandAdapter) {
41 | mContext = context;
42 |
43 | mRecommandAdapter = recomandAdapter;
44 |
45 | }
46 |
47 | public void search(String keyWord, String city) {
48 | Log.i("MY","search");
49 | Query query = new PoiSearch.Query(keyWord, "", city);
50 | query.setPageSize(10);
51 | query.setPageNum(0);
52 |
53 | PoiSearch poiSearch = new PoiSearch(mContext, query);
54 | poiSearch.setOnPoiSearchListener(this);
55 | poiSearch.searchPOIAsyn();
56 | }
57 |
58 |
59 |
60 | @Override
61 | public void onPoiSearched(PoiResult poiResult, int resultCode) {
62 | if (resultCode == AMapException.CODE_AMAP_SUCCESS && poiResult != null) {
63 | ArrayList pois=poiResult.getPois();
64 | if(pois==null){
65 | return;
66 | }
67 | List entities=new ArrayList();
68 | for(PoiItem poiItem:pois){
69 | PositionEntity entity=new PositionEntity(poiItem.getLatLonPoint().getLatitude(),
70 | poiItem.getLatLonPoint().getLongitude(),poiItem.getTitle()
71 | ,poiItem.getCityName());
72 | entities.add(entity);
73 | }
74 | mRecommandAdapter.setPositionEntities(entities);
75 | mRecommandAdapter.notifyDataSetChanged();
76 | }
77 | //TODO 可以根据app自身需求对查询错误情况进行相应的提示或者逻辑处理
78 | }
79 |
80 | @Override
81 | public void onPoiItemSearched(PoiItem poiItem, int i) {
82 |
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/lib/PositionEntity.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Project Name:Android_Car_Example
3 | * File Name:PositionEntity.java
4 | * Package Name:com.amap.api.car.example
5 | * Date:2015年4月3日上午9:50:28
6 | *
7 | */
8 |
9 | package com.carryondown.app.lib;
10 |
11 | /**
12 | * ClassName:PositionEntity
13 | * Function: 封装的关于位置的实体
14 | * Date: 2015年4月3日 上午9:50:28
15 | *
16 | * @author yiyi.qi
17 | * @version
18 | * @since JDK 1.6
19 | * @see
20 | */
21 | public class PositionEntity {
22 |
23 | public double latitue;
24 |
25 | public double longitude;
26 |
27 | public String address;
28 |
29 | public String city;
30 |
31 | public PositionEntity() {
32 | }
33 |
34 | public PositionEntity(double latitude, double longtitude, String address, String city) {
35 | this.latitue = latitude;
36 | this.longitude = longtitude;
37 | this.address = address;
38 | this.city = city;
39 | }
40 |
41 | }
42 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/lib/RecomandAdapter.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Project Name:Android_Car_Example
3 | * File Name:RecomandAdapter.java
4 | * Package Name:com.amap.api.car.example
5 | * Date:2015年4月3日上午11:29:45
6 | *
7 | */
8 |
9 | package com.carryondown.app.lib;
10 |
11 | import android.content.Context;
12 | import android.view.LayoutInflater;
13 | import android.view.View;
14 | import android.view.ViewGroup;
15 | import android.widget.BaseAdapter;
16 | import android.widget.TextView;
17 |
18 | import com.carryondown.app.R;
19 |
20 | import java.util.ArrayList;
21 | import java.util.Arrays;
22 | import java.util.List;
23 |
24 | /**
25 | * ClassName:RecomandAdapter
26 | * Function: 显示的poi列表
27 | * Date: 2015年4月3日 上午11:29:45
28 | *
29 | * @author yiyi.qi
30 | * @version
31 | * @since JDK 1.6
32 | * @see
33 | */
34 | public class RecomandAdapter extends BaseAdapter {
35 |
36 | // PositionEntity[] entities = new PositionEntity[] {
37 | // new PositionEntity(39.908722, 116.397496, "天安门","010"),
38 | // new PositionEntity(39.91141, 116.411306, "王府井","010"),
39 | // new PositionEntity(39.908342, 116.375121, "西单","010"),
40 | // new PositionEntity(39.990949, 116.481090, "方恒国际中心","010"),
41 | // new PositionEntity(39.914529, 116.316648, "玉渊潭公园","010"),
42 | // new PositionEntity(39.999093, 116.273945, "颐和园","010"),
43 | // new PositionEntity(39.999022, 116.324698, "清华大学","010"),
44 | // new PositionEntity(39.982940, 116.319802, "中关村","010"),
45 | // new PositionEntity(39.933708, 116.454185, "三里屯","010"),
46 | // new PositionEntity(39.941627, 116.435584, "东直门","010") };
47 |
48 | private List mPositionEntities;
49 |
50 | private Context mContext;
51 |
52 | public RecomandAdapter(Context context) {
53 | mContext = context;
54 | // mPositionEntities = Arrays.asList(entities);
55 | mPositionEntities = new ArrayList<>();
56 |
57 | }
58 |
59 | public void setPositionEntities(List entities) {
60 | this.mPositionEntities = entities;
61 |
62 | }
63 |
64 | @Override
65 | public int getCount() {
66 |
67 | // TODO Auto-generated method stub
68 | return mPositionEntities.size();
69 | }
70 |
71 | @Override
72 | public Object getItem(int position) {
73 |
74 | return mPositionEntities.get(position);
75 | }
76 |
77 | @Override
78 | public long getItemId(int position) {
79 |
80 | // TODO Auto-generated method stub
81 | return 0;
82 | }
83 |
84 | @Override
85 | public View getView(int position, View convertView, ViewGroup parent) {
86 | ViewHolder viewHolder;
87 | if (convertView == null) {
88 | LayoutInflater inflater = LayoutInflater.from(mContext);
89 | convertView = inflater.inflate(R.layout.view_recommond,
90 | null);
91 | viewHolder = new ViewHolder(convertView);
92 | convertView.setTag(viewHolder);
93 | } else {
94 | viewHolder = (ViewHolder)convertView.getTag();
95 | }
96 | viewHolder.tv_address.setText(mPositionEntities.get(position).address);
97 | viewHolder.tv_city.setText(mPositionEntities.get(position).city);
98 | return convertView;
99 | }
100 |
101 | class ViewHolder {
102 |
103 | public TextView tv_address,tv_city;
104 |
105 | public ViewHolder(View itemView) {
106 | tv_address = (TextView) itemView.findViewById(R.id.tv_address);
107 | tv_city = (TextView) itemView.findViewById(R.id.tv_city);
108 | }
109 |
110 | }
111 |
112 |
113 |
114 | }
115 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/lib/RegeocodeTask.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Project Name:Android_Car_Example
3 | * File Name:RegeocodeTask.java
4 | * Package Name:com.amap.api.car.example
5 | * Date:2015年4月2日下午6:24:53
6 | *
7 | */
8 |
9 | package com.carryondown.app.lib;
10 |
11 | import android.content.Context;
12 |
13 | import com.amap.api.services.core.AMapException;
14 | import com.amap.api.services.core.LatLonPoint;
15 | import com.amap.api.services.geocoder.GeocodeResult;
16 | import com.amap.api.services.geocoder.GeocodeSearch;
17 | import com.amap.api.services.geocoder.GeocodeSearch.OnGeocodeSearchListener;
18 | import com.amap.api.services.geocoder.RegeocodeQuery;
19 | import com.amap.api.services.geocoder.RegeocodeResult;
20 |
21 | /**
22 | * ClassName:RegeocodeTask
23 | * Function: 简单的封装的逆地理编码功能
24 | * Date: 2015年4月2日 下午6:24:53
25 | *
26 | * @author yiyi.qi
27 | * @version
28 | * @since JDK 1.6
29 | * @see
30 | */
31 | public class RegeocodeTask implements OnGeocodeSearchListener {
32 | private static final float SEARCH_RADIUS = 50;
33 | private OnLocationGetListener mOnLocationGetListener;
34 |
35 | private GeocodeSearch mGeocodeSearch;
36 |
37 | public RegeocodeTask(Context context) {
38 | mGeocodeSearch = new GeocodeSearch(context);
39 | mGeocodeSearch.setOnGeocodeSearchListener(this);
40 | }
41 |
42 | public void search(double latitude, double longitude) {
43 | RegeocodeQuery regecodeQuery = new RegeocodeQuery(new LatLonPoint(
44 | latitude, longitude), SEARCH_RADIUS, GeocodeSearch.AMAP);
45 | mGeocodeSearch.getFromLocationAsyn(regecodeQuery);
46 | }
47 |
48 | public void setOnLocationGetListener(
49 | OnLocationGetListener onLocationGetListener) {
50 | mOnLocationGetListener = onLocationGetListener;
51 | }
52 |
53 | @Override
54 | public void onGeocodeSearched(GeocodeResult arg0, int arg1) {
55 |
56 | }
57 |
58 | @Override
59 | public void onRegeocodeSearched(RegeocodeResult regeocodeReult,
60 | int resultCode) {
61 | if (resultCode == AMapException.CODE_AMAP_SUCCESS) {
62 | if (regeocodeReult != null
63 | && regeocodeReult.getRegeocodeAddress() != null
64 | && mOnLocationGetListener != null) {
65 | String address = regeocodeReult.getRegeocodeAddress()
66 | .getFormatAddress();
67 | String city = regeocodeReult.getRegeocodeAddress().getCityCode();
68 |
69 | PositionEntity entity = new PositionEntity();
70 | entity.address = address;
71 | entity.city = city;
72 | mOnLocationGetListener.onRegecodeGet(entity);
73 |
74 | }
75 | }
76 | //TODO 可以根据app自身需求对查询错误情况进行相应的提示或者逻辑处理
77 | }
78 |
79 | }
80 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/lib/Sha1.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.lib;
2 |
3 | import android.content.Context;
4 | import android.content.pm.PackageInfo;
5 | import android.content.pm.PackageManager;
6 |
7 | import java.security.MessageDigest;
8 | import java.security.NoSuchAlgorithmException;
9 | import java.util.Locale;
10 |
11 | /**
12 | * Created by Administrator on 2017/4/19.
13 | */
14 |
15 | public class Sha1 {
16 | public static String sHA1(Context context) {
17 | try {
18 | PackageInfo info = context.getPackageManager().getPackageInfo(
19 | context.getPackageName(), PackageManager.GET_SIGNATURES);
20 | byte[] cert = info.signatures[0].toByteArray();
21 | MessageDigest md = MessageDigest.getInstance("SHA1");
22 | byte[] publicKey = md.digest(cert);
23 | StringBuffer hexString = new StringBuffer();
24 | for (int i = 0; i < publicKey.length; i++) {
25 | String appendString = Integer.toHexString(0xFF & publicKey[i])
26 | .toUpperCase(Locale.US);
27 | if (appendString.length() == 1)
28 | hexString.append("0");
29 | hexString.append(appendString);
30 | hexString.append(":");
31 | }
32 | String result = hexString.toString();
33 | return result.substring(0, result.length()-1);
34 | } catch (PackageManager.NameNotFoundException e) {
35 | e.printStackTrace();
36 | } catch (NoSuchAlgorithmException e) {
37 | e.printStackTrace();
38 | }
39 | return null;
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/lib/Utils.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Project Name:Android_Car_Example
3 | * File Name:Utils.java
4 | * Package Name:com.amap.api.car.example
5 | * Date:2015年4月7日下午3:43:05
6 | */
7 |
8 | package com.carryondown.app.lib;
9 |
10 | import com.amap.api.maps.AMap;
11 | import com.amap.api.maps.model.BitmapDescriptor;
12 | import com.amap.api.maps.model.BitmapDescriptorFactory;
13 | import com.amap.api.maps.model.LatLng;
14 | import com.amap.api.maps.model.Marker;
15 | import com.amap.api.maps.model.MarkerOptions;
16 | import com.carryondown.app.R;
17 |
18 | import java.util.ArrayList;
19 |
20 |
21 | /**
22 | * ClassName:Utils
23 | * Function: TODO ADD FUNCTION.
24 | * Reason: TODO ADD REASON.
25 | * Date: 2015年4月7日 下午3:43:05
26 | * @author yiyi.qi
27 | * @version
28 | * @since JDK 1.6
29 | * @see
30 | */
31 | public class Utils {
32 |
33 | private static ArrayList markers = new ArrayList();
34 |
35 | /**
36 | * 添加模拟测试的车的点
37 | */
38 | public static void addEmulateData(AMap amap, LatLng center) {
39 | if (markers.size() == 0) {
40 | BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory
41 | .fromResource(R.drawable.stable_cluster_marker_one_normal);
42 |
43 | for (int i = 0; i < 20; i++) {
44 | double latitudeDelt;
45 | double longtitudeDelt;
46 | if(i%2==0) {
47 | latitudeDelt = (Math.random() - 0.5) * 0.1;
48 | longtitudeDelt = (Math.random() - 0.5) * 0.1;
49 | }else
50 | {
51 | latitudeDelt = (Math.random() - 0.5) * 0.01;
52 | longtitudeDelt = (Math.random() - 0.5) * 0.01;
53 | }
54 | MarkerOptions markerOptions = new MarkerOptions();
55 | // markerOptions.setFlat(true);
56 | // markerOptions.anchor(0.5f, 0.5f);
57 | markerOptions.icon(bitmapDescriptor);
58 |
59 | markerOptions.position(new LatLng(center.latitude + latitudeDelt, center.longitude + longtitudeDelt));
60 | Marker marker = amap.addMarker(markerOptions);
61 | markers.add(marker);
62 | }
63 | } else {
64 | for (Marker marker : markers) {
65 | double latitudeDelt = (Math.random() - 0.5) * 0.1;
66 | double longtitudeDelt = (Math.random() - 0.5) * 0.1;
67 | marker.setPosition(new LatLng(center.latitude + latitudeDelt, center.longitude + longtitudeDelt));
68 |
69 | }
70 | }
71 | }
72 |
73 | /**
74 | * 移除marker
75 | */
76 | public static void removeMarkers() {
77 | for (Marker marker : markers) {
78 | marker.remove();
79 | marker.destroy();
80 | }
81 | markers.clear();
82 | }
83 |
84 | }
85 |
86 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/overlay/AMapServicesUtil.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.overlay;
2 |
3 | /**
4 | *
5 | */
6 |
7 | import android.graphics.Bitmap;
8 |
9 | import com.amap.api.maps.model.LatLng;
10 | import com.amap.api.services.core.LatLonPoint;
11 |
12 | import java.io.ByteArrayOutputStream;
13 | import java.io.IOException;
14 | import java.io.InputStream;
15 | import java.util.ArrayList;
16 | import java.util.List;
17 |
18 | class AMapServicesUtil {
19 | public static int BUFFER_SIZE = 2048;
20 |
21 | public static byte[] inputStreamToByte(InputStream in) throws IOException {
22 |
23 | ByteArrayOutputStream outStream = new ByteArrayOutputStream();
24 | byte[] data = new byte[BUFFER_SIZE];
25 | int count = -1;
26 | while ((count = in.read(data, 0, BUFFER_SIZE)) != -1)
27 | outStream.write(data, 0, count);
28 |
29 | data = null;
30 | return outStream.toByteArray();
31 | }
32 | public static LatLonPoint convertToLatLonPoint(LatLng latlon) {
33 | return new LatLonPoint(latlon.latitude, latlon.longitude);
34 | }
35 | public static LatLng convertToLatLng(LatLonPoint latLonPoint) {
36 | return new LatLng(latLonPoint.getLatitude(), latLonPoint.getLongitude());
37 | }
38 | public static ArrayList convertArrList(List shapes) {
39 | ArrayList lineShapes = new ArrayList();
40 | for (LatLonPoint point : shapes) {
41 | LatLng latLngTemp = AMapServicesUtil.convertToLatLng(point);
42 | lineShapes.add(latLngTemp);
43 | }
44 | return lineShapes;
45 | }
46 | public static Bitmap zoomBitmap(Bitmap bitmap, float res) {
47 | if (bitmap == null) {
48 | return null;
49 | }
50 | int width, height;
51 | width = (int) (bitmap.getWidth() * res);
52 | height = (int) (bitmap.getHeight() * res);
53 | Bitmap newbmp = Bitmap.createScaledBitmap(bitmap, width, height, true);
54 | return newbmp;
55 | }
56 |
57 | }
58 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/overlay/RideRouteOverlay.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.overlay;
2 |
3 | import android.content.Context;
4 |
5 | import com.amap.api.maps.AMap;
6 | import com.amap.api.maps.model.BitmapDescriptor;
7 | import com.amap.api.maps.model.BitmapDescriptorFactory;
8 | import com.amap.api.maps.model.LatLng;
9 | import com.amap.api.maps.model.MarkerOptions;
10 | import com.amap.api.maps.model.PolylineOptions;
11 | import com.amap.api.services.core.LatLonPoint;
12 | import com.amap.api.services.route.RidePath;
13 | import com.amap.api.services.route.RideStep;
14 | import com.carryondown.app.R;
15 | import com.carryondown.app.util.AMapUtil;
16 |
17 | import java.util.List;
18 |
19 | /**
20 | * 骑行路线图层类。在高德地图API里,如果要显示步行路线规划,可以用此类来创建骑行路线图层。如不满足需求,也可以自己创建自定义的骑行路线图层。
21 | * @since V3.5.0
22 | */
23 | public class RideRouteOverlay extends RouteOverlay {
24 |
25 | private PolylineOptions mPolylineOptions;
26 |
27 | private BitmapDescriptor walkStationDescriptor= null;
28 |
29 | private RidePath ridePath;
30 | /**
31 | * 通过此构造函数创建骑行路线图层。
32 | * @param context 当前activity。
33 | * @param amap 地图对象。
34 | * @param path 骑行路线规划的一个方案。详见搜索服务模块的路径查询包(com.amap.api.services.route)中的类 WalkStep。
35 | * @param start 起点。详见搜索服务模块的核心基础包(com.amap.api.services.core)中的类LatLonPoint。
36 | * @param end 终点。详见搜索服务模块的核心基础包(com.amap.api.services.core)中的类LatLonPoint。
37 | * @since V3.5.0
38 | */
39 | public RideRouteOverlay(Context context, AMap amap, RidePath path,
40 | LatLonPoint start, LatLonPoint end) {
41 | super(context);
42 | this.mAMap = amap;
43 | this.ridePath = path;
44 | startPoint = AMapUtil.convertToLatLng(start);
45 | endPoint = AMapUtil.convertToLatLng(end);
46 | }
47 | /**
48 | * 添加骑行路线到地图中。
49 | * @since V3.5.0
50 | */
51 | public void addToMap() {
52 |
53 | initPolylineOptions();
54 | try {
55 | List ridePaths = ridePath.getSteps();
56 | mPolylineOptions.add(startPoint);
57 | for (int i = 0; i < ridePaths.size(); i++) {
58 | RideStep rideStep = ridePaths.get(i);
59 | LatLng latLng = AMapUtil.convertToLatLng(rideStep
60 | .getPolyline().get(0));
61 |
62 | addRideStationMarkers(rideStep, latLng);
63 | addRidePolyLines(rideStep);
64 | }
65 | mPolylineOptions.add(endPoint);
66 | addStartAndEndMarker();
67 |
68 | showPolyline();
69 | } catch (Throwable e) {
70 | e.printStackTrace();
71 | }
72 | }
73 |
74 |
75 | /**
76 | * @param rideStep
77 | */
78 | private void addRidePolyLines(RideStep rideStep) {
79 | mPolylineOptions.addAll(AMapUtil.convertArrList(rideStep.getPolyline()));
80 | }
81 | /**
82 | * @param rideStep
83 | * @param position
84 | */
85 | private void addRideStationMarkers(RideStep rideStep, LatLng position) {
86 | addStationMarker(new MarkerOptions()
87 | .position(position)
88 | .title("\u65B9\u5411:" + rideStep.getAction()
89 | + "\n\u9053\u8DEF:" + rideStep.getRoad())
90 | .snippet(rideStep.getInstruction()).visible(nodeIconVisible)
91 | .anchor(0.5f, 0.5f).icon(walkStationDescriptor));
92 | }
93 |
94 | /**
95 | * 初始化线段属性
96 | */
97 | private void initPolylineOptions() {
98 |
99 | if(walkStationDescriptor == null) {
100 | walkStationDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.amap_ride);
101 | }
102 | mPolylineOptions = null;
103 | mPolylineOptions = new PolylineOptions();
104 | mPolylineOptions.color(getDriveColor()).width(getRouteWidth());
105 | }
106 | private void showPolyline() {
107 | addPolyLine(mPolylineOptions);
108 | }
109 | }
110 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/overlay/TraceOverlay.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.overlay;
2 |
3 | import com.amap.api.maps.AMap;
4 | import com.amap.api.maps.CameraUpdateFactory;
5 | import com.amap.api.maps.model.BitmapDescriptorFactory;
6 | import com.amap.api.maps.model.LatLng;
7 | import com.amap.api.maps.model.LatLngBounds;
8 | import com.amap.api.maps.model.LatLngBounds.Builder;
9 | import com.amap.api.maps.model.Polyline;
10 | import com.amap.api.maps.model.PolylineOptions;
11 |
12 | import java.util.ArrayList;
13 | import java.util.List;
14 |
15 | public class TraceOverlay {
16 | private Polyline mPolyline;
17 | private PolylineOptions mOption;
18 | private AMap mAMap;
19 | private List mTracedList = new ArrayList();
20 | public static final int TRACE_STATUS_PROCESSING = 1;
21 | public static final int TRACE_STATUS_FINISH = 2;
22 | public static final int TRACE_STATUS_FAILURE = 3;
23 | public static final int TRACE_STATUS_PREPARE = 4;
24 |
25 | private int mTraceStatus = TRACE_STATUS_PREPARE;
26 | private int mDistance;
27 | private int mWaitTime;
28 |
29 | public TraceOverlay(AMap amap, List lines) {
30 | this.mAMap = amap;
31 | options();
32 | mOption.addAll(lines);
33 | mPolyline = amap.addPolyline(mOption);
34 | }
35 |
36 | public TraceOverlay(AMap amap) {
37 | this.mAMap = amap;
38 | options();
39 | }
40 |
41 | public void add(List segments) {
42 | if (segments == null || segments.size() == 0) {
43 | return;
44 | }
45 | mTracedList.addAll(segments);
46 | options();
47 | if (mPolyline == null) {
48 | mPolyline = mAMap.addPolyline(mOption);
49 | }
50 | mPolyline.setPoints(mTracedList);
51 | }
52 |
53 | public void remove() {
54 | if (mPolyline != null) {
55 | mPolyline.remove();
56 | }
57 | }
58 |
59 | public void setProperCamera(List lists) {
60 | Builder builder = LatLngBounds.builder();
61 | if (lists == null || lists.size() == 0) {
62 | return;
63 | }
64 | for (LatLng latlng : lists) {
65 | builder.include(latlng);
66 | }
67 | try {
68 | LatLngBounds bounds = builder.build();
69 | mAMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 20));
70 | } catch (IllegalStateException e) {
71 | e.printStackTrace();
72 | }
73 | }
74 |
75 | public void zoopToSpan() {
76 | List lists = mOption.getPoints();
77 | setProperCamera(lists);
78 | }
79 |
80 | private PolylineOptions options() {
81 | if (mOption == null) {
82 | mOption = new PolylineOptions();
83 | mOption.setCustomTexture(BitmapDescriptorFactory
84 | .fromAsset("tracelinetexture.png"));
85 | mOption.width(40);
86 | }
87 | return mOption;
88 | }
89 |
90 | public int getTraceStatus() {
91 | return mTraceStatus;
92 | }
93 |
94 | public void setTraceStatus(int mTraceStatus) {
95 | this.mTraceStatus = mTraceStatus;
96 | }
97 |
98 | public int getDistance() {
99 | return mDistance;
100 | }
101 |
102 | public void setDistance(int mDistance) {
103 | this.mDistance = mDistance;
104 | }
105 |
106 | public int getWaitTime() {
107 | return mWaitTime;
108 | }
109 |
110 | public void setWaitTime(int mWaitTime) {
111 | this.mWaitTime = mWaitTime;
112 | }
113 | }
114 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/util/ChString.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.util;
2 |
3 | public class ChString {
4 | public static final String Kilometer = "\u516c\u91cc";// "公里";
5 | public static final String Meter = "\u7c73";// "米";
6 | public static final String ByFoot = "\u6b65\u884c";// "步行";
7 | public static final String To = "\u53bb\u5f80";// "去往";
8 | public static final String Station = "\u8f66\u7ad9";// "车站";
9 | public static final String TargetPlace = "\u76ee\u7684\u5730";// "目的地";
10 | public static final String StartPlace = "\u51fa\u53d1\u5730";// "出发地";
11 | public static final String About = "\u5927\u7ea6";// "大约";
12 | public static final String Direction = "\u65b9\u5411";// "方向";
13 |
14 | public static final String GetOn = "\u4e0a\u8f66";// "上车";
15 | public static final String GetOff = "\u4e0b\u8f66";// "下车";
16 | public static final String Zhan = "\u7ad9";// "站";
17 |
18 | public static final String cross = "\u4ea4\u53c9\u8def\u53e3"; // 交叉路口
19 | public static final String type = "\u7c7b\u522b"; // 类别
20 | public static final String address = "\u5730\u5740"; // 地址
21 | public static final String PrevStep = "\u4e0a\u4e00\u6b65";
22 | public static final String NextStep = "\u4e0b\u4e00\u6b65";
23 | public static final String Gong = "\u516c\u4ea4";
24 | public static final String ByBus = "\u4e58\u8f66";
25 | public static final String Arrive = "\u5230\u8FBE";// 到达
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/util/CommonUtils.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.util;
2 |
3 | import android.content.Context;
4 | import android.content.res.Resources;
5 | import android.graphics.Color;
6 | import android.graphics.drawable.Drawable;
7 | import android.util.DisplayMetrics;
8 | import android.view.View;
9 | import android.view.ViewGroup;
10 | import android.view.ViewParent;
11 | import android.view.WindowManager;
12 |
13 | import com.carryondown.app.application.MyApplication;
14 |
15 | import java.text.SimpleDateFormat;
16 | import java.util.Date;
17 | import java.util.Random;
18 |
19 | /**
20 | * Created by jingbin on 2016/11/22.
21 | * 获取原生资源
22 | */
23 | public class CommonUtils {
24 |
25 | /**
26 | * 随机颜色
27 | */
28 | public static int randomColor() {
29 | Random random = new Random();
30 | int red = random.nextInt(150) + 50;//50-199
31 | int green = random.nextInt(150) + 50;//50-199
32 | int blue = random.nextInt(150) + 50;//50-199
33 | return Color.rgb(red, green, blue);
34 | }
35 |
36 | /**
37 | * 得到年月日的"日"
38 | */
39 | private String getDate() {
40 | Date date = new Date();
41 | SimpleDateFormat dateFm = new SimpleDateFormat("dd");
42 | return dateFm.format(date);
43 | }
44 |
45 | /**
46 | * 获取屏幕px
47 | *
48 | * @param context
49 | * @return 分辨率
50 | */
51 | static public int getScreenWidthPixels(Context context) {
52 | DisplayMetrics dm = new DisplayMetrics();
53 | ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay()
54 | .getMetrics(dm);
55 | return dm.widthPixels;
56 | }
57 |
58 | // public static void RunOnUiThread(Runnable r) {
59 | // CloudReaderApplication.getInstance().getMainLooper().post(r);
60 | // }
61 |
62 | public static Drawable getDrawable(int resid) {
63 | return getResoure().getDrawable(resid);
64 | }
65 |
66 | public static int getColor(int resid) {
67 | return getResoure().getColor(resid);
68 | }
69 |
70 | public static Resources getResoure() {
71 | return MyApplication.getInstance().getResources();
72 | }
73 |
74 | public static String[] getStringArray(int resid) {
75 | return getResoure().getStringArray(resid);
76 | }
77 |
78 | public static String getString(int resid) {
79 | return getResoure().getString(resid);
80 | }
81 |
82 | public static float getDimens(int resId) {
83 | return getResoure().getDimension(resId);
84 | }
85 |
86 | public static void removeSelfFromParent(View child) {
87 |
88 | if (child != null) {
89 |
90 | ViewParent parent = child.getParent();
91 |
92 | if (parent instanceof ViewGroup) {
93 |
94 | ViewGroup group = (ViewGroup) parent;
95 |
96 | group.removeView(child);
97 | }
98 | }
99 | }
100 |
101 | }
102 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/util/Constants.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.util;
2 |
3 | import com.amap.api.maps.model.LatLng;
4 |
5 | public class Constants {
6 |
7 | public static final int ERROR = 1001;// 网络异常
8 | public static final int ROUTE_START_SEARCH = 2000;
9 | public static final int ROUTE_END_SEARCH = 2001;
10 | public static final int ROUTE_BUS_RESULT = 2002;// 路径规划中公交模式
11 | public static final int ROUTE_DRIVING_RESULT = 2003;// 路径规划中驾车模式
12 | public static final int ROUTE_WALK_RESULT = 2004;// 路径规划中步行模式
13 | public static final int ROUTE_NO_RESULT = 2005;// 路径规划没有搜索到结果
14 |
15 | public static final int GEOCODER_RESULT = 3000;// 地理编码或者逆地理编码成功
16 | public static final int GEOCODER_NO_RESULT = 3001;// 地理编码或者逆地理编码没有数据
17 |
18 | public static final int POISEARCH = 4000;// poi搜索到结果
19 | public static final int POISEARCH_NO_RESULT = 4001;// poi没有搜索到结果
20 | public static final int POISEARCH_NEXT = 5000;// poi搜索下一页
21 |
22 | public static final int BUSLINE_LINE_RESULT = 6001;// 公交线路查询
23 | public static final int BUSLINE_id_RESULT = 6002;// 公交id查询
24 | public static final int BUSLINE_NO_RESULT = 6003;// 异常情况
25 |
26 | public static final LatLng BEIJING = new LatLng(39.90403, 116.407525);// 北京市经纬度
27 | public static final LatLng ZHONGGUANCUN = new LatLng(39.983456, 116.3154950);// 北京市中关村经纬度
28 | public static final LatLng SHANGHAI = new LatLng(31.238068, 121.501654);// 上海市经纬度
29 | public static final LatLng FANGHENG = new LatLng(39.989614, 116.481763);// 方恒国际中心经纬度
30 | public static final LatLng CHENGDU = new LatLng(30.679879, 104.064855);// 成都市经纬度
31 | public static final LatLng XIAN = new LatLng(34.341568, 108.940174);// 西安市经纬度
32 | public static final LatLng ZHENGZHOU = new LatLng(34.7466, 113.625367);// 郑州市经纬度
33 | }
34 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/util/GlideImagePickerLoader.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.util;
2 |
3 | import android.app.Activity;
4 | import android.net.Uri;
5 | import android.widget.ImageView;
6 |
7 | import com.bumptech.glide.Glide;
8 | import com.bumptech.glide.load.engine.DiskCacheStrategy;
9 | import com.carryondown.app.R;
10 | import com.lzy.imagepicker.loader.ImageLoader;
11 |
12 | import java.io.File;
13 |
14 | /**
15 | * Created by Administrator on 2017/2/10.
16 | */
17 |
18 | public class GlideImagePickerLoader implements ImageLoader {
19 |
20 | @Override
21 | public void displayImage(Activity activity, String path, ImageView imageView, int width, int height) {
22 | Glide.with(activity) //配置上下文
23 | .load(Uri.fromFile(new File(path))) //设置图片路径(fix #8,文件名包含%符号 无法识别和显示)
24 | .error(R.drawable.default_image) //设置错误图片
25 | .placeholder(R.drawable.default_image) //设置占位图片
26 | .diskCacheStrategy(DiskCacheStrategy.ALL)//缓存全尺寸
27 | .into(imageView);
28 | }
29 |
30 | @Override
31 | public void clearMemoryCache() {
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/util/OffLineMapUtils.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.util;
2 |
3 | import android.content.Context;
4 | import android.os.Environment;
5 |
6 | public class OffLineMapUtils {
7 | /**
8 | * 获取map 缓存和读取目录
9 | */
10 | public static String getSdCacheDir(Context context) {
11 | if (Environment.getExternalStorageState().equals(
12 | Environment.MEDIA_MOUNTED)) {
13 | java.io.File fExternalStorageDirectory = Environment
14 | .getExternalStorageDirectory();
15 | java.io.File autonaviDir = new java.io.File(
16 | fExternalStorageDirectory, "amapsdk");
17 | boolean result = false;
18 | if (!autonaviDir.exists()) {
19 | result = autonaviDir.mkdir();
20 | }
21 | java.io.File minimapDir = new java.io.File(autonaviDir,
22 | "offlineMap");
23 | if (!minimapDir.exists()) {
24 | result = minimapDir.mkdir();
25 | }
26 | return minimapDir.toString() + "/";
27 | } else {
28 | return "";
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/util/PermissionUtil.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.util;
2 |
3 | import android.Manifest;
4 | import android.app.Activity;
5 | import android.content.DialogInterface;
6 | import android.content.pm.PackageManager;
7 | import android.os.Build;
8 | import android.support.v4.app.ActivityCompat;
9 | import android.support.v4.content.ContextCompat;
10 | import android.support.v7.app.AlertDialog;
11 |
12 | /**
13 | * Created by Administrator on 2017/5/3.
14 | */
15 |
16 | public class PermissionUtil {
17 | // 要申请的权限
18 | private String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE};
19 |
20 | private void checkPermission(Activity activity) {
21 | // 版本判断。当手机系统大于 23 时,才有必要去判断权限是否获取
22 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
23 |
24 | // 检查该权限是否已经获取
25 | int i = ContextCompat.checkSelfPermission(activity, permissions[0]);
26 | // 权限是否已经 授权 GRANTED---授权 DINIED---拒绝
27 | if (i != PackageManager.PERMISSION_GRANTED) {
28 | // 如果没有授予该权限,就去提示用户请求
29 | showDialogTipUserRequestPermission(activity);
30 | }
31 | }
32 | }
33 |
34 | // 提示用户该请求权限的弹出框
35 | private void showDialogTipUserRequestPermission(final Activity activity) {
36 |
37 | new AlertDialog.Builder(activity)
38 | .setTitle("存储权限不可用")
39 | .setMessage("由于支付宝需要获取存储空间,为你存储个人信息;\n否则,您将无法正常使用支付宝")
40 | .setPositiveButton("立即开启", new DialogInterface.OnClickListener() {
41 | @Override
42 | public void onClick(DialogInterface dialog, int which) {
43 | startRequestPermission(activity);
44 | }
45 | })
46 | .setNegativeButton("取消", new DialogInterface.OnClickListener() {
47 | @Override
48 | public void onClick(DialogInterface dialog, int which) {
49 | activity.finish();
50 | }
51 | }).setCancelable(false).show();
52 | }
53 |
54 | // 开始提交请求权限
55 | private void startRequestPermission(Activity activity) {
56 | ActivityCompat.requestPermissions(activity, permissions, 321);
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/util/ScreenUtil.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.util;
2 |
3 | import android.content.Context;
4 | import android.view.WindowManager;
5 |
6 | import com.carryondown.app.application.MyApplication;
7 |
8 | /**
9 | * Created by Administrator on 2017/4/25.
10 | */
11 |
12 | public class ScreenUtil {
13 | public static int sysWidth()
14 | {
15 | WindowManager wm = (WindowManager) MyApplication.getInstance()
16 | .getSystemService(Context.WINDOW_SERVICE);
17 | int width = wm.getDefaultDisplay().getWidth();
18 | return width/2;
19 | }
20 | public static int sysHeight()
21 | {
22 | WindowManager wm = (WindowManager) MyApplication.getInstance()
23 | .getSystemService(Context.WINDOW_SERVICE);
24 | int height = wm.getDefaultDisplay().getHeight();
25 | return height/2;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/util/SensorEventHelper.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.util;
2 |
3 | import android.content.Context;
4 | import android.hardware.Sensor;
5 | import android.hardware.SensorEvent;
6 | import android.hardware.SensorEventListener;
7 | import android.hardware.SensorManager;
8 | import android.view.Display;
9 | import android.view.Surface;
10 | import android.view.WindowManager;
11 |
12 | import com.amap.api.maps.model.Marker;
13 |
14 | public class SensorEventHelper implements SensorEventListener {
15 |
16 | private SensorManager mSensorManager;
17 | private Sensor mSensor;
18 | private long lastTime = 0;
19 | private final int TIME_SENSOR = 100;
20 | private float mAngle;
21 | private Context mContext;
22 | private Marker mMarker;
23 |
24 | public SensorEventHelper(Context context) {
25 | mContext = context;
26 | mSensorManager = (SensorManager) context
27 | .getSystemService(Context.SENSOR_SERVICE);
28 | mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
29 |
30 | }
31 |
32 | public void registerSensorListener() {
33 | mSensorManager.registerListener(this, mSensor,
34 | SensorManager.SENSOR_DELAY_NORMAL);
35 | }
36 |
37 | public void unRegisterSensorListener() {
38 | mSensorManager.unregisterListener(this, mSensor);
39 | }
40 |
41 | public void setCurrentMarker(Marker marker) {
42 | mMarker = marker;
43 | }
44 |
45 | public Marker getCurrentMarker() {
46 | return mMarker;
47 | }
48 |
49 | @Override
50 | public void onAccuracyChanged(Sensor sensor, int accuracy) {
51 | // TODO Auto-generated method stub
52 |
53 | }
54 |
55 | @Override
56 | public void onSensorChanged(SensorEvent event) {
57 | if (System.currentTimeMillis() - lastTime < TIME_SENSOR) {
58 | return;
59 | }
60 | switch (event.sensor.getType()) {
61 | case Sensor.TYPE_ORIENTATION: {
62 | float x = event.values[0];
63 | x += getScreenRotationOnPhone(mContext);
64 | x %= 360.0F;
65 | if (x > 180.0F)
66 | x -= 360.0F;
67 | else if (x < -180.0F)
68 | x += 360.0F;
69 |
70 | if (Math.abs(mAngle - x) < 3.0f) {
71 | break;
72 | }
73 | mAngle = Float.isNaN(x) ? 0 : x;
74 | if (mMarker != null) {
75 | mMarker.setRotateAngle(360-mAngle);
76 | }
77 | lastTime = System.currentTimeMillis();
78 | }
79 | }
80 |
81 | }
82 |
83 | public static int getScreenRotationOnPhone(Context context) {
84 | final Display display = ((WindowManager) context
85 | .getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
86 |
87 | switch (display.getRotation()) {
88 | case Surface.ROTATION_0:
89 | return 0;
90 |
91 | case Surface.ROTATION_90:
92 | return 90;
93 |
94 | case Surface.ROTATION_180:
95 | return 180;
96 |
97 | case Surface.ROTATION_270:
98 | return -90;
99 | }
100 | return 0;
101 | }
102 | }
103 |
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/view/ClearEditText.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.view;
2 |
3 | import android.content.Context;
4 | import android.graphics.drawable.Drawable;
5 | import android.support.v4.content.ContextCompat;
6 | import android.support.v4.graphics.drawable.DrawableCompat;
7 | import android.support.v7.widget.AppCompatEditText;
8 | import android.text.Editable;
9 | import android.text.TextWatcher;
10 | import android.util.AttributeSet;
11 | import android.view.MotionEvent;
12 | import android.view.View;
13 |
14 | import com.carryondown.app.R;
15 |
16 | /**
17 | * Created by Lilu
18 | */
19 | public class ClearEditText extends AppCompatEditText implements View.OnTouchListener, View.OnFocusChangeListener, TextWatcher{
20 |
21 | private Drawable mClearTextIcon;
22 | private OnFocusChangeListener mOnFocusChangeListener;
23 | private OnTouchListener mOnTouchListener;
24 |
25 | public ClearEditText(final Context context) {
26 | super(context);
27 | init(context);
28 | }
29 |
30 | public ClearEditText(final Context context, final AttributeSet attrs) {
31 | super(context, attrs);
32 | init(context);
33 | }
34 |
35 | public ClearEditText(final Context context, final AttributeSet attrs, final int defStyleAttr) {
36 | super(context, attrs, defStyleAttr);
37 | init(context);
38 | }
39 |
40 | private void init(final Context context) {
41 | final Drawable drawable = ContextCompat.getDrawable(context, R.drawable.ic_search_clear);
42 | final Drawable wrappedDrawable = DrawableCompat.wrap(drawable); //Wrap the drawable so that it can be tinted pre Lollipop
43 | DrawableCompat.setTint(wrappedDrawable, getCurrentHintTextColor());
44 | mClearTextIcon = wrappedDrawable;
45 | mClearTextIcon.setBounds(0, 0, mClearTextIcon.getIntrinsicHeight(), mClearTextIcon.getIntrinsicHeight());
46 | setClearIconVisible(false);
47 | super.setOnTouchListener(this);
48 | super.setOnFocusChangeListener(this);
49 | addTextChangedListener(this);
50 | }
51 |
52 | @Override
53 | public void setOnFocusChangeListener(OnFocusChangeListener l) {
54 | mOnFocusChangeListener = l;
55 | }
56 |
57 | @Override
58 | public void setOnTouchListener(OnTouchListener l) {
59 | mOnTouchListener = l;
60 | }
61 |
62 | @Override
63 | public void onFocusChange(View v, boolean hasFocus) {
64 | if (hasFocus) {
65 | setClearIconVisible(getText().length() > 0);
66 | } else {
67 | setClearIconVisible(false);
68 | }
69 | if (mOnFocusChangeListener != null) {
70 | mOnFocusChangeListener.onFocusChange(v, hasFocus);
71 | }
72 | }
73 |
74 | @Override
75 | public boolean onTouch(View view, MotionEvent motionEvent) {
76 | final int x = (int) motionEvent.getX();
77 | if (mClearTextIcon.isVisible() && x > getWidth() - getPaddingRight() - mClearTextIcon.getIntrinsicWidth()) {
78 | if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
79 | setError(null);
80 | setText("");
81 | }
82 | return true;
83 | }
84 | return mOnTouchListener != null && mOnTouchListener.onTouch(view, motionEvent);
85 | }
86 |
87 | @Override
88 | public final void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter) {
89 | if (isFocused()) {
90 | setClearIconVisible(text.length() > 0);
91 | }
92 | }
93 |
94 | @Override
95 | public void beforeTextChanged(CharSequence s, int start, int count, int after) {
96 |
97 | }
98 |
99 | @Override
100 | public void afterTextChanged(Editable s) {
101 |
102 | }
103 |
104 | private void setClearIconVisible(final boolean visible) {
105 | mClearTextIcon.setVisible(visible, false);
106 | final Drawable[] compoundDrawables = getCompoundDrawables();
107 | setCompoundDrawables(
108 | compoundDrawables[0],
109 | compoundDrawables[1],
110 | visible ? mClearTextIcon : null,
111 | compoundDrawables[3]);
112 | }
113 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/carryondown/app/view/statusbar/StatusBarView.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app.view.statusbar;
2 |
3 | import android.content.Context;
4 | import android.util.AttributeSet;
5 | import android.view.View;
6 |
7 | /**
8 | * Created by Jaeger on 16/6/8.
9 | *
10 | * Email: chjie.jaeger@gmail.com
11 | * GitHub: https://github.com/laobie
12 | */
13 | public class StatusBarView extends View {
14 | public StatusBarView(Context context, AttributeSet attrs) {
15 | super(context, attrs);
16 | }
17 |
18 | public StatusBarView(Context context) {
19 | super(context);
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/app/src/main/jniLibs/AMap3DMap_5.0.0_AMapNavi_5.0.1_AMapSearch_5.0.0_AMapLocation_3.3.0_20170410.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/AMap3DMap_5.0.0_AMapNavi_5.0.1_AMapSearch_5.0.0_AMapLocation_3.3.0_20170410.jar
--------------------------------------------------------------------------------
/app/src/main/jniLibs/arm64-v8a/libGNaviData.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/arm64-v8a/libGNaviData.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/arm64-v8a/libGNaviGuide.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/arm64-v8a/libGNaviGuide.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/arm64-v8a/libGNaviMap.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/arm64-v8a/libGNaviMap.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/arm64-v8a/libGNaviMapex.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/arm64-v8a/libGNaviMapex.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/arm64-v8a/libGNaviPos.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/arm64-v8a/libGNaviPos.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/arm64-v8a/libGNaviRoute.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/arm64-v8a/libGNaviRoute.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/arm64-v8a/libGNaviSearch.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/arm64-v8a/libGNaviSearch.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/arm64-v8a/libGNaviUtils.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/arm64-v8a/libGNaviUtils.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/arm64-v8a/libRoadLineRebuildAPI.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/arm64-v8a/libRoadLineRebuildAPI.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/arm64-v8a/librtbt800.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/arm64-v8a/librtbt800.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/arm64-v8a/libwtbt800.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/arm64-v8a/libwtbt800.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/libGNaviData.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/armeabi-v7a/libGNaviData.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/libGNaviGuide.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/armeabi-v7a/libGNaviGuide.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/libGNaviMap.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/armeabi-v7a/libGNaviMap.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/libGNaviMapex.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/armeabi-v7a/libGNaviMapex.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/libGNaviPos.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/armeabi-v7a/libGNaviPos.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/libGNaviRoute.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/armeabi-v7a/libGNaviRoute.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/libGNaviSearch.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/armeabi-v7a/libGNaviSearch.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/libGNaviUtils.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/armeabi-v7a/libGNaviUtils.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/libRoadLineRebuildAPI.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/armeabi-v7a/libRoadLineRebuildAPI.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/librtbt800.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/armeabi-v7a/librtbt800.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/libwtbt800.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/armeabi-v7a/libwtbt800.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi/libGNaviData.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/armeabi/libGNaviData.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi/libGNaviGuide.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/armeabi/libGNaviGuide.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi/libGNaviMap.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/armeabi/libGNaviMap.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi/libGNaviMapex.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/armeabi/libGNaviMapex.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi/libGNaviPos.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/armeabi/libGNaviPos.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi/libGNaviRoute.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/armeabi/libGNaviRoute.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi/libGNaviSearch.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/armeabi/libGNaviSearch.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi/libGNaviUtils.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/armeabi/libGNaviUtils.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi/libRoadLineRebuildAPI.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/armeabi/libRoadLineRebuildAPI.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi/librtbt800.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/armeabi/librtbt800.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi/libwtbt800.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/armeabi/libwtbt800.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/libGNaviData.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/x86/libGNaviData.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/libGNaviGuide.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/x86/libGNaviGuide.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/libGNaviMap.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/x86/libGNaviMap.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/libGNaviMapex.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/x86/libGNaviMapex.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/libGNaviPos.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/x86/libGNaviPos.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/libGNaviRoute.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/x86/libGNaviRoute.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/libGNaviSearch.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/x86/libGNaviSearch.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/libGNaviUtils.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/x86/libGNaviUtils.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/libRoadLineRebuildAPI.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/x86/libRoadLineRebuildAPI.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/librtbt800.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/x86/librtbt800.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/libwtbt800.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/x86/libwtbt800.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86_64/libGNaviData.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/x86_64/libGNaviData.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86_64/libGNaviGuide.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/x86_64/libGNaviGuide.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86_64/libGNaviMap.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/x86_64/libGNaviMap.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86_64/libGNaviMapex.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/x86_64/libGNaviMapex.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86_64/libGNaviPos.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/x86_64/libGNaviPos.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86_64/libGNaviRoute.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/x86_64/libGNaviRoute.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86_64/libGNaviSearch.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/x86_64/libGNaviSearch.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86_64/libGNaviUtils.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/x86_64/libGNaviUtils.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86_64/libRoadLineRebuildAPI.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/x86_64/libRoadLineRebuildAPI.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86_64/librtbt800.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/x86_64/librtbt800.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86_64/libwtbt800.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/jniLibs/x86_64/libwtbt800.so
--------------------------------------------------------------------------------
/app/src/main/res/anim/tips.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/amap_bus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/amap_bus.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/amap_car.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/amap_car.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/amap_end.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/amap_end.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/amap_man.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/amap_man.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/amap_ride.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/amap_ride.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/amap_start.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/amap_start.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/amap_through.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/amap_through.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/arrow_right_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/arrow_right_blue.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/back.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/bg_bottom_bar.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/bg_bottom_bar.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/border_bg.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/border_bg.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/dir1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/dir1.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/dir10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/dir10.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/dir11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/dir11.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/dir12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/dir12.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/dir13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/dir13.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/dir14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/dir14.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/dir15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/dir15.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/dir16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/dir16.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/dir2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/dir2.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/dir3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/dir3.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/dir4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/dir4.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/dir5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/dir5.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/dir6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/dir6.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/dir7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/dir7.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/dir8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/dir8.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/dir9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/dir9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/dir_end.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/dir_end.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/dir_start.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/dir_start.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/dir_station.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/dir_station.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/down.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_map_go.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/ic_map_go.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/route_bus_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/route_bus_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/route_bus_select.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/route_bus_select.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/route_drive_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/route_drive_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/route_drive_select.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/route_drive_select.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/route_walk_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/route_walk_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/route_walk_select.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/route_walk_select.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/title_background.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/title_background.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-hdpi/up.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v21/home_click_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | -
5 |
6 |
7 | -
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/end.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xhdpi/end.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/start.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xhdpi/start.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/arrow_right_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/arrow_right_blue.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/avatar_default_login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/avatar_default_login.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/default_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/default_image.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/home_bottom_white_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/home_bottom_white_bg.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_load.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/ic_load.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_search_clear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/ic_search_clear.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/icon_actionbar_home_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/icon_actionbar_home_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/icon_actionbar_home_press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/icon_actionbar_home_press.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/icon_actionbar_search_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/icon_actionbar_search_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/icon_actionbar_search_press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/icon_actionbar_search_press.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/icon_back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/icon_back.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/icon_help.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/icon_help.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/icon_loaction_start.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/icon_loaction_start.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/icon_message.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/icon_message.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/icon_money.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/icon_money.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/icon_popover_arrow_down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/icon_popover_arrow_down.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/icon_refresh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/icon_refresh.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/icon_scan_code.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/icon_scan_code.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/icon_search_map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/icon_search_map.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/icon_setting.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/icon_setting.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/icon_trip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/icon_trip.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/location_marker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/location_marker.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/mobike_title_img.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/mobike_title_img.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/report_issue_scan_qrcode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/report_issue_scan_qrcode.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/report_violation_img.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/report_violation_img.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/route_bus_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/route_bus_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/route_bus_select.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/route_bus_select.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/route_drive_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/route_drive_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/route_drive_select.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/route_drive_select.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/route_walk_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/route_walk_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/route_walk_select.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/route_walk_select.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/scan_qrcode_flash_light_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/scan_qrcode_flash_light_off.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/scan_qrcode_flash_light_on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/scan_qrcode_flash_light_on.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/stable_cluster_marker_one_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/stable_cluster_marker_one_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/stable_cluster_marker_one_select.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/drawable-xxhdpi/stable_cluster_marker_one_select.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/home_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/home_click_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
9 | -
10 |
11 |
12 |
13 |
14 | -
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/search_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_corner.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/show_window_shape.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_destination.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
12 |
13 |
22 |
23 |
36 |
37 |
38 |
39 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_login.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
19 |
27 |
36 |
44 |
45 |
46 |
55 |
56 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
17 |
18 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_my_message.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_my_trip.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
14 |
15 |
16 |
23 |
24 |
25 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_my_wallet.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_route_detail.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
15 |
16 |
23 |
24 |
33 |
34 |
45 |
46 |
47 |
51 |
52 |
63 |
64 |
65 |
71 |
72 |
73 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_setting.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_user_know.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/app_bar_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
20 |
21 |
28 |
29 |
35 |
36 |
37 |
43 |
44 |
45 |
46 |
47 |
50 |
54 |
59 |
71 |
83 |
84 |
85 |
86 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/info_window.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
15 |
20 |
21 |
27 |
28 |
36 |
37 |
45 |
46 |
47 |
52 |
53 |
60 |
61 |
69 |
70 |
71 |
75 |
76 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_bus_result.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
15 |
16 |
23 |
24 |
35 |
36 |
44 |
45 |
46 |
56 |
57 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_bus_segment_ex.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
19 |
20 |
27 |
28 |
35 |
36 |
37 |
47 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/load.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
11 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/view_recommond.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
14 |
15 |
22 |
23 |
30 |
31 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/main.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 64dp
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/attrs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #1296db
4 | #1296db
5 | #1296db
6 | #1296db
7 | #000000
8 | #FFFFFF
9 | #6C6C6C
10 | #ACACAC
11 | #ECECEC
12 | #F1F1F1
13 | #0074A6
14 |
15 |
16 | #efefef
17 | #f6f6f6
18 | #00000000
19 | #00000000
20 | #898989
21 |
22 |
23 | #ff333333
24 |
25 | #f2f4f5
26 |
27 | #D4D4D4
28 |
29 | #585858
30 |
31 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 | 16dp
6 | 16dp
7 | 18sp
8 | 16sp
9 | 10dp
10 | 10dp
11 |
12 | 15sp
13 | 20sp
14 | 12sp
15 | 11sp
16 | 5dp
17 | 29dp
18 | 85dp
19 | 13sp
20 | 25dp
21 | 12sp
22 | 15sp
23 | 16sp
24 | 14sp
25 | 11sp
26 | 14sp
27 | 14sp
28 | 15dp
29 | 15dp
30 | 5dp
31 | 30dp
32 | 5dp
33 | 15dp
34 | 0dp
35 | 2dp
36 |
37 | 10sp
38 | 11sp
39 | 12sp
40 | 13sp
41 | 14sp
42 | 15sp
43 | 16sp
44 | 18sp
45 | 20sp
46 | 30sp
47 | 40sp
48 | 50sp
49 | 0.5dp
50 | 1dp
51 | 2dp
52 | 3dp
53 | 4dp
54 | 5dp
55 | 6dp
56 | 7dp
57 | 8dp
58 | 9dp
59 | 10dp
60 | 15dp
61 | 16dp
62 | 20dp
63 | 25dp
64 | 27dp
65 | 30dp
66 | 35dp
67 | 40dp
68 | 50dp
69 | 60dp
70 | 100dp
71 | 200dp
72 | 56dp
73 |
74 |
--------------------------------------------------------------------------------
/app/src/main/res/values/drawables.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | - @drawable/abc_item_background_holo_light
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | 随身坐
3 | 对不起,没有搜索到相关数据!
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
19 |
20 |
21 |
25 |
26 |
27 |
31 |
32 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/app/src/test/java/com/carryondown/app/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.carryondown.app;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() throws Exception {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | jcenter()
6 | }
7 | dependencies {
8 | classpath 'com.android.tools.build:gradle:2.2.3'
9 |
10 | // NOTE: Do not place your application dependencies here; they belong
11 | // in the individual module build.gradle files
12 | }
13 | }
14 |
15 | allprojects {
16 | repositories {
17 | jcenter()
18 | }
19 | }
20 |
21 | task clean(type: Delete) {
22 | delete rootProject.buildDir
23 | }
24 |
--------------------------------------------------------------------------------
/build/generated/mockable-android-25.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/build/generated/mockable-android-25.jar
--------------------------------------------------------------------------------
/carryondown.jks:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/carryondown.jks
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | org.gradle.jvmargs=-Xmx1536m
13 |
14 | # When configured, Gradle will run in incubating parallel mode.
15 | # This option should only be used with decoupled projects. More details, visit
16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
17 | # org.gradle.parallel=true
18 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Mon Dec 28 10:00:20 PST 2015
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
7 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 |
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 |
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 |
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 |
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 |
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 |
69 | :execute
70 | @rem Setup the command line
71 |
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 |
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 |
90 | :omega
91 |
--------------------------------------------------------------------------------
/local.properties:
--------------------------------------------------------------------------------
1 | ## This file is automatically generated by Android Studio.
2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
3 | #
4 | # This file must *NOT* be checked into Version Control Systems,
5 | # as it contains information specific to your local configuration.
6 | #
7 | # Location of the SDK. This is only used by Gradle.
8 | # For customization when using a Version Control System, please read the
9 | # header note.
10 | #Thu Apr 20 09:24:14 CST 2017
11 | ndk.dir=D\:\\develop\\Android\\sdk\\ndk-bundle
12 | sdk.dir=D\:\\develop\\Android\\sdk
13 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------
/示例图/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/示例图/1.jpg
--------------------------------------------------------------------------------
/示例图/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/示例图/2.jpg
--------------------------------------------------------------------------------
/示例图/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/示例图/3.jpg
--------------------------------------------------------------------------------
/示例图/4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/示例图/4.jpg
--------------------------------------------------------------------------------
/示例图/5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/示例图/5.jpg
--------------------------------------------------------------------------------
/示例图/6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/示例图/6.jpg
--------------------------------------------------------------------------------
/示例图/7.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NativeMonkey/ofo/cf69878ec23b35fc432e12a1198b3931c574d93f/示例图/7.jpg
--------------------------------------------------------------------------------