├── .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 | 19 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 46 | 47 | 48 | 49 | 50 | 1.8 51 | 52 | 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 | 11 | 12 | -------------------------------------------------------------------------------- /CarryOnDown.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ofo 2 | 仿ofo、摩拜,共享单车,基于高德地图 3 | ![image](https://github.com/NativeMonkey/ofo/blob/master/%E7%A4%BA%E4%BE%8B%E5%9B%BE/1.jpg) 4 | ![image](https://github.com/NativeMonkey/ofo/blob/master/%E7%A4%BA%E4%BE%8B%E5%9B%BE/2.jpg) 5 | ![image](https://github.com/NativeMonkey/ofo/blob/master/%E7%A4%BA%E4%BE%8B%E5%9B%BE/3.jpg) 6 | ![image](https://github.com/NativeMonkey/ofo/blob/master/%E7%A4%BA%E4%BE%8B%E5%9B%BE/4.jpg) 7 | ![image](https://github.com/NativeMonkey/ofo/blob/master/%E7%A4%BA%E4%BE%8B%E5%9B%BE/5.jpg) 8 | ![image](https://github.com/NativeMonkey/ofo/blob/master/%E7%A4%BA%E4%BE%8B%E5%9B%BE/6.jpg) 9 | ![image](https://github.com/NativeMonkey/ofo/blob/master/%E7%A4%BA%E4%BE%8B%E5%9B%BE/7.jpg) 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 |