├── ARTest
├── git
├── app
│ ├── .gitignore
│ ├── sampledata
│ │ └── models
│ │ │ ├── test.mtl
│ │ │ ├── test.obj
│ │ │ ├── test.sfa
│ │ │ ├── model.sfa
│ │ │ ├── materials.mtl
│ │ │ └── model.obj
│ ├── src
│ │ ├── main
│ │ │ ├── assets
│ │ │ │ ├── floor0.txt
│ │ │ │ ├── floor1.txt
│ │ │ │ └── floor2.txt
│ │ │ ├── ic_star-web.png
│ │ │ ├── res
│ │ │ │ ├── raw
│ │ │ │ │ ├── test.sfb
│ │ │ │ │ ├── model.sfb
│ │ │ │ │ └── publickey.bks
│ │ │ │ ├── drawable
│ │ │ │ │ ├── stairs_up.png
│ │ │ │ │ ├── destination.png
│ │ │ │ │ ├── my_location.png
│ │ │ │ │ ├── stairs_down.png
│ │ │ │ │ ├── toilet_marker.png
│ │ │ │ │ ├── elevator_marker.png
│ │ │ │ │ ├── staircase_marker.png
│ │ │ │ │ ├── baseline_star_black_18dp.png
│ │ │ │ │ ├── baseline_public_black_18dp.png
│ │ │ │ │ ├── baseline_share_black_18dp.png
│ │ │ │ │ ├── baseline_location_on_black_18dp.png
│ │ │ │ │ ├── baseline_library_books_black_18dp.png
│ │ │ │ │ ├── baseline_person_pin_circle_black_18dp.png
│ │ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ │ └── my_launcher2_background.xml
│ │ │ │ ├── drawable-hdpi
│ │ │ │ │ ├── ic_wifi.png
│ │ │ │ │ ├── ic_login.png
│ │ │ │ │ └── ic_compass.png
│ │ │ │ ├── drawable-mdpi
│ │ │ │ │ ├── ic_wifi.png
│ │ │ │ │ ├── ic_login.png
│ │ │ │ │ └── ic_compass.png
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ ├── ic_star.png
│ │ │ │ │ ├── arrow_route.png
│ │ │ │ │ ├── ic_compass.png
│ │ │ │ │ ├── ic_compass2.png
│ │ │ │ │ ├── ic_launcher.png
│ │ │ │ │ ├── ic_location.png
│ │ │ │ │ ├── my_location.png
│ │ │ │ │ ├── ic_recents_gps.png
│ │ │ │ │ ├── my_launcher2.png
│ │ │ │ │ ├── baseline_search.png
│ │ │ │ │ ├── ic_location_gps.png
│ │ │ │ │ ├── ic_recent_books.png
│ │ │ │ │ ├── arrow_route_round.png
│ │ │ │ │ ├── baseline_navigation.png
│ │ │ │ │ ├── ic_launcher_round.png
│ │ │ │ │ ├── my_launcher2_round.png
│ │ │ │ │ ├── my_location_round.png
│ │ │ │ │ ├── ic_location_gps_round.png
│ │ │ │ │ ├── ic_recents_foreground.png
│ │ │ │ │ ├── ic_recents_gps_round.png
│ │ │ │ │ ├── arrow_route_foreground.png
│ │ │ │ │ ├── green_marker_foreground.png
│ │ │ │ │ ├── ic_happy_star_foreground.png
│ │ │ │ │ ├── my_launcher2_foreground.png
│ │ │ │ │ ├── my_location_foreground.png
│ │ │ │ │ └── ic_location_gps_foreground.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ ├── ic_star.png
│ │ │ │ │ ├── arrow_route.png
│ │ │ │ │ ├── ic_compass.png
│ │ │ │ │ ├── ic_compass2.png
│ │ │ │ │ ├── ic_launcher.png
│ │ │ │ │ ├── ic_location.png
│ │ │ │ │ ├── my_location.png
│ │ │ │ │ ├── com1building.jpg
│ │ │ │ │ ├── ic_recents_gps.png
│ │ │ │ │ ├── my_launcher2.png
│ │ │ │ │ ├── ic_location_gps.png
│ │ │ │ │ ├── ic_recent_books.png
│ │ │ │ │ ├── arrow_route_round.png
│ │ │ │ │ ├── ic_launcher_round.png
│ │ │ │ │ ├── my_launcher2_round.png
│ │ │ │ │ ├── my_location_round.png
│ │ │ │ │ ├── ic_location_gps_round.png
│ │ │ │ │ ├── ic_recents_foreground.png
│ │ │ │ │ ├── ic_recents_gps_round.png
│ │ │ │ │ ├── arrow_route_foreground.png
│ │ │ │ │ ├── green_marker_foreground.png
│ │ │ │ │ ├── ic_happy_star_foreground.png
│ │ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ │ └── my_launcher.png
│ │ │ │ │ ├── my_launcher2_foreground.png
│ │ │ │ │ ├── my_location_foreground.png
│ │ │ │ │ ├── ic_location_gps_foreground.png
│ │ │ │ │ └── mipmap-xxxhdpi
│ │ │ │ │ │ └── my_launcher.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ ├── ic_star.png
│ │ │ │ │ ├── ic_compass.png
│ │ │ │ │ ├── arrow_route.png
│ │ │ │ │ ├── ic_compass2.png
│ │ │ │ │ ├── ic_launcher.png
│ │ │ │ │ ├── ic_location.png
│ │ │ │ │ ├── my_launcher2.png
│ │ │ │ │ ├── my_location.png
│ │ │ │ │ ├── ic_location_gps.png
│ │ │ │ │ ├── ic_recent_books.png
│ │ │ │ │ ├── ic_recents_gps.png
│ │ │ │ │ ├── arrow_route_round.png
│ │ │ │ │ ├── ic_launcher_round.png
│ │ │ │ │ ├── my_launcher2_round.png
│ │ │ │ │ ├── my_location_round.png
│ │ │ │ │ ├── ic_recents_gps_round.png
│ │ │ │ │ ├── arrow_route_foreground.png
│ │ │ │ │ ├── green_marker_foreground.png
│ │ │ │ │ ├── ic_location_gps_round.png
│ │ │ │ │ ├── ic_recents_foreground.png
│ │ │ │ │ ├── my_launcher2_foreground.png
│ │ │ │ │ ├── my_location_foreground.png
│ │ │ │ │ ├── ic_happy_star_foreground.png
│ │ │ │ │ └── ic_location_gps_foreground.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ ├── ic_star.png
│ │ │ │ │ ├── arrow_route.png
│ │ │ │ │ ├── ic_compass.png
│ │ │ │ │ ├── ic_compass2.png
│ │ │ │ │ ├── ic_launcher.png
│ │ │ │ │ ├── ic_location.png
│ │ │ │ │ ├── my_launcher2.png
│ │ │ │ │ ├── my_location.png
│ │ │ │ │ ├── ic_recents_gps.png
│ │ │ │ │ ├── arrow_route_round.png
│ │ │ │ │ ├── ic_launcher_round.png
│ │ │ │ │ ├── ic_location_gps.png
│ │ │ │ │ ├── ic_recent_books.png
│ │ │ │ │ ├── my_location_round.png
│ │ │ │ │ ├── switch_locations.png
│ │ │ │ │ ├── my_launcher2_round.png
│ │ │ │ │ ├── arrow_route_foreground.png
│ │ │ │ │ ├── ic_location_gps_round.png
│ │ │ │ │ ├── ic_recents_foreground.png
│ │ │ │ │ ├── ic_recents_gps_round.png
│ │ │ │ │ ├── my_location_foreground.png
│ │ │ │ │ ├── green_marker_foreground.png
│ │ │ │ │ ├── ic_happy_star_foreground.png
│ │ │ │ │ ├── my_launcher2_foreground.png
│ │ │ │ │ └── ic_location_gps_foreground.png
│ │ │ │ ├── drawable-xhdpi
│ │ │ │ │ ├── ic_login.png
│ │ │ │ │ ├── ic_wifi.png
│ │ │ │ │ └── ic_compass.png
│ │ │ │ ├── drawable-xxhdpi
│ │ │ │ │ ├── ic_wifi.png
│ │ │ │ │ ├── ic_compass.png
│ │ │ │ │ ├── ic_login.png
│ │ │ │ │ ├── green_marker.png
│ │ │ │ │ └── purple_marker.png
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ │ ├── ic_star.png
│ │ │ │ │ ├── arrow_route.png
│ │ │ │ │ ├── ic_compass.png
│ │ │ │ │ ├── ic_compass2.png
│ │ │ │ │ ├── ic_launcher.png
│ │ │ │ │ ├── ic_location.png
│ │ │ │ │ ├── my_location.png
│ │ │ │ │ ├── my_launcher2.png
│ │ │ │ │ ├── ic_location_gps.png
│ │ │ │ │ ├── ic_recent_books.png
│ │ │ │ │ ├── ic_recents_gps.png
│ │ │ │ │ ├── arrow_route_round.png
│ │ │ │ │ ├── ic_launcher_round.png
│ │ │ │ │ ├── my_launcher2_round.png
│ │ │ │ │ ├── my_location_round.png
│ │ │ │ │ ├── ic_location_gps_round.png
│ │ │ │ │ ├── ic_recents_foreground.png
│ │ │ │ │ ├── ic_recents_gps_round.png
│ │ │ │ │ ├── arrow_route_foreground.png
│ │ │ │ │ ├── green_marker_foreground.png
│ │ │ │ │ ├── my_launcher2_foreground.png
│ │ │ │ │ ├── my_location_foreground.png
│ │ │ │ │ ├── ic_happy_star_foreground.png
│ │ │ │ │ └── ic_location_gps_foreground.png
│ │ │ │ ├── values
│ │ │ │ │ ├── my_launcher2_background.xml
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── attrs.xml
│ │ │ │ │ ├── arrays.xml
│ │ │ │ │ ├── styles.xml
│ │ │ │ │ └── strings.xml
│ │ │ │ ├── layout
│ │ │ │ │ ├── tool_tips.xml
│ │ │ │ │ ├── ar_imageview.xml
│ │ │ │ │ ├── upload_listview.xml
│ │ │ │ │ ├── lt_layout.xml
│ │ │ │ │ ├── activity_place_level1.xml
│ │ │ │ │ ├── activity_ar.xml
│ │ │ │ │ ├── activity_upload_confirmation.xml
│ │ │ │ │ ├── activity_wifi.xml
│ │ │ │ │ ├── grid_item.xml
│ │ │ │ │ ├── activity_staircase.xml
│ │ │ │ │ ├── activity_places_lecture_theatres.xml
│ │ │ │ │ ├── activity_collect_data.xml
│ │ │ │ │ ├── activity_login.xml
│ │ │ │ │ ├── activity_map.xml
│ │ │ │ │ ├── activity_compass.xml
│ │ │ │ │ ├── activity_places_to_go.xml
│ │ │ │ │ └── toolbar_layout.xml
│ │ │ │ ├── mipmap-anydpi-v26
│ │ │ │ │ ├── arrow_route.xml
│ │ │ │ │ ├── ic_recents_gps.xml
│ │ │ │ │ ├── my_launcher2.xml
│ │ │ │ │ ├── my_location.xml
│ │ │ │ │ ├── arrow_route_round.xml
│ │ │ │ │ ├── ic_launcher.xml
│ │ │ │ │ ├── my_launcher2_round.xml
│ │ │ │ │ ├── my_location_round.xml
│ │ │ │ │ ├── ic_launcher_round.xml
│ │ │ │ │ ├── ic_location_gps.xml
│ │ │ │ │ ├── ic_recents_gps_round.xml
│ │ │ │ │ └── ic_location_gps_round.xml
│ │ │ │ ├── menu
│ │ │ │ │ ├── main_menu.xml
│ │ │ │ │ ├── collectdata.xml
│ │ │ │ │ ├── confirmupload.xml
│ │ │ │ │ └── menu_lt.xml
│ │ │ │ └── drawable-v24
│ │ │ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── arrow_route-web.png
│ │ │ ├── blue_marker-web.png
│ │ │ ├── ic_compass-web.png
│ │ │ ├── ic_compass2-web.png
│ │ │ ├── ic_location-web.png
│ │ │ ├── my_location-web.png
│ │ │ ├── green_marker-web.png
│ │ │ ├── ic_happyStar-web.png
│ │ │ ├── my_launcher2-web.png
│ │ │ ├── ic_location_gps-web.png
│ │ │ ├── ic_recent_books-web.png
│ │ │ ├── ic_recents_gps-web.png
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ │ └── arjo129
│ │ │ │ │ └── artest
│ │ │ │ │ ├── arrendering
│ │ │ │ │ ├── StairException.java
│ │ │ │ │ ├── DirectionInstruction.java
│ │ │ │ │ ├── StaircaseActivity.java
│ │ │ │ │ ├── InitialArrow.java
│ │ │ │ │ ├── VisualAnchorCompass.java
│ │ │ │ │ └── DisplayRotationHelper.java
│ │ │ │ │ ├── places
│ │ │ │ │ ├── Connector.java
│ │ │ │ │ ├── PlaceSearch.java
│ │ │ │ │ ├── BearingUtils.java
│ │ │ │ │ ├── GridAdapter.java
│ │ │ │ │ ├── PlaceLevel1.java
│ │ │ │ │ ├── SearchPlaces.java
│ │ │ │ │ ├── PlacesToGo.java
│ │ │ │ │ └── RecyclerAdapter.java
│ │ │ │ │ ├── datacollection
│ │ │ │ │ ├── ServerResponse.java
│ │ │ │ │ ├── WifiFingerprint.java
│ │ │ │ │ ├── UploadConfirmation.java
│ │ │ │ │ └── WifiFingerprintList.java
│ │ │ │ │ ├── indoorLocation
│ │ │ │ │ ├── WifiNotificationListener.java
│ │ │ │ │ ├── SecurityProvider.java
│ │ │ │ │ └── WifiService.java
│ │ │ │ │ ├── Node.java
│ │ │ │ │ ├── device
│ │ │ │ │ ├── WifiLocation.java
│ │ │ │ │ └── CompassListener.java
│ │ │ │ │ ├── ARActivity.java
│ │ │ │ │ ├── CompassActivity.java
│ │ │ │ │ ├── LoginActivity.java
│ │ │ │ │ └── WifiActivity.java
│ │ │ └── AndroidManifest.xml
│ │ ├── res
│ │ │ └── raw
│ │ │ │ └── test.sfb
│ │ ├── test
│ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── arjo129
│ │ │ │ └── artest
│ │ │ │ └── ExampleUnitTest.java
│ │ └── androidTest
│ │ │ └── java
│ │ │ └── com
│ │ │ └── arjo129
│ │ │ └── artest
│ │ │ └── ExampleInstrumentedTest.java
│ ├── proguard-rules.pro
│ └── build.gradle
├── settings.gradle
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── .idea
│ ├── caches
│ │ └── build_file_checksums.ser
│ ├── vcs.xml
│ ├── runConfigurations.xml
│ ├── gradle.xml
│ ├── misc.xml
│ ├── codeStyles
│ │ └── Project.xml
│ └── assetWizardSettings.xml
├── .gitignore
├── build.gradle
├── gradle.properties
└── gradlew.bat
├── .gitignore
└── README.md
/ARTest/git:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ARTest/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/ARTest/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | ARTest/.idea/caches/build_file_checksums.ser
3 |
--------------------------------------------------------------------------------
/ARTest/app/sampledata/models/test.mtl:
--------------------------------------------------------------------------------
1 | # Exported from 3D Builder
2 |
3 | newmtl Green
4 | Kd 0.129412 0.733333 0.298039
5 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/assets/floor0.txt:
--------------------------------------------------------------------------------
1 | 10
2 | 10 2 7
3 | 1 3 4
4 | 2
5 | 2 5
6 | 4 6 9
7 | 5
8 | 1 8
9 | 7
10 | 5
11 | 0 1
--------------------------------------------------------------------------------
/ARTest/app/src/res/raw/test.sfb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/res/raw/test.sfb
--------------------------------------------------------------------------------
/ARTest/app/src/main/ic_star-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/ic_star-web.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/raw/test.sfb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/raw/test.sfb
--------------------------------------------------------------------------------
/ARTest/app/src/main/arrow_route-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/arrow_route-web.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/blue_marker-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/blue_marker-web.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/ic_compass-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/ic_compass-web.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/ic_compass2-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/ic_compass2-web.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/ic_location-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/ic_location-web.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/my_location-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/my_location-web.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/raw/model.sfb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/raw/model.sfb
--------------------------------------------------------------------------------
/ARTest/app/src/main/green_marker-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/green_marker-web.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/ic_happyStar-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/ic_happyStar-web.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/my_launcher2-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/my_launcher2-web.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/raw/publickey.bks:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/raw/publickey.bks
--------------------------------------------------------------------------------
/ARTest/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/ARTest/.idea/caches/build_file_checksums.ser:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/.idea/caches/build_file_checksums.ser
--------------------------------------------------------------------------------
/ARTest/app/src/main/ic_location_gps-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/ic_location_gps-web.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/ic_recent_books-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/ic_recent_books-web.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/ic_recents_gps-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/ic_recents_gps-web.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable/stairs_up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/drawable/stairs_up.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable-hdpi/ic_wifi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/drawable-hdpi/ic_wifi.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable-mdpi/ic_wifi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/drawable-mdpi/ic_wifi.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable/destination.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/drawable/destination.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable/my_location.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/drawable/my_location.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable/stairs_down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/drawable/stairs_down.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-hdpi/ic_star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-hdpi/ic_star.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-mdpi/ic_star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-mdpi/ic_star.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xhdpi/ic_star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xhdpi/ic_star.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxhdpi/ic_star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxhdpi/ic_star.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable-hdpi/ic_login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/drawable-hdpi/ic_login.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable-mdpi/ic_login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/drawable-mdpi/ic_login.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable-xhdpi/ic_login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/drawable-xhdpi/ic_login.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable-xhdpi/ic_wifi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/drawable-xhdpi/ic_wifi.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable-xxhdpi/ic_wifi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/drawable-xxhdpi/ic_wifi.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable/toilet_marker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/drawable/toilet_marker.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-hdpi/arrow_route.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-hdpi/arrow_route.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-hdpi/ic_compass.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-hdpi/ic_compass.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-hdpi/ic_compass2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-hdpi/ic_compass2.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-hdpi/ic_location.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-hdpi/ic_location.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-hdpi/my_location.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-hdpi/my_location.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-mdpi/arrow_route.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-mdpi/arrow_route.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-mdpi/ic_compass.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-mdpi/ic_compass.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-mdpi/ic_compass2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-mdpi/ic_compass2.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-mdpi/ic_location.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-mdpi/ic_location.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-mdpi/my_location.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-mdpi/my_location.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xhdpi/ic_compass.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xhdpi/ic_compass.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxxhdpi/ic_star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxxhdpi/ic_star.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/java/com/arjo129/artest/arrendering/StairException.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest.arrendering;
2 |
3 | public class StairException extends Exception {
4 | }
5 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable-hdpi/ic_compass.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/drawable-hdpi/ic_compass.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable-mdpi/ic_compass.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/drawable-mdpi/ic_compass.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable-xhdpi/ic_compass.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/drawable-xhdpi/ic_compass.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable-xxhdpi/ic_compass.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/drawable-xxhdpi/ic_compass.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable-xxhdpi/ic_login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/drawable-xxhdpi/ic_login.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable/elevator_marker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/drawable/elevator_marker.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable/staircase_marker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/drawable/staircase_marker.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-hdpi/ic_recents_gps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-hdpi/ic_recents_gps.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-hdpi/my_launcher2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-hdpi/my_launcher2.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-mdpi/com1building.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-mdpi/com1building.jpg
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-mdpi/ic_recents_gps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-mdpi/ic_recents_gps.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-mdpi/my_launcher2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-mdpi/my_launcher2.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xhdpi/arrow_route.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xhdpi/arrow_route.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xhdpi/ic_compass2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xhdpi/ic_compass2.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xhdpi/ic_location.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xhdpi/ic_location.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xhdpi/my_launcher2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xhdpi/my_launcher2.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xhdpi/my_location.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xhdpi/my_location.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxhdpi/arrow_route.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxhdpi/arrow_route.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxhdpi/ic_compass.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxhdpi/ic_compass.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxhdpi/ic_compass2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxhdpi/ic_compass2.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxhdpi/ic_location.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxhdpi/ic_location.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxhdpi/my_launcher2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxhdpi/my_launcher2.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxhdpi/my_location.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxhdpi/my_location.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxxhdpi/arrow_route.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxxhdpi/arrow_route.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxxhdpi/ic_compass.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxxhdpi/ic_compass.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxxhdpi/ic_compass2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxxhdpi/ic_compass2.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxxhdpi/ic_location.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxxhdpi/ic_location.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxxhdpi/my_location.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxxhdpi/my_location.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable-xxhdpi/green_marker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/drawable-xxhdpi/green_marker.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-hdpi/baseline_search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-hdpi/baseline_search.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-hdpi/ic_location_gps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-hdpi/ic_location_gps.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-hdpi/ic_recent_books.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-hdpi/ic_recent_books.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-mdpi/ic_location_gps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-mdpi/ic_location_gps.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-mdpi/ic_recent_books.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-mdpi/ic_recent_books.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xhdpi/ic_location_gps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xhdpi/ic_location_gps.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xhdpi/ic_recent_books.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xhdpi/ic_recent_books.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xhdpi/ic_recents_gps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xhdpi/ic_recents_gps.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxhdpi/ic_recents_gps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxhdpi/ic_recents_gps.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxxhdpi/my_launcher2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxxhdpi/my_launcher2.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable-xxhdpi/purple_marker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/drawable-xxhdpi/purple_marker.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-hdpi/arrow_route_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-hdpi/arrow_route_round.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-hdpi/baseline_navigation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-hdpi/baseline_navigation.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-hdpi/my_launcher2_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-hdpi/my_launcher2_round.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-hdpi/my_location_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-hdpi/my_location_round.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-mdpi/arrow_route_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-mdpi/arrow_route_round.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-mdpi/my_launcher2_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-mdpi/my_launcher2_round.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-mdpi/my_location_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-mdpi/my_location_round.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xhdpi/arrow_route_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xhdpi/arrow_route_round.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xhdpi/my_launcher2_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xhdpi/my_launcher2_round.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xhdpi/my_location_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xhdpi/my_location_round.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxhdpi/arrow_route_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxhdpi/arrow_route_round.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxhdpi/ic_location_gps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxhdpi/ic_location_gps.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxhdpi/ic_recent_books.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxhdpi/ic_recent_books.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxhdpi/my_location_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxhdpi/my_location_round.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxhdpi/switch_locations.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxhdpi/switch_locations.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxxhdpi/ic_location_gps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxxhdpi/ic_location_gps.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxxhdpi/ic_recent_books.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxxhdpi/ic_recent_books.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxxhdpi/ic_recents_gps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxxhdpi/ic_recents_gps.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/values/my_launcher2_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #000000
4 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable/baseline_star_black_18dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/drawable/baseline_star_black_18dp.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-hdpi/ic_location_gps_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-hdpi/ic_location_gps_round.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-hdpi/ic_recents_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-hdpi/ic_recents_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-hdpi/ic_recents_gps_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-hdpi/ic_recents_gps_round.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-mdpi/ic_location_gps_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-mdpi/ic_location_gps_round.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-mdpi/ic_recents_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-mdpi/ic_recents_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-mdpi/ic_recents_gps_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-mdpi/ic_recents_gps_round.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xhdpi/ic_recents_gps_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xhdpi/ic_recents_gps_round.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxhdpi/my_launcher2_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxhdpi/my_launcher2_round.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxxhdpi/arrow_route_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxxhdpi/arrow_route_round.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxxhdpi/my_launcher2_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxxhdpi/my_launcher2_round.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxxhdpi/my_location_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxxhdpi/my_location_round.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/assets/floor1.txt:
--------------------------------------------------------------------------------
1 | 1
2 | 0 2
3 | 1 3 16
4 | 2 9 4 16
5 | 3 5
6 | 4 6 12
7 | 5 7
8 | 6 8
9 | 7 9 14
10 | 3 8 10
11 | 9 11
12 | 10
13 | 5 13
14 | 12
15 | 8 15
16 | 14
17 | 2 3
--------------------------------------------------------------------------------
/ARTest/app/src/main/assets/floor2.txt:
--------------------------------------------------------------------------------
1 | 1
2 | 0 2 8
3 | 1 3 12
4 | 2 4 9
5 | 3 5
6 | 4 6
7 | 5 7
8 | 6 11
9 | 1
10 | 3 10 14
11 | 9 11
12 | 7 10
13 | 2 13 14
14 | 12
15 | 9 12 15
16 | 13 14
17 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable/baseline_public_black_18dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/drawable/baseline_public_black_18dp.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable/baseline_share_black_18dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/drawable/baseline_share_black_18dp.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-hdpi/arrow_route_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-hdpi/arrow_route_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-hdpi/green_marker_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-hdpi/green_marker_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-hdpi/ic_happy_star_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-hdpi/ic_happy_star_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-hdpi/my_launcher2_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-hdpi/my_launcher2_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-hdpi/my_location_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-hdpi/my_location_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-mdpi/arrow_route_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-mdpi/arrow_route_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-mdpi/green_marker_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-mdpi/green_marker_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-mdpi/ic_happy_star_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-mdpi/ic_happy_star_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-mdpi/mipmap-hdpi/my_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-mdpi/mipmap-hdpi/my_launcher.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-mdpi/my_launcher2_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-mdpi/my_launcher2_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-mdpi/my_location_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-mdpi/my_location_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xhdpi/arrow_route_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xhdpi/arrow_route_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xhdpi/green_marker_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xhdpi/green_marker_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xhdpi/ic_location_gps_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xhdpi/ic_location_gps_round.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xhdpi/ic_recents_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xhdpi/ic_recents_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xhdpi/my_launcher2_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xhdpi/my_launcher2_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xhdpi/my_location_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xhdpi/my_location_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxhdpi/arrow_route_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxhdpi/arrow_route_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxhdpi/ic_location_gps_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxhdpi/ic_location_gps_round.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxhdpi/ic_recents_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxhdpi/ic_recents_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxhdpi/ic_recents_gps_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxhdpi/ic_recents_gps_round.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxhdpi/my_location_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxhdpi/my_location_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxxhdpi/ic_location_gps_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxxhdpi/ic_location_gps_round.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxxhdpi/ic_recents_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxxhdpi/ic_recents_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxxhdpi/ic_recents_gps_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxxhdpi/ic_recents_gps_round.png
--------------------------------------------------------------------------------
/ARTest/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/libraries
5 | /.idea/modules.xml
6 | /.idea/workspace.xml
7 | .DS_Store
8 | /build
9 | /captures
10 | .externalNativeBuild
11 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-hdpi/ic_location_gps_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-hdpi/ic_location_gps_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-mdpi/ic_location_gps_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-mdpi/ic_location_gps_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-mdpi/mipmap-xxxhdpi/my_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-mdpi/mipmap-xxxhdpi/my_launcher.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xhdpi/ic_happy_star_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xhdpi/ic_happy_star_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxhdpi/green_marker_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxhdpi/green_marker_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxhdpi/ic_happy_star_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxhdpi/ic_happy_star_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxhdpi/my_launcher2_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxhdpi/my_launcher2_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxxhdpi/arrow_route_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxxhdpi/arrow_route_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxxhdpi/green_marker_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxxhdpi/green_marker_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxxhdpi/my_launcher2_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxxhdpi/my_launcher2_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxxhdpi/my_location_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxxhdpi/my_location_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable/baseline_location_on_black_18dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/drawable/baseline_location_on_black_18dp.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xhdpi/ic_location_gps_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xhdpi/ic_location_gps_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxhdpi/ic_location_gps_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxhdpi/ic_location_gps_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxxhdpi/ic_happy_star_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxxhdpi/ic_happy_star_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-xxxhdpi/ic_location_gps_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/mipmap-xxxhdpi/ic_location_gps_foreground.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable/baseline_library_books_black_18dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/drawable/baseline_library_books_black_18dp.png
--------------------------------------------------------------------------------
/ARTest/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/java/com/arjo129/artest/places/Connector.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest.places;
2 |
3 | /**
4 | * Done by Chelsey
5 | */
6 | public enum Connector {
7 | Lift,
8 | Stairs
9 | }
10 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable/baseline_person_pin_circle_black_18dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chel-seyy/Android-App-AR-Map-Navigation/HEAD/ARTest/app/src/main/res/drawable/baseline_person_pin_circle_black_18dp.png
--------------------------------------------------------------------------------
/ARTest/app/src/main/java/com/arjo129/artest/datacollection/ServerResponse.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest.datacollection;
2 |
3 | public enum ServerResponse {
4 | SERVER_RESPONSE_OK,
5 | SERVER_RESPONSE_BAD_AUTH,
6 | SERVER_RESPONSE_ERROR
7 | }
8 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/java/com/arjo129/artest/indoorLocation/WifiNotificationListener.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest.indoorLocation;
2 |
3 | public interface WifiNotificationListener {
4 | void onServerSendsFix(double lat, double lng, double alt);
5 | }
6 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/layout/tool_tips.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
--------------------------------------------------------------------------------
/ARTest/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Wed May 16 10:08:27 SGT 2018
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
7 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-anydpi-v26/arrow_route.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-anydpi-v26/ic_recents_gps.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-anydpi-v26/my_launcher2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-anydpi-v26/my_location.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-anydpi-v26/arrow_route_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-anydpi-v26/my_launcher2_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-anydpi-v26/my_location_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-anydpi-v26/ic_location_gps.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-anydpi-v26/ic_recents_gps_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/mipmap-anydpi-v26/ic_location_gps_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/layout/ar_imageview.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/menu/main_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/menu/collectdata.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/layout/upload_listview.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
11 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/layout/lt_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
--------------------------------------------------------------------------------
/ARTest/app/src/test/java/com/arjo129/artest/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3F51B5
4 | #303F9F
5 | #FF4081
6 | #FFFFFF
7 | #f2a24d
8 | #5add9e
9 | #4ef0f2
10 |
11 | #66000000
12 |
13 |
14 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/values/attrs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/ARTest/app/sampledata/models/test.obj:
--------------------------------------------------------------------------------
1 | # Exported from 3D Builder
2 | mtllib test.mtl
3 |
4 | o Object.1
5 | v -0.19999001 -0.20000000 0.39998001
6 | v 0.19999001 -0.20000000 0.39998001
7 | v -0.19999001 20.000000 0.39998001
8 | v 0.19999001 0.20000000 0.000000
9 | v -0.19999001 -0.20000000 0.000000
10 | v -0.19999001 0.20000000 0.000000
11 | v 0.19999001 -0.20000000 0.000000
12 | v 0.19999001 0.20000000 0.3998001
13 |
14 |
15 | usemtl Green
16 | f 1 2 3
17 | f 4 5 6
18 | f 5 4 7
19 | f 8 3 2
20 | f 5 7 2
21 | f 5 3 6
22 | f 8 2 7
23 | f 6 3 8
24 | f 5 1 3
25 | f 7 4 8
26 | f 2 1 5
27 | f 8 4 6
28 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/menu/confirmupload.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/ARTest/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
--------------------------------------------------------------------------------
/ARTest/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 |
5 | repositories {
6 | google()
7 | jcenter()
8 | mavenCentral()
9 | }
10 | dependencies {
11 | classpath 'com.android.tools.build:gradle:3.1.2'
12 | //NOTE: Add ARCore
13 | classpath 'com.google.ar.sceneform:plugin:1.0.0'
14 | }
15 | }
16 |
17 | allprojects {
18 | repositories {
19 | google()
20 | jcenter()
21 | mavenLocal()
22 | }
23 | }
24 |
25 | task clean(type: Delete) {
26 | delete rootProject.buildDir
27 | }
28 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/layout/activity_place_level1.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/layout/activity_ar.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
12 |
13 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/layout/activity_upload_confirmation.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
14 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/java/com/arjo129/artest/arrendering/DirectionInstruction.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest.arrendering;
2 |
3 | import com.arjo129.artest.places.Connector;
4 |
5 | import java.io.Serializable;
6 |
7 | public class DirectionInstruction implements Serializable {
8 | public float direction; //Store the compass angle of which way to go here
9 | public float distance; //Store the distance to travel till you execute this instruction
10 | public boolean isConnector;
11 | public Connector connector_type;
12 | public boolean goingUp;
13 | public DirectionInstruction(float dist, float dir){
14 | distance = dist;
15 | direction = dir;
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/ARTest/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/menu/menu_lt.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/values/arrays.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | - SR1
6 | - SR2
7 | - SR3
8 | - SR4
9 | - SR5
10 | - SR6
11 | - SR7
12 | - SR8
13 | - SR9
14 | - SR10
15 | - Canteen
16 | - Cerebro@SoC
17 | - LT15
18 | - LT19
19 | - Makers@SoC
20 | - Tech Hangout
21 | - Fabrication Lab
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/ARTest/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx1536m
10 | # When configured, Gradle will run in incubating parallel mode.
11 | # This option should only be used with decoupled projects. More details, visit
12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13 | # org.gradle.parallel=true
14 |
--------------------------------------------------------------------------------
/ARTest/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Android-App-AR-Map-Navigation
2 |
3 | This is a proof of concept app that uses AR to guide users in an indoor environment. It was built over the course of two months for NUS Orbital 2018.
4 | The app uses WIFI fingerprinting to perform indoor location. It can be used within NUS COM 1 (I believe the server is still running). The app consists of two parts
5 | a part which contains the routing and UI logic, and another which contains the AR overlay. The map itself is rendered using mapbox.
6 |
7 | # Some videos of the app in action:
8 | [](http://www.youtube.com/watch?v=GQzfkelTCxQ)
9 | [](http://www.youtube.com/watch?v=D7Onn8yB5sA)
10 | [](http://www.youtube.com/watch?v=pmsJEq3TNSw)
11 |
12 |
--------------------------------------------------------------------------------
/ARTest/app/src/androidTest/java/com/arjo129/artest/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest;
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 | * Instrumented 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() {
21 | // Context of the app under test.
22 | Context appContext = InstrumentationRegistry.getTargetContext();
23 |
24 | assertEquals("com.arjo129.artest", appContext.getPackageName());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/layout/activity_wifi.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
17 |
18 |
23 |
24 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
18 |
19 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/java/com/arjo129/artest/places/PlaceSearch.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest.places;
2 |
3 | import com.mapbox.mapboxsdk.geometry.LatLng;
4 |
5 | /**
6 | * Done by Chelsey
7 | */
8 | public class PlaceSearch {
9 | LatLng coordinate;
10 | String place_name;
11 | int level;
12 |
13 | PlaceSearch(String name, LatLng coordinate, int level){
14 | this.place_name = name;
15 | this.level = level;
16 | this.coordinate = coordinate;
17 | }
18 |
19 | @Override
20 | public boolean equals(Object obj) {
21 | if (obj == this) {
22 | return true;
23 | } else if (obj instanceof PlaceSearch) {
24 | PlaceSearch anotherPlace = (PlaceSearch) obj;
25 | if (anotherPlace.place_name.equals(this.place_name)
26 | && anotherPlace.level == this.level) {
27 | return true;
28 | }
29 | }
30 | return false;
31 | }
32 |
33 | @Override
34 | public int hashCode() {
35 | String placeLevel= place_name + level;
36 | return placeLevel.hashCode();
37 | }
38 |
39 | @Override
40 | public String toString() {
41 | return "Level: " + level + " - " + place_name;
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/ARTest/app/sampledata/models/test.sfa:
--------------------------------------------------------------------------------
1 | {
2 | materials: [
3 | {
4 | name: "Green",
5 | parameters: [
6 | {
7 | baseColor: null,
8 | },
9 | {
10 | baseColorTint: [
11 | 0.129412,
12 | 0.73333300000000001,
13 | 0.298039,
14 | 1,
15 | ],
16 | },
17 | {
18 | metallic: 0,
19 | },
20 | {
21 | roughness: 1,
22 | },
23 | {
24 | opacity: null,
25 | },
26 | ],
27 | source: "build/sceneform_sdk/default_materials/obj_material.sfm",
28 | },
29 | ],
30 | model: {
31 | attributes: [
32 | "Position",
33 | "Orientation",
34 | ],
35 | file: "sampledata/models/test.obj",
36 | name: "test",
37 | suggested_collision: {
38 | center: {
39 | x: 0,
40 | y: 0,
41 | z: 0,
42 | },
43 | size: {
44 | x: 1,
45 | y: 1,
46 | z: 1,
47 | },
48 | type: "Box",
49 | },
50 | },
51 | version: "0.51:1",
52 | }
53 |
--------------------------------------------------------------------------------
/ARTest/app/sampledata/models/model.sfa:
--------------------------------------------------------------------------------
1 | {
2 | materials: [
3 | {
4 | name: "mat2",
5 | parameters: [
6 | {
7 | baseColor: null,
8 | },
9 | {
10 | baseColorTint: [
11 | 0.40000000000000002,
12 | 0.23000000000000001,
13 | 0.71999999999999997,
14 | 1,
15 | ],
16 | },
17 | {
18 | metallic: 0,
19 | },
20 | {
21 | roughness: 1,
22 | },
23 | {
24 | opacity: null,
25 | },
26 | ],
27 | source: "build/sceneform_sdk/default_materials/obj_material.sfm",
28 | },
29 | ],
30 | model: {
31 | attributes: [
32 | "Position",
33 | "TexCoord",
34 | "Orientation",
35 | ],
36 | file: "sampledata/models/model.obj",
37 | name: "model",
38 | suggested_collision: {
39 | center: {
40 | x: 0,
41 | y: 0,
42 | z: 0,
43 | },
44 | size: {
45 | x: 1,
46 | y: 1,
47 | z: 1,
48 | },
49 | type: "Box",
50 | },
51 | },
52 | version: "0.51:1",
53 | }
54 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/java/com/arjo129/artest/arrendering/StaircaseActivity.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest.arrendering;
2 |
3 | import android.content.Intent;
4 | import android.support.v7.app.AppCompatActivity;
5 | import android.os.Bundle;
6 | import android.view.View;
7 | import android.widget.Button;
8 |
9 | import com.arjo129.artest.ARActivity;
10 | import com.arjo129.artest.R;
11 |
12 | import java.io.Serializable;
13 | import java.util.ArrayList;
14 |
15 | public class StaircaseActivity extends AppCompatActivity {
16 |
17 | @Override
18 | protected void onCreate(Bundle savedInstanceState) {
19 | super.onCreate(savedInstanceState);
20 | setContentView(R.layout.activity_staircase);
21 | Intent intent = getIntent();
22 | ArrayList dirInst = (ArrayList) intent.getSerializableExtra("instructions");
23 | Button btn = (Button)findViewById(R.id.ClimbFinished);
24 | btn.setOnClickListener(new View.OnClickListener() {
25 | @Override
26 | public void onClick(View view) {
27 | Intent arIntent = new Intent(StaircaseActivity.this, ARActivity.class);
28 | arIntent.putExtra("Directions",(Serializable)dirInst);
29 | startActivity(arIntent);
30 | }
31 | });
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | SoC Indoor Map
3 | Pick a destination
4 | Choose Lecture Theatres to go
5 | Login
6 | Login
7 | Password
8 | Admin
9 | Compass
10 | Wifi Scans
11 | Open Location Settings
12 | Cancel
13 | Learn Wifi
14 | https://ec2-18-191-20-227.us-east-2.compute.amazonaws.com/
15 | aQer6790fg#$gt67
16 | pk.eyJ1IjoiZ3JlZWtnZWVrIiwiYSI6ImNqaHZlZmhrNDA0ajkzcW1kODRtMHZ5MmYifQ.1AxqPHxWVqkZHQtJYmEZJw
17 | Upload Confirmation
18 |
19 | ClimbStairActivity
20 | Dummy Button
21 | DUMMY\nCONTENT
22 |
23 |
--------------------------------------------------------------------------------
/ARTest/app/sampledata/models/materials.mtl:
--------------------------------------------------------------------------------
1 | newmtl mat0
2 | Kd 0.73 0.41 0.78
3 |
4 | newmtl mat1
5 | Kd 0.61 0.15 0.69
6 |
7 | newmtl mat2
8 | Kd 0.40 0.23 0.72
9 |
10 | newmtl mat3
11 | Kd 0.50 0.87 0.92
12 |
13 | newmtl mat4
14 | Kd 0.00 0.74 0.83
15 |
16 | newmtl mat5
17 | Kd 0.01 0.61 0.90
18 |
19 | newmtl mat6
20 | Kd 0.97 0.73 0.82
21 |
22 | newmtl mat7
23 | Kd 0.94 0.38 0.57
24 |
25 | newmtl mat8
26 | Kd 0.96 0.26 0.21
27 |
28 | newmtl mat9
29 | Kd 0.55 0.76 0.29
30 |
31 | newmtl mat10
32 | Kd 0.30 0.69 0.31
33 |
34 | newmtl mat11
35 | Kd 0.00 0.59 0.53
36 |
37 | newmtl mat12
38 | Kd 1.00 0.92 0.23
39 |
40 | newmtl mat13
41 | Kd 1.00 0.60 0.00
42 |
43 | newmtl mat14
44 | Kd 1.00 0.34 0.13
45 |
46 | newmtl mat15
47 | Kd 0.81 0.85 0.86
48 |
49 | newmtl mat16
50 | Kd 0.47 0.56 0.61
51 |
52 | newmtl mat17
53 | Kd 0.27 0.35 0.39
54 |
55 | newmtl mat18
56 | Kd 1.00 0.80 0.53
57 |
58 | newmtl mat19
59 | Kd 0.87 0.60 0.27
60 |
61 | newmtl mat20
62 | Kd 0.47 0.33 0.28
63 |
64 | newmtl mat21
65 | Kd 1.00 1.00 1.00
66 |
67 | newmtl mat22
68 | Kd 0.62 0.62 0.62
69 |
70 | newmtl mat23
71 | Kd 0.10 0.10 0.10
72 |
73 | newmtl mat24
74 | Ka 0.58 0.65 1.00
75 | Kd 0.92 0.95 0.94
76 | Ks 1 1 1
77 | illum 9
78 | Ns 300
79 | d 0.4
80 | Ni 1.5
81 |
82 | newmtl mat25
83 | Ka 1.00 0.65 0.67
84 | Kd 0.92 0.95 0.94
85 | Ks 1 1 1
86 | illum 9
87 | Ns 300
88 | d 0.4
89 | Ni 1.5
90 |
91 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/layout/grid_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
19 |
20 |
21 |
32 |
33 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/java/com/arjo129/artest/Node.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest;
2 |
3 | import com.arjo129.artest.places.Connector;
4 | import com.mapbox.mapboxsdk.geometry.LatLng;
5 |
6 | import java.io.Serializable;
7 |
8 | /**
9 | * Done by Chelsey
10 | */
11 | public class Node implements Serializable {
12 | LatLng coordinate;
13 | double bearing; // Difference in bearing to the next node
14 | boolean isConnector = false;
15 | Connector connector = null;
16 | boolean directionUp = false;
17 | boolean directionDown = false;
18 |
19 |
20 | public Node(LatLng coordinate, double bearing){
21 | this.coordinate = coordinate;
22 | this.bearing = bearing;
23 | }
24 |
25 | public void setConnector(Connector connector, boolean directionUp) {
26 | this.isConnector = true;
27 | this.connector = connector;
28 | if (directionUp) {
29 | goingUp();
30 | } else {
31 | goingDown();
32 | }
33 | }
34 |
35 | public void goingUp() {
36 | this.directionUp = true;
37 | }
38 |
39 | public void goingDown() {
40 | this.directionDown = true;
41 | }
42 |
43 | @Override
44 | public String toString() {
45 | if (isConnector) {
46 | String direction = this.directionUp ? "up": "down";
47 | return connector.toString() + " going " + direction;
48 | } else {
49 | return coordinate.toString() + ", " + bearing;
50 | }
51 | }
52 | }
53 |
54 |
55 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/layout/activity_staircase.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
20 |
21 |
32 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/java/com/arjo129/artest/places/BearingUtils.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest.places;
2 |
3 | import com.mapbox.mapboxsdk.geometry.LatLng;
4 |
5 | /**
6 | * Done by Chelsey
7 | */
8 | public class BearingUtils {
9 |
10 | /*
11 | * Calculates the bearing from point1 to point2 in clockwise direction
12 | */
13 | public static Double calculate_bearing(LatLng point1, LatLng point2){
14 | // In radians
15 | Double a1 = Math.toRadians(point1.getLatitude());
16 | Double a2 = Math.toRadians(point2.getLatitude());
17 | Double b1 = Math.toRadians(point1.getLongitude());
18 | Double b2 = Math.toRadians(point2.getLongitude());
19 |
20 | Double y = Math.sin(b2-b1) * Math.cos(a2);
21 | Double x = Math.cos(a1)* Math.sin(a2) -
22 | Math.sin(a1) * Math.cos(a2) * Math.cos(b2-b1);
23 | return Math.toDegrees(Math.atan2(y,x));
24 | }
25 | public static double calculate_distance(LatLng current, LatLng destination){
26 | int earthRadiusKm = 6371;
27 | double dLat = degreeToRadians(destination.getLatitude()-current.getLatitude());
28 | double dLng = degreeToRadians(destination.getLongitude()-current.getLongitude());
29 |
30 | double lat1 = degreeToRadians(current.getLatitude());
31 | double lat2 = degreeToRadians(destination.getLatitude());
32 |
33 | double a = Math.sin(dLat/2)*Math.sin(dLat/2)+
34 | Math.sin(dLng/2) * Math.sin(dLng/2) *Math.cos(lat1)*Math.cos(lat2);
35 | double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
36 |
37 | return earthRadiusKm*c;
38 | }
39 |
40 | private static double degreeToRadians(double degrees){
41 | return degrees*Math.PI/180;
42 | }
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/ARTest/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/java/com/arjo129/artest/indoorLocation/SecurityProvider.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest.indoorLocation;
2 |
3 | import android.content.Context;
4 |
5 | import com.arjo129.artest.R;
6 |
7 | import java.io.InputStream;
8 | import java.security.KeyStore;
9 |
10 | import cz.msebera.android.httpclient.conn.ssl.SSLSocketFactory;
11 |
12 |
13 | public class SecurityProvider {
14 | public static SSLSocketFactory getSocketFactory(Context ctx) {
15 | try {
16 | // Get an instance of the Bouncy Castle KeyStore format
17 | KeyStore trusted = KeyStore.getInstance("BKS");
18 | // Get the raw resource, which contains the keystore with
19 | // your trusted certificates (root and any intermediate certs)
20 | InputStream in = ctx.getResources().openRawResource(R.raw.publickey); //name of your keystore file here
21 | try {
22 | // Initialize the keystore with the provided trusted certificates
23 | // Provide the password of the keystore
24 | trusted.load(in, "ch1aR2wF".toCharArray());
25 | } finally {
26 | in.close();
27 | }
28 | // Pass the keystore to the SSLSocketFactory. The factory is responsible
29 | // for the verification of the server certificate.
30 | SSLSocketFactory sf = new SSLSocketFactory(trusted);
31 | // Hostname verification from certificate
32 | // http://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html#d4e506
33 | sf.setHostnameVerifier(SSLSocketFactory.STRICT_HOSTNAME_VERIFIER); // This can be changed to less stricter verifiers, according to need
34 | return sf;
35 | } catch (Exception e) {
36 | throw new AssertionError(e);
37 | }
38 | }
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/ARTest/.idea/codeStyles/Project.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable-v24/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
12 |
13 |
19 |
22 |
25 |
26 |
27 |
28 |
34 |
35 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/java/com/arjo129/artest/datacollection/WifiFingerprint.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest.datacollection;
2 |
3 | import android.util.Log;
4 | import org.json.JSONException;
5 | import org.json.JSONObject;
6 | import java.io.Serializable;
7 | import java.util.Date;
8 | import java.util.HashMap;
9 | import java.util.Map;
10 |
11 | public class WifiFingerprint implements Serializable {
12 | private final static String TAG = "WifiFingerprint";
13 | private HashMap wifiscans;
14 | private double latitude, longitude;
15 | private int floor;
16 | private Date creation_time;
17 | public WifiFingerprint(double lat, double lng,int floor, HashMap scan){
18 | this.latitude = lat;
19 | this.longitude = lng;
20 | this.wifiscans = scan;
21 | this.floor = floor;
22 | this.creation_time = new Date();
23 | }
24 | public JSONObject toJSON(){
25 | JSONObject wifi_list = new JSONObject();
26 | for (Map.Entry item : wifiscans.entrySet()) {
27 | String key = item.getKey();
28 | int value = item.getValue();
29 | try {
30 | wifi_list.put(key, value);
31 | }
32 | catch(Exception e){
33 | Log.d(TAG,e.toString());
34 | return null;
35 | }
36 | }
37 | JSONObject json = new JSONObject();
38 | int x_coord = (int)Math.round(((latitude-1)*110547)/3);
39 | int y_coord = (int)Math.round(111320*Math.cos(Math.toRadians(latitude))*longitude/3);
40 | try {
41 | json.put("x", x_coord);
42 | json.put("y", y_coord);
43 | json.put("floor", floor);
44 | json.put("location", "com1f"+floor+"|"+x_coord+"|"+y_coord);
45 | json.put("WIFI",wifi_list);
46 | }
47 | catch ( JSONException e){
48 | e.printStackTrace();
49 | }
50 | return json;
51 | }
52 | public String getDate(){
53 | return creation_time.toString();
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/layout/activity_places_lecture_theatres.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
18 |
19 |
27 |
28 |
36 |
37 |
45 |
46 |
47 |
48 |
49 |
54 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/java/com/arjo129/artest/device/WifiLocation.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest.device;
2 |
3 | import android.content.BroadcastReceiver;
4 | import android.content.Context;
5 | import android.content.Intent;
6 | import android.content.IntentFilter;
7 | import android.net.wifi.ScanResult;
8 | import android.net.wifi.WifiManager;
9 | import android.util.Log;
10 | import java.util.HashMap;
11 | import java.util.List;
12 | import java.util.function.Function;
13 |
14 | /**
15 | * Done by Chelsey
16 | */
17 | public class WifiLocation {
18 | private BroadcastReceiver wifi_receiver;
19 | private List results;
20 | private Context context;
21 | private WifiManager wifi;
22 | private boolean scan_finished = false;
23 | private Function, Void> function;
24 |
25 | public WifiLocation(Context ctx, Function, Void> handler) {
26 | context = ctx;
27 | function = handler;
28 | wifi = (WifiManager) ctx.getSystemService(Context.WIFI_SERVICE);
29 | }
30 | public void scanWifiNetworks(){
31 | scan_finished = false;
32 | wifi_receiver = new BroadcastReceiver() {
33 | @Override
34 | public void onReceive(Context context, Intent intent) {
35 | HashMap map;
36 | map = new HashMap<>();
37 | Log.d("WifiScanner", "onReceive");
38 | results = wifi.getScanResults();
39 | context.unregisterReceiver(this);
40 | Log.d("WifiScanner", "size: " + results.size());
41 | for (int i = 0; i < results.size(); i++) {
42 | ScanResult scanResult = results.get(i);
43 | map.put(scanResult.BSSID,scanResult.level);
44 | }
45 | function.apply(map);
46 | scan_finished = true;
47 | }
48 | };
49 |
50 | context.registerReceiver(wifi_receiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
51 | wifi.startScan();
52 | }
53 |
54 | public boolean isConnected(){
55 | return scan_finished;
56 | }
57 |
58 | public void stopListening(){
59 |
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/layout/activity_collect_data.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
17 |
18 |
19 |
27 |
28 |
29 |
36 |
37 |
44 |
45 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/ARTest/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | set DIRNAME=%~dp0
12 | if "%DIRNAME%" == "" set DIRNAME=.
13 | set APP_BASE_NAME=%~n0
14 | set APP_HOME=%DIRNAME%
15 |
16 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
17 | set DEFAULT_JVM_OPTS=
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windows variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 |
53 | :win9xME_args
54 | @rem Slurp the command line arguments.
55 | set CMD_LINE_ARGS=
56 | set _SKIP=2
57 |
58 | :win9xME_args_slurp
59 | if "x%~1" == "x" goto execute
60 |
61 | set CMD_LINE_ARGS=%*
62 |
63 | :execute
64 | @rem Setup the command line
65 |
66 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
67 |
68 | @rem Execute Gradle
69 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
70 |
71 | :end
72 | @rem End local scope for the variables with windows NT shell
73 | if "%ERRORLEVEL%"=="0" goto mainEnd
74 |
75 | :fail
76 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
77 | rem the _cmd.exe /c_ return code!
78 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
79 | exit /b 1
80 |
81 | :mainEnd
82 | if "%OS%"=="Windows_NT" endlocal
83 |
84 | :omega
85 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/java/com/arjo129/artest/arrendering/InitialArrow.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest.arrendering;
2 |
3 | import android.content.Context;
4 | import android.util.Log;
5 |
6 | import com.arjo129.artest.R;
7 | import com.arjo129.artest.device.CompassListener;
8 | import com.google.ar.core.Frame;
9 | import com.google.ar.core.Pose;
10 | import com.google.ar.core.Session;
11 | import com.google.ar.sceneform.math.Quaternion;
12 | import com.google.ar.sceneform.math.Vector3;
13 | import com.google.ar.sceneform.rendering.ModelRenderable;
14 |
15 | public class InitialArrow {
16 | private VisualAnchorCompass compassListener;
17 | private float bearing;
18 | private ModelRenderable arrow;
19 | private ARScene scene;
20 | private static final String TAG = "InitialArrow";
21 | private int model_id = -1;
22 | @SuppressWarnings("WeakerAccess")
23 | public InitialArrow(Context ctx, ARScene scn, float heading, VisualAnchorCompass cmp){
24 | bearing = heading;
25 | compassListener = cmp;
26 | scene =scn;
27 | ModelRenderable.builder()
28 | .setSource(ctx, R.raw.model)
29 | .build()
30 | .thenAccept(renderable -> arrow = renderable);
31 | }
32 | public void update(Pose cameraPose, Session sess, Frame frame){
33 | float current_cam = compassListener.getHeading(sess,frame,false);
34 |
35 | if(Math.abs(current_cam-bearing) > 4) {
36 | if (model_id >= 0) {
37 | //Log.d(TAG,"updating arrow follower");
38 | float quat[] = cameraPose.getRotationQuaternion();
39 | Quaternion qt = new Quaternion(quat[0], quat[1], quat[2], quat[3]);
40 | Vector3 translation = Quaternion.rotateVector(qt, Vector3.forward());
41 | float campos[] = cameraPose.getTranslation();
42 | Vector3 camerapos = new Vector3(campos[0], campos[1], campos[2]);
43 | scene.setPosition(model_id, Vector3.add(camerapos, translation));
44 | }
45 | }
46 | else{
47 | if(model_id >=0 ){
48 | scene.removeItem(model_id);
49 | model_id = -1;
50 | }
51 | }
52 | }
53 | public void construct(Session sess, Frame frame){
54 | float current_cam = compassListener.getHeading(sess,frame,false);
55 | if(Math.abs(current_cam-bearing) > 20) {
56 | Log.d(TAG,"constructing arrow follower");
57 | model_id = scene.placeItem(arrow, 1, current_cam, bearing+90, 0, true);
58 | }
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/layout/activity_login.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
28 |
29 |
43 |
44 |
56 |
60 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/java/com/arjo129/artest/places/GridAdapter.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest.places;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 | import android.view.LayoutInflater;
6 | import android.view.View;
7 | import android.view.ViewGroup;
8 | import android.widget.BaseAdapter;
9 | import android.widget.ImageButton;
10 | import android.widget.TextView;
11 |
12 | import com.arjo129.artest.ARActivity;
13 | import com.arjo129.artest.R;
14 |
15 | /**
16 | * Done by Chelsey
17 | */
18 | public class GridAdapter extends BaseAdapter{
19 | Context context;
20 | private final String[] values;
21 | private final int[] images;
22 | View view;
23 | LayoutInflater layoutInflater;
24 |
25 | public GridAdapter(Context context, String[] values, int[] images){
26 | this.context = context;
27 | this.values = values;
28 | this.images = images;
29 | }
30 |
31 | @Override
32 | public int getCount() {
33 | return values.length;
34 | }
35 |
36 | @Override
37 | public Object getItem(int i) {
38 | return null;
39 | }
40 |
41 | @Override
42 | public long getItemId(int i) {
43 | return 0;
44 | }
45 |
46 |
47 | @Override
48 | public View getView(int i, View view, ViewGroup viewGroup) {
49 | layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
50 |
51 | if(view == null){
52 | view = new View(context);
53 | view = layoutInflater.inflate(R.layout.grid_item, null);
54 | ImageButton imageButton = (ImageButton) view.findViewById(R.id.grid_imageButton);
55 | TextView textview = (TextView)view.findViewById(R.id.grid_text);
56 | imageButton.setImageResource(images[i]);
57 | textview.setText(values[i]);
58 |
59 | if(i == 0){
60 | imageButton.setOnClickListener(new View.OnClickListener() {
61 | @Override
62 | public void onClick(View view) {
63 | Intent favsAct = new Intent(context,PlacesLectureTheatres.class);
64 | context.startActivity(favsAct);
65 | }
66 | });
67 | }
68 | if(i == 1){
69 | imageButton.setOnClickListener(new View.OnClickListener() {
70 | @Override
71 | public void onClick(View view) {
72 | Intent ARMode = new Intent(context,ARActivity.class);
73 | context.startActivity(ARMode);
74 | }
75 | });
76 | }
77 | }
78 | return view;
79 | }
80 | }
81 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/java/com/arjo129/artest/device/CompassListener.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest.device;
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.util.Log;
9 | import com.arjo129.artest.arrendering.ARScene;
10 |
11 | public class CompassListener implements SensorEventListener {
12 | private final static String TAG = "CompassListener";
13 | private SensorManager mSensorManager;
14 | public float[] orientation = new float[3];
15 | private float currentHeading = 0;
16 | private float rotation = 0f;
17 | private long timestamp;
18 | private boolean collected_ts = false;
19 | public int accuracy = -1;
20 | public CompassListener(Context ctx){
21 | mSensorManager = (SensorManager)ctx.getSystemService(Context.SENSOR_SERVICE);
22 | startListening();
23 | }
24 | @SuppressWarnings("WeakerAccess")
25 | public void startListening(){
26 | mSensorManager.registerListener(this,mSensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR), SensorManager.SENSOR_DELAY_FASTEST);
27 | }
28 | public void stopListenening(){
29 | mSensorManager.unregisterListener(this);
30 | }
31 | @Override
32 | public void onSensorChanged(SensorEvent sensorEvent) {
33 | if(sensorEvent.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR) {
34 | float[] rotMatrix = new float[9];
35 | float[] outMatrix = new float[9];
36 | //ARCore uses X-Z plane as the floor vs. The device ROTATION_VECTOR x-axis is east and Y-axis is north
37 | SensorManager.getRotationMatrixFromVector(rotMatrix, sensorEvent.values);
38 | boolean succ = SensorManager.remapCoordinateSystem(rotMatrix, SensorManager.AXIS_X, SensorManager.AXIS_Z,outMatrix);
39 | SensorManager.getOrientation(outMatrix, orientation);
40 | float prevHeading = currentHeading;
41 | currentHeading = ((float)Math.toDegrees(orientation[0])+360)%360;
42 | if(collected_ts) rotation = (currentHeading-prevHeading)/(sensorEvent.timestamp-timestamp);
43 | ARScene.fromRPY(orientation[0],orientation[1],orientation[2]);
44 | accuracy = sensorEvent.accuracy;
45 | Log.d(TAG, "" + succ + " " + currentHeading + " " +accuracy+" "+rotation);
46 | timestamp = sensorEvent.timestamp;
47 | collected_ts = true;
48 | }
49 |
50 | }
51 | public float getBearing(){
52 | // negative because positive rotation about Y rotates X away from Z
53 | return currentHeading;
54 | }
55 | @Override
56 | public void onAccuracyChanged(Sensor sensor, int i) {
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/ARTest/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | android {
4 | compileSdkVersion 27
5 | defaultConfig {
6 | applicationId "com.arjo129.artest"
7 | minSdkVersion 26
8 | targetSdkVersion 27
9 | versionCode 1
10 | versionName "1.0"
11 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
12 | ndk {
13 | //Note: Apparantly AR is only supported by some types of CPUs. x86 refers to intel processors
14 | //arm64-v8a refers to 64 bit ARM processors found in most phones. ARM processors are generally found
15 | //in phones
16 | abiFilters 'arm64-v8a', 'x86'
17 | }
18 | }
19 | buildTypes {
20 | release {
21 | minifyEnabled false
22 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
23 | }
24 | }
25 | compileOptions {
26 | sourceCompatibility 1.8
27 | targetCompatibility 1.8
28 | }
29 | }
30 |
31 | dependencies {
32 | implementation fileTree(dir: 'libs', include: ['*.jar'])
33 | //noinspection GradleCompatible
34 | implementation 'com.android.support:appcompat-v7:27.1.1'
35 | implementation 'com.android.support:recyclerview-v7:27.1.1'
36 | implementation 'com.android.support.constraint:constraint-layout:1.1.0'
37 | implementation 'pub.devrel:easypermissions:1.2.0'
38 | implementation 'com.google.android.gms:play-services-location:15.0.1'
39 |
40 | // Mapbox
41 | implementation 'com.mapbox.mapboxsdk:mapbox-android-sdk:6.1.3'
42 | implementation 'com.mapbox.mapboxsdk:mapbox-sdk-turf:3.2.0'
43 | implementation 'com.mapbox.mapboxsdk:mapbox-android-plugin-locationlayer:0.5.3'
44 |
45 | //Note: Add ARCore
46 | implementation 'com.loopj.android:android-async-http:1.4.9'
47 | //implementation 'com.google.ar:core:1.2.0'
48 | //Add: Sceneform framework - these libraries enable you to easily place objects in 3D
49 | implementation "com.google.ar.sceneform:core:1.0.0"
50 | implementation "com.google.ar.sceneform.ux:sceneform-ux:1.0.0"
51 | implementation 'com.android.support:support-v4:27.1.1'
52 | testImplementation 'junit:junit:4.12'
53 | testImplementation 'org.mockito:mockito-core:1.10.19'
54 | androidTestImplementation 'com.android.support.test:runner:1.0.2'
55 | androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
56 | }
57 |
58 | apply plugin: 'com.google.ar.sceneform.plugin'
59 | //WARNING: THE IMPORTER IS BUGGY... RERUN IF IT ERRORS
60 | sceneform.asset('sampledata/models/test.obj',
61 | 'default',
62 | 'sampledata/models/test.sfa',
63 | 'src/main/res/raw/test')
64 |
65 | sceneform.asset('sampledata/models/model.obj',
66 | 'default',
67 | 'sampledata/models/model.sfa',
68 | 'src/main/res/raw/model')
69 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/java/com/arjo129/artest/places/PlaceLevel1.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest.places;
2 |
3 | import android.content.Intent;
4 | import android.support.v4.app.NavUtils;
5 | import android.support.v7.app.ActionBar;
6 | import android.support.v7.app.AppCompatActivity;
7 | import android.os.Bundle;
8 | import android.support.v7.widget.LinearLayoutManager;
9 | import android.support.v7.widget.RecyclerView;
10 | import android.view.Menu;
11 | import android.view.MenuItem;
12 | import android.view.View;
13 |
14 | import com.arjo129.artest.MapActivity;
15 | import com.arjo129.artest.R;
16 |
17 | import java.util.List;
18 | import java.util.Set;
19 |
20 | /**
21 | * Done by Chelsey
22 | */
23 | public class PlaceLevel1 extends AppCompatActivity {
24 |
25 | private RecyclerView recyclerView;
26 | private RecyclerView.LayoutManager layoutManager;
27 | private RecyclerAdapter adapter;
28 | private Set list;
29 | private SearchPlaces searchPlaces;
30 |
31 | @Override
32 | protected void onCreate(Bundle savedInstanceState) {
33 | super.onCreate(savedInstanceState);
34 | setContentView(R.layout.activity_place_level1);
35 | ActionBar actionBar = this.getSupportActionBar();
36 |
37 | // Set the action bar back button to look like an up button
38 | if (actionBar != null) {
39 | actionBar.setDisplayHomeAsUpEnabled(true);
40 | }
41 |
42 | recyclerView = findViewById(R.id.rv_level1);
43 | layoutManager = new LinearLayoutManager(this);
44 | recyclerView.setLayoutManager(layoutManager);
45 | Intent before = getIntent();
46 | int level = 0;
47 | if(before.hasExtra("level")){
48 | level = getIntent().getIntExtra("level", 0);
49 | searchPlaces = new SearchPlaces(this, level);
50 | list = searchPlaces.getPlaces();
51 | }
52 | if(level == 0){
53 | setTitle("Basement");
54 | }
55 | else{
56 | setTitle("Level "+ level);
57 | }
58 | adapter = new RecyclerAdapter(this, list, level);
59 | recyclerView.setHasFixedSize(true);
60 | recyclerView.setAdapter(adapter);
61 | }
62 |
63 | @Override
64 | public boolean onCreateOptionsMenu(Menu menu) {
65 | getMenuInflater().inflate(R.menu.menu_lt, menu);
66 | MenuItem item = menu.findItem(R.id.action_search_lt);
67 | item.setVisible(false);
68 | return true;
69 | }
70 |
71 |
72 | @Override
73 | public boolean onOptionsItemSelected(MenuItem item) {
74 | int id = item.getItemId();
75 | // When the home button is pressed, take the user back to the VisualizerActivity
76 | if (id == android.R.id.home) {
77 | NavUtils.navigateUpFromSameTask(this);
78 | }
79 | if(id == R.id.go_to_map){
80 | Intent mapIntent = new Intent(this, MapActivity.class);
81 | startActivity(mapIntent);
82 | }
83 | return super.onOptionsItemSelected(item);
84 | }
85 |
86 | }
87 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/java/com/arjo129/artest/places/SearchPlaces.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest.places;
2 |
3 |
4 | import android.content.Context;
5 | import android.support.v7.app.AppCompatActivity;
6 | import android.util.Log;
7 |
8 | import com.mapbox.geojson.Feature;
9 | import com.mapbox.geojson.FeatureCollection;
10 | import com.mapbox.geojson.Point;
11 | import com.mapbox.mapboxsdk.geometry.LatLng;
12 |
13 | import java.io.IOException;
14 | import java.io.InputStream;
15 | import java.util.ArrayList;
16 | import java.util.HashMap;
17 | import java.util.LinkedHashSet;
18 | import java.util.List;
19 | import java.util.Set;
20 |
21 | /**
22 | * Done by Chelsey
23 | */
24 | public class SearchPlaces extends AppCompatActivity {
25 | private Set places;
26 | private Context mContext;
27 |
28 | SearchPlaces(Context context, int level){
29 | mContext = context;
30 | places = loadPlaces(level);
31 | }
32 |
33 | SearchPlaces(Context context) {
34 | mContext = context;
35 | places = new LinkedHashSet<>();
36 | for (int level = 0; level < 3; level++) {
37 | Set levelPlaces = loadPlaces(level);
38 | places.addAll(levelPlaces);
39 | }
40 | }
41 |
42 | private String loadJsonFromAsset(String filename){
43 | try{
44 | InputStream is = mContext.getAssets().open(filename);
45 | int size = is.available();
46 | byte[] buffer = new byte[size];
47 | is.read(buffer);
48 | is.close();
49 | return new String(buffer, "UTF-8");
50 | } catch(IOException e){
51 | e.printStackTrace();
52 | return null;
53 | }
54 | }
55 |
56 | public Set loadPlaces(int level){
57 | FeatureCollection featureCollection;
58 | try {
59 | String filename = "com1floor"+level+".geojson";
60 | featureCollection = FeatureCollection.fromJson(loadJsonFromAsset(filename));
61 | }catch (Exception e){
62 | return null;
63 | }
64 | List featureList = featureCollection.features();
65 | Set level_1_places = new LinkedHashSet<>();
66 | for(int i=0; i getPlaces(){
81 | return places;
82 | }
83 |
84 |
85 |
86 |
87 | }
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/layout/activity_map.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
17 |
18 |
24 |
25 |
26 |
35 |
36 |
45 |
46 |
47 |
57 |
58 |
59 |
69 |
70 |
71 |
72 |
75 |
76 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/java/com/arjo129/artest/ARActivity.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest;
2 |
3 | import android.content.DialogInterface;
4 | import android.content.Intent;
5 | import android.os.Handler;
6 | import android.support.v7.app.AlertDialog;
7 | import android.support.v7.app.AppCompatActivity;
8 | import android.os.Bundle;
9 |
10 | import com.arjo129.artest.arrendering.ARScene;
11 | import com.arjo129.artest.arrendering.DirectionInstruction;
12 | import com.arjo129.artest.arrendering.DisplayRotationHelper;
13 | import com.arjo129.artest.device.CompassListener;
14 | import com.arjo129.artest.device.WifiLocation;
15 | import com.google.ar.sceneform.ux.ArFragment;
16 |
17 | import java.util.ArrayList;
18 |
19 | import static java.lang.Math.abs;
20 | import static java.lang.Math.copySign;
21 |
22 | public class ARActivity extends AppCompatActivity {
23 | WifiLocation wifiLocation;
24 | final String TAG = "ARActivity";
25 | int x,y,floor;
26 |
27 | private CompassListener compassListener;
28 | private DisplayRotationHelper dhelper;
29 | private ARScene navscene;
30 |
31 | @Override
32 | protected void onCreate(Bundle savedInstanceState) {
33 | super.onCreate(savedInstanceState);
34 | setContentView(R.layout.activity_ar);
35 | //Use a custom compass object to reduce
36 | compassListener = new CompassListener(this);
37 | dhelper = new DisplayRotationHelper(this);
38 | //Get Route
39 | Intent routeIntent = getIntent();
40 | ArrayList directionInstructions = (ArrayList) routeIntent.getSerializableExtra("Directions");
41 | //Instantiate the ARCore stuff
42 | ArFragment arFragment = (ArFragment) getSupportFragmentManager().findFragmentById(R.id.ARView);
43 | navscene = new ARScene(this,compassListener,arFragment,dhelper, directionInstructions);
44 |
45 | AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
46 |
47 | // set title
48 | alertDialogBuilder.setTitle("Calibrating the AR");
49 |
50 | // set dialog message
51 | alertDialogBuilder
52 | .setMessage("Readings may not be accurate if phone is not calibrated in the Figure-8 pattern.")
53 | .setCancelable(false)
54 | // .setNegativeButton("DON'T SHOW THIS AGAIN", new DialogInterface.OnClickListener() {
55 | // @Override
56 | // public void onClick(DialogInterface dialogInterface, int i) {
57 | // dialogInterface.cancel();
58 | // }
59 | // })
60 | .setPositiveButton("Calibrate", new DialogInterface.OnClickListener() {
61 | @Override
62 | public void onClick(DialogInterface dialogInterface, int i) {
63 | dialogInterface.cancel();
64 | }
65 | });
66 |
67 | // create alert dialog
68 | AlertDialog alertDialog = alertDialogBuilder.create();
69 |
70 | // show it
71 | alertDialog.show();
72 |
73 | }
74 |
75 |
76 | @Override
77 | protected void onDestroy(){
78 | super.onDestroy();
79 | //serverHandler.removeCallbacks(serverReqThread);
80 | navscene.destroy();
81 | }
82 | }
--------------------------------------------------------------------------------
/ARTest/app/sampledata/models/model.obj:
--------------------------------------------------------------------------------
1 | mtllib materials.mtl
2 | v -0.0865339 -0.06986284 0.05309352
3 | v -0.09412253 -0.07342255 -0.02646615
4 | v -0.1561743 -0.02306247 -0.02280076
5 | v -0.1485857 -0.01950264 0.05675891
6 | v -0.03661406 -0.007804871 0.04555531
7 | v -0.09866583 0.04255521 0.04922071
8 | v 0.05202401 0.2298859 0.02646621
9 | v 0.1140758 0.1795257 0.02280079
10 | v 0.1561742 -0.1642681 0.03416719
11 | v 0.1062542 -0.2263261 0.04170543
12 | v -0.1062545 0.0389955 -0.03033897
13 | v -0.04420269 -0.0113647 -0.03400437
14 | v 0.1485855 -0.1678281 -0.04539251
15 | v 0.09866571 -0.2298859 -0.03785428
16 | v 0.04443538 0.2263261 -0.05309352
17 | v 0.1064872 0.1759659 -0.0567589
18 | vn -0.623998 -0.775724 0.09422764
19 | vn 0.09485667 0.04449533 0.9944961
20 | vn 0.09485849 0.04449719 0.9944959
21 | vn -0.7756472 0.6295016 0.04581742
22 | vn 0.09485812 0.04449744 0.9944959
23 | vn -0.09485812 -0.04449744 -0.9944959
24 | vn 0.6239974 0.7757244 -0.09422873
25 | vn -0.09485862 -0.04449716 -0.9944958
26 | vn -0.6239976 -0.7757244 0.0942272
27 | vn 0.7756472 -0.6295016 -0.04581742
28 | vn -0.7756479 0.6295006 0.04581774
29 | vn -0.09485658 -0.04449555 -0.9944961
30 | vn 0.7756479 -0.6295007 -0.04581727
31 | vn 0.623998 0.775724 -0.09422764
32 | vt -0.08174587 -0.1843064
33 | vt -0.08890464 -0.1807354
34 | vt -0.09247564 -0.1878942
35 | vt -0.08531686 -0.1914652
36 | vt 0.2092797 -0.02656919
37 | vt 0.2165573 -0.02989131
38 | vt 0.2265856 -0.007922845
39 | vt 0.2193079 -0.004600734
40 | vt 0.2059575 -0.03384679
41 | vt 0.2092797 -0.02656918
42 | vt 0.1866689 -0.01624771
43 | vt 0.1833468 -0.02352534
44 | vt -0.02104471 0.0513454
45 | vt -0.01324437 0.05312159
46 | vt -0.01502056 0.06092192
47 | vt -0.02282089 0.05914573
48 | vt 0.2059576 -0.03384677
49 | vt 0.2132352 -0.03716888
50 | vt 0.2165573 -0.02989127
51 | vt 0.2092797 -0.02656916
52 | vt -0.2059576 -0.03384677
53 | vt -0.2092797 -0.02656916
54 | vt -0.2165573 -0.02989127
55 | vt -0.2132352 -0.03716888
56 | vt 0.08174532 -0.1843066
57 | vt 0.0889041 -0.1807356
58 | vt 0.07780949 -0.158494
59 | vt 0.0706507 -0.162065
60 | vt -0.2092797 -0.02656918
61 | vt -0.2059576 -0.03384678
62 | vt -0.1833468 -0.02352533
63 | vt -0.1866689 -0.01624773
64 | vt -0.08890469 -0.1807353
65 | vt -0.08174591 -0.1843063
66 | vt -0.07065123 -0.1620648
67 | vt -0.07781 -0.1584938
68 | vt 0.0210447 0.05134541
69 | vt 0.02282089 0.05914576
70 | vt 0.01502055 0.06092193
71 | vt 0.01324437 0.0531216
72 | vt -0.02282091 0.05914598
73 | vt -0.01502058 0.06092218
74 | vt -0.02038231 0.08446854
75 | vt -0.02818265 0.08269235
76 | vt -0.2165573 -0.02989132
77 | vt -0.2092797 -0.02656921
78 | vt -0.2193079 -0.004600746
79 | vt -0.2265856 -0.007922855
80 | vt 0.01502068 0.06092213
81 | vt 0.02282101 0.05914594
82 | vt 0.02818274 0.0826923
83 | vt 0.02038241 0.08446849
84 | vt 0.08174582 -0.1843064
85 | vt 0.08531681 -0.1914652
86 | vt 0.09247559 -0.1878942
87 | vt 0.0889046 -0.1807354
88 | o group302355881
89 | g mesh302355881
90 | usemtl mat2
91 | f 4/4/1 3/3/1 2/2/1 1/1/1
92 | f 8/8/2 7/7/2 6/6/2 5/5/2
93 | f 10/12/3 9/11/3 5/10/3 1/9/3
94 | f 6/16/4 11/15/4 3/14/4 4/13/4
95 | f 5/20/5 6/19/5 4/18/5 1/17/5
96 | f 3/24/6 11/23/6 12/22/6 2/21/6
97 | f 9/28/7 13/27/7 12/26/7 5/25/7
98 | f 13/32/8 14/31/8 2/30/8 12/29/8
99 | f 14/36/9 10/35/9 1/34/9 2/33/9
100 | f 14/40/10 13/39/10 9/38/10 10/37/10
101 | f 7/44/11 15/43/11 11/42/11 6/41/11
102 | f 15/48/12 16/47/12 12/46/12 11/45/12
103 | f 16/52/13 8/51/13 5/50/13 12/49/13
104 | f 16/56/14 15/55/14 7/54/14 8/53/14
105 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/java/com/arjo129/artest/arrendering/VisualAnchorCompass.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest.arrendering;
2 |
3 | import android.hardware.SensorManager;
4 | import android.util.Log;
5 |
6 | import com.arjo129.artest.device.CompassListener;
7 | import com.google.ar.core.Anchor;
8 | import com.google.ar.core.Frame;
9 | import com.google.ar.core.Pose;
10 | import com.google.ar.core.Session;
11 | import com.google.ar.sceneform.math.Quaternion;
12 | import com.google.ar.sceneform.math.Vector3;
13 |
14 |
15 | public class VisualAnchorCompass {
16 | private final static int SIZE = 20;
17 | private final static String TAG = "VisualAnchorCompass";
18 | private Anchor camAnchors[];
19 | private float measurements[], headings[];
20 | private CompassListener compassListener;
21 | private int numAnchors = 0, anchorIdx = 0;
22 |
23 | @SuppressWarnings("WeakerAccess")
24 | VisualAnchorCompass(CompassListener c){
25 | camAnchors = new Anchor[SIZE];
26 | measurements = new float[SIZE];
27 | headings = new float[SIZE];
28 | compassListener = c;
29 | }
30 | public float getHeading(Session session, Frame frame, boolean update){
31 | //Acquire camera pose
32 | Pose cameraPose = frame.getCamera().getPose();
33 | float deltaZ = getAngleFromPose(cameraPose);
34 | //Camera 2d
35 | Quaternion qt1 = Quaternion.axisAngle(Vector3.up(),deltaZ);
36 | Pose rotationCam = Pose.makeRotation(qt1.x,qt1.y,qt1.z,qt1.w);
37 | if(update && compassListener.accuracy == SensorManager.SENSOR_STATUS_ACCURACY_HIGH) {
38 | if(camAnchors[anchorIdx] != null)
39 | camAnchors[anchorIdx].detach();
40 | camAnchors[anchorIdx] = session.createAnchor(rotationCam);
41 | headings[anchorIdx] = compassListener.getBearing();
42 | anchorIdx++;
43 | anchorIdx %= SIZE;
44 | numAnchors = Math.min(numAnchors + 1, SIZE);
45 | }
46 | for(int i = 0; i < numAnchors; i++){
47 | Pose deltaCam = camAnchors[i].getPose().inverse().compose(rotationCam);
48 | float currentCameraDelta = getAngleFromPose(deltaCam);
49 | measurements[i]= ((360-currentCameraDelta)+headings[i]+360)%360;
50 | }
51 | return averageAngle(update);
52 | }
53 |
54 | public static float getAngleFromPose(Pose pose){
55 | //Project z-axis onto x-z plane.
56 | Vector3 vec = new Vector3(pose.getZAxis()[0],pose.getZAxis()[1],pose.getZAxis()[2]);
57 | float zProjection = Vector3.dot(Vector3.back(), vec.normalized());
58 | float xProjection = Vector3.dot(Vector3.right(), vec.normalized());
59 | float deltaZ = (float) Math.toDegrees(Math.atan2(xProjection,zProjection));
60 | return (deltaZ+360)%360;
61 | }
62 | private float averageAngle(boolean update){
63 | double totalx = 0 ,totaly =0;
64 | for(int i = 0; i < numAnchors; i++){
65 | totalx += Math.cos(Math.toRadians(measurements[i]));
66 | totaly += Math.sin(Math.toRadians(measurements[i]));
67 | }
68 | if(!update || numAnchors == 0){
69 | totalx += Math.cos(Math.toRadians(compassListener.getBearing()));
70 | totaly += Math.sin(Math.toRadians(compassListener.getBearing()));
71 | }
72 | float total = ((float)Math.toDegrees(Math.atan2(totaly,totalx))+360)%360;
73 | Log.d(TAG, "Angle "+total+" calculated from "+numAnchors+" anchors "+compassListener.getBearing());
74 | return total;
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/java/com/arjo129/artest/datacollection/UploadConfirmation.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest.datacollection;
2 |
3 | import android.content.Intent;
4 | import android.os.Bundle;
5 | import android.support.v4.app.NavUtils;
6 | import android.support.v7.app.ActionBar;
7 | import android.support.v7.app.AppCompatActivity;
8 | import android.util.Log;
9 | import android.view.Menu;
10 | import android.view.MenuItem;
11 | import android.widget.ArrayAdapter;
12 | import android.widget.ListView;
13 |
14 | import com.arjo129.artest.LoginActivity;
15 | import com.arjo129.artest.R;
16 |
17 | import java.util.ArrayList;
18 |
19 | public class UploadConfirmation extends AppCompatActivity {
20 | private static final String TAG = "UploadConfirmation";
21 | ArrayAdapter listAdapter;
22 | ArrayList creation_times;
23 | private WifiFingerprintList wifiList;
24 | private boolean delete_item = false;
25 | @Override
26 | protected void onCreate(Bundle savedInstanceState) {
27 | super.onCreate(savedInstanceState);
28 | setContentView(R.layout.activity_upload_confirmation);
29 | ActionBar actionBar = this.getSupportActionBar();
30 | // Set the action bar back button to look like an up button
31 | if (actionBar != null) {
32 | actionBar.setDisplayHomeAsUpEnabled(true);
33 | }
34 |
35 | wifiList = WifiFingerprintList.getInstance();
36 | creation_times = new ArrayList<>();
37 | for(WifiFingerprint fingerprint : wifiList.wifiFingerprints){
38 | creation_times.add("FingerPrint collected on:"+fingerprint.getDate());
39 | }
40 | ListView lv = findViewById(R.id.upload_list);
41 | listAdapter = new ArrayAdapter<>(this,R.layout.upload_listview,creation_times);
42 | lv.setAdapter(listAdapter);
43 | lv.setOnItemClickListener((adapterView, view, i, l) -> {
44 | Log.d(TAG,"removing item "+i);
45 | if(delete_item) {
46 | creation_times.remove(i);
47 | wifiList.removeFingerprint(i);
48 | listAdapter.notifyDataSetChanged();
49 | }
50 | });
51 | }
52 | @Override
53 | public boolean onCreateOptionsMenu(Menu menu) {
54 | getMenuInflater().inflate(R.menu.confirmupload, menu);
55 | return true;
56 | }
57 |
58 |
59 | @Override
60 | public boolean onOptionsItemSelected(MenuItem item) {
61 | int id = item.getItemId();
62 | // When the home button is pressed, take the user back to the VisualizerActivity
63 | if (id == android.R.id.home) {
64 | NavUtils.navigateUpFromSameTask(this);
65 | } else if (id == R.id.upload_readings) {
66 | //NavUtils.navigateUpFromSameTask(this);
67 | wifiList.upload(this, (ServerResponse response) -> {
68 | if(response == ServerResponse.SERVER_RESPONSE_OK){
69 | wifiList.wifiFingerprints.clear();
70 | creation_times.clear();
71 | listAdapter.notifyDataSetChanged();
72 | }
73 | else {
74 | Intent login = new Intent(this, LoginActivity.class);
75 | login.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
76 | startActivity(login);
77 | }
78 | return null;
79 | });
80 | }
81 | if(id == R.id.delete_item){
82 | delete_item = !delete_item;
83 | }
84 | return super.onOptionsItemSelected(item);
85 | }
86 |
87 | }
88 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/layout/activity_compass.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
25 |
26 |
42 |
43 |
59 |
60 |
75 |
76 |
80 |
81 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/java/com/arjo129/artest/arrendering/DisplayRotationHelper.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest.arrendering;
2 |
3 | import android.app.Activity;
4 | import android.content.Context;
5 | import android.hardware.display.DisplayManager;
6 | import android.view.Display;
7 | import android.view.WindowManager;
8 |
9 | import com.google.ar.core.Session;
10 |
11 | public class DisplayRotationHelper implements DisplayManager.DisplayListener {
12 | private boolean viewportChanged;
13 | private int viewportWidth;
14 | private int viewportHeight;
15 | private final Context context;
16 | private final Display display;
17 |
18 | /**
19 | * Constructs the DisplayRotationHelper but does not register the listener yet.
20 | *
21 | * @param context the Android {@link Context}.
22 | */
23 | public DisplayRotationHelper(Context context) {
24 | this.context = context;
25 | display = context.getSystemService(WindowManager.class).getDefaultDisplay();
26 | }
27 |
28 | /** Registers the display listener. Should be called from {@link Activity#onResume()}. */
29 | public void onResume() {
30 | context.getSystemService(DisplayManager.class).registerDisplayListener(this, null);
31 | }
32 |
33 | /** Unregisters the display listener. Should be called from {@link Activity#onPause()}. */
34 | public void onPause() {
35 | context.getSystemService(DisplayManager.class).unregisterDisplayListener(this);
36 | }
37 |
38 | /**
39 | * Records a change in surface dimensions. This will be later used by {@link
40 | * #updateSessionIfNeeded(Session)}. Should be called from {@link
41 | * android.opengl.GLSurfaceView.Renderer
42 | * #onSurfaceChanged(javax.microedition.khronos.opengles.GL10, int, int)}.
43 | *
44 | * @param width the updated width of the surface.
45 | * @param height the updated height of the surface.
46 | */
47 | public void onSurfaceChanged(int width, int height) {
48 | viewportWidth = width;
49 | viewportHeight = height;
50 | viewportChanged = true;
51 | }
52 |
53 | /**
54 | * Updates the session display geometry if a change was posted either by {@link
55 | * #onSurfaceChanged(int, int)} call or by {@link #onDisplayChanged(int)} system callback. This
56 | * function should be called explicitly before each call to {@link Session#update()}. This
57 | * function will also clear the 'pending update' (viewportChanged) flag.
58 | *
59 | * @param session the {@link Session} object to update if display geometry changed.
60 | */
61 | public void updateSessionIfNeeded(Session session) {
62 | if (viewportChanged) {
63 | int displayRotation = display.getRotation();
64 | session.setDisplayGeometry(displayRotation, viewportWidth, viewportHeight);
65 | viewportChanged = false;
66 | }
67 | }
68 |
69 | /**
70 | * Returns the current rotation state of android display. Same as {@link Display#getRotation()}.
71 | */
72 | public int getRotation() {
73 | return display.getRotation();
74 | }
75 |
76 | @Override
77 | public void onDisplayAdded(int displayId) {}
78 |
79 | @Override
80 | public void onDisplayRemoved(int displayId) {}
81 |
82 | @Override
83 | public void onDisplayChanged(int displayId) {
84 | viewportChanged = true;
85 | }
86 |
87 | }
88 |
--------------------------------------------------------------------------------
/ARTest/.idea/assetWizardSettings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
75 |
76 |
77 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/java/com/arjo129/artest/datacollection/WifiFingerprintList.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest.datacollection;
2 |
3 | import android.content.Context;
4 | import android.util.Log;
5 |
6 | import com.arjo129.artest.R;
7 | import com.arjo129.artest.indoorLocation.SecurityProvider;
8 | import com.loopj.android.http.AsyncHttpClient;
9 | import com.loopj.android.http.JsonHttpResponseHandler;
10 | import org.json.JSONArray;
11 | import org.json.JSONObject;
12 | import java.util.ArrayList;
13 | import java.util.function.Function;
14 | import cz.msebera.android.httpclient.Header;
15 | import cz.msebera.android.httpclient.entity.StringEntity;
16 |
17 | public class WifiFingerprintList {
18 | private static final String TAG = "WifiFingerprintList";
19 | private static final WifiFingerprintList ourInstance = new WifiFingerprintList();
20 | public static WifiFingerprintList getInstance() {
21 | return ourInstance;
22 | }
23 | public String session_secret,session_id;
24 | public ArrayList wifiFingerprints;
25 | private WifiFingerprintList() {
26 | if(wifiFingerprints == null) wifiFingerprints = new ArrayList<>();
27 | }
28 | public void removeFingerprint(int i){
29 | wifiFingerprints.remove(i);
30 | }
31 | public void addFingerprint(WifiFingerprint wifiFingerprint){
32 | wifiFingerprints.add(wifiFingerprint);
33 | }
34 | public void upload(Context ctx, Function responseHandler){
35 | Log.d(TAG,"uploading..");
36 | String APIKEY = ctx.getString(R.string.server_api_key);
37 | String server = ctx.getString(R.string.server_url)+"batch_learn";
38 | JSONObject encapsulation_layer = new JSONObject();
39 | try {
40 | encapsulation_layer.put("session_id", session_id);
41 | encapsulation_layer.put("session_secret", session_secret);
42 | encapsulation_layer.put("api_key", APIKEY);
43 | JSONArray measurements = new JSONArray();
44 | for(WifiFingerprint measurement: wifiFingerprints){
45 | measurements.put(measurement.toJSON());
46 | }
47 | encapsulation_layer.put("measurements", measurements);
48 | } catch (Exception e) {
49 | e.printStackTrace();
50 | responseHandler.apply(ServerResponse.SERVER_RESPONSE_ERROR);
51 | return;
52 | }
53 | AsyncHttpClient client = new AsyncHttpClient();
54 | client.setSSLSocketFactory(SecurityProvider.getSocketFactory(ctx));
55 | StringEntity ent;
56 | try {
57 | ent = new StringEntity(encapsulation_layer.toString());
58 | } catch (Exception e){
59 | e.printStackTrace();
60 | responseHandler.apply(ServerResponse.SERVER_RESPONSE_ERROR);
61 | return;
62 | }
63 | client.post(ctx,server,ent,"application/json", new JsonHttpResponseHandler(){
64 | @Override
65 | public void onSuccess(int statusCode, Header[] headers, JSONObject response){
66 | try {
67 | Log.d(TAG,response.toString());
68 | ServerResponse serverResponse;
69 | if (response.get("status").equals("ok")) {
70 | serverResponse = ServerResponse.SERVER_RESPONSE_OK;
71 | session_secret = (String)response.get("session_secret");
72 | } else{
73 | //Probably logged out
74 | serverResponse = ServerResponse.SERVER_RESPONSE_BAD_AUTH;
75 |
76 | }
77 | responseHandler.apply(serverResponse);
78 | } catch (Exception e){
79 | e.printStackTrace();
80 | responseHandler.apply(ServerResponse.SERVER_RESPONSE_ERROR);
81 | }
82 | }
83 | });
84 | }
85 | }
86 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/layout/activity_places_to_go.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
44 |
45 |
69 |
70 |
85 |
86 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/java/com/arjo129/artest/places/PlacesToGo.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest.places;
2 |
3 | import android.Manifest;
4 | import android.content.Intent;
5 | import android.support.annotation.NonNull;
6 | import android.support.v7.app.AppCompatActivity;
7 | import android.os.Bundle;
8 | import android.view.Menu;
9 | import android.view.MenuItem;
10 | import android.view.View;
11 | import android.widget.Button;
12 | import android.widget.GridView;
13 | import android.widget.ImageButton;
14 |
15 | import com.arjo129.artest.CompassActivity;
16 | import com.arjo129.artest.LoginActivity;
17 | import com.arjo129.artest.R;
18 | import com.arjo129.artest.WifiActivity;
19 | import com.arjo129.artest.indoorLocation.WifiService;
20 |
21 | import java.util.List;
22 |
23 | import pub.devrel.easypermissions.AfterPermissionGranted;
24 | import pub.devrel.easypermissions.AppSettingsDialog;
25 | import pub.devrel.easypermissions.EasyPermissions;
26 |
27 | /**
28 | * Done by Chelsey
29 | */
30 | public class PlacesToGo extends AppCompatActivity
31 | implements EasyPermissions.PermissionCallbacks{
32 |
33 | private static final int LOCATION_PERMISSION = 22;
34 |
35 | @Override
36 | protected void onCreate(Bundle savedInstanceState) {
37 | super.onCreate(savedInstanceState);
38 | setContentView(R.layout.activity_places_to_go);
39 | Button button = findViewById(R.id.main_button);
40 | button.setOnClickListener(new View.OnClickListener() {
41 | @Override
42 | public void onClick(View view) {
43 | wifiScanning();
44 | }
45 | });
46 | }
47 |
48 | @Override
49 | public boolean onCreateOptionsMenu(Menu menu) {
50 | getMenuInflater().inflate(R.menu.main_menu, menu);
51 | MenuItem loginItem = menu.findItem(R.id.activity_login);
52 | return true;
53 | }
54 |
55 | @Override
56 | public boolean onOptionsItemSelected(MenuItem item) {
57 | if(item.getItemId() == R.id.activity_login){
58 | Intent loginIntent = new Intent(this, LoginActivity.class);
59 | startActivity(loginIntent);
60 | }
61 | return super.onOptionsItemSelected(item);
62 | }
63 |
64 | @AfterPermissionGranted(LOCATION_PERMISSION)
65 | private void wifiScanning(){
66 | String[] perms = {Manifest.permission.ACCESS_FINE_LOCATION};
67 | if(EasyPermissions.hasPermissions(this, perms)){
68 | // openWifiIntent();
69 | startService(new Intent(this, WifiService.class));
70 | Intent favsAct = new Intent(PlacesToGo.this,PlacesLectureTheatres.class);
71 | PlacesToGo.this.startActivity(favsAct);
72 |
73 | }
74 | else EasyPermissions.requestPermissions(this, "We need permissions to do Wifi Scanning",
75 | LOCATION_PERMISSION, perms);
76 | }
77 |
78 | public void openWifiIntent(){
79 | Intent wifiIntent = new Intent(this, WifiActivity.class);
80 | startActivity(wifiIntent);
81 | }
82 |
83 | @Override
84 | public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
85 | super.onRequestPermissionsResult(requestCode, permissions, grantResults);
86 |
87 | EasyPermissions.onRequestPermissionsResult(requestCode,permissions,grantResults,this);
88 |
89 | }
90 |
91 | @Override
92 | public void onPermissionsGranted(int requestCode, @NonNull List perms) {
93 |
94 | }
95 |
96 | @Override
97 | public void onPermissionsDenied(int requestCode, @NonNull List perms) {
98 | if(EasyPermissions.somePermissionPermanentlyDenied(this, perms)){
99 | new AppSettingsDialog.Builder(this).build().show();
100 | }
101 | }
102 |
103 | @Override
104 | protected void onActivityResult(int requestCode, int resultCode, Intent data) {
105 | super.onActivityResult(requestCode, resultCode, data);
106 | if(requestCode == AppSettingsDialog.DEFAULT_SETTINGS_REQ_CODE){
107 | wifiScanning();
108 | }
109 | }
110 | }
111 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/java/com/arjo129/artest/CompassActivity.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest;
2 |
3 | import android.hardware.Sensor;
4 | import android.hardware.SensorEvent;
5 | import android.hardware.SensorEventListener;
6 | import android.hardware.SensorManager;
7 | import android.media.Image;
8 | import android.support.v7.app.AppCompatActivity;
9 | import android.os.Bundle;
10 | import android.view.animation.Animation;
11 | import android.view.animation.RotateAnimation;
12 | import android.widget.ImageView;
13 | import android.widget.TextView;
14 |
15 | /**
16 | * Done by Chelsey
17 | */
18 | public class CompassActivity extends AppCompatActivity implements SensorEventListener{
19 | private SensorManager mSensorManager;
20 | private ImageView imageView;
21 | private TextView textDegrees, text2, text3;
22 | private float[] mGravity = new float[3];
23 | private float[] mGeomagnetic = new float[3];
24 | private float azimuth = 0f;
25 | private float correctAzimuth = 0f;
26 |
27 | @Override
28 | protected void onCreate(Bundle savedInstanceState) {
29 | super.onCreate(savedInstanceState);
30 | setContentView(R.layout.activity_compass);
31 |
32 | imageView = findViewById(R.id.compass);
33 | textDegrees = findViewById(R.id.text_degrees);
34 | text2 = findViewById(R.id.textView2);
35 | text3 = findViewById(R.id.textView3);
36 | mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
37 | }
38 |
39 | @Override
40 | protected void onResume() {
41 | super.onResume();
42 | mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),SensorManager.SENSOR_DELAY_GAME);
43 | mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),SensorManager.SENSOR_DELAY_GAME);
44 | }
45 |
46 | @Override
47 | protected void onPause() {
48 | super.onPause();
49 | mSensorManager.unregisterListener(this);
50 | }
51 |
52 | @Override
53 | public void onSensorChanged(SensorEvent sensorEvent) {
54 | final float alpha = 0.97f;
55 | synchronized (this){
56 | float degree = Math.round(sensorEvent.values[0]);
57 | float rotationX = Math.round(sensorEvent.values[1]);
58 | float rotationX2 = Math.round(sensorEvent.values[2]);
59 | textDegrees.setText(Float.toString(degree));
60 | text2.setText(Float.toString(rotationX));
61 | text3.setText(Float.toString(rotationX2));
62 | if(sensorEvent.sensor.getType() == Sensor.TYPE_ACCELEROMETER){
63 | mGravity[0] = alpha*mGravity[0]+(1-alpha)*sensorEvent.values[0];
64 | mGravity[1] = alpha*mGravity[1]+(1-alpha)*sensorEvent.values[1];
65 | mGravity[2] = alpha*mGravity[2]+(1-alpha)*sensorEvent.values[2];
66 | }
67 | if(sensorEvent.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD){
68 | mGeomagnetic[0] = alpha*mGeomagnetic[0]+(1-alpha)*sensorEvent.values[0];
69 | mGeomagnetic[1] = alpha*mGeomagnetic[1]+(1-alpha)*sensorEvent.values[1];
70 | mGeomagnetic[2] = alpha*mGeomagnetic[2]+(1-alpha)*sensorEvent.values[2];
71 | }
72 | float R[] = new float[9];
73 | float I[] = new float[9];
74 | boolean success = SensorManager.getRotationMatrix(R,I, mGravity,mGeomagnetic);
75 | if(success){
76 | float orientation[] = new float[3];
77 | SensorManager.getOrientation(R,orientation);
78 | azimuth = (float)Math.toDegrees(orientation[0]);
79 | azimuth = (azimuth+360)%360;
80 |
81 | Animation anim = new RotateAnimation(-correctAzimuth, -azimuth, Animation.RELATIVE_TO_SELF, 0.5f,Animation.RELATIVE_TO_SELF,0.5f);
82 | correctAzimuth = azimuth;
83 |
84 | anim.setDuration(500);
85 | anim.setRepeatCount(0);
86 | anim.setFillAfter(true);
87 |
88 | imageView.startAnimation(anim);
89 | }
90 | }
91 | }
92 |
93 | @Override
94 | public void onAccuracyChanged(Sensor sensor, int i) {
95 |
96 | }
97 | }
98 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/java/com/arjo129/artest/LoginActivity.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest;
2 |
3 | import android.content.Intent;
4 | import android.support.v7.app.AppCompatActivity;
5 | import android.os.Bundle;
6 | import android.util.Log;
7 | import android.view.View;
8 | import android.widget.Button;
9 | import android.widget.EditText;
10 | import android.widget.Toast;
11 |
12 | import com.arjo129.artest.datacollection.WifiFingerprint;
13 | import com.arjo129.artest.datacollection.WifiFingerprintList;
14 | import com.arjo129.artest.indoorLocation.SecurityProvider;
15 | import com.loopj.android.http.*;
16 |
17 | import org.json.JSONException;
18 | import org.json.JSONObject;
19 |
20 | import cz.msebera.android.httpclient.Header;
21 | import cz.msebera.android.httpclient.entity.StringEntity;
22 |
23 | /**
24 | * Done by Chelsey
25 | */
26 | public class LoginActivity extends AppCompatActivity {
27 | EditText admin_editText, password_editText;
28 | Button loginButton;
29 |
30 | @Override
31 | protected void onCreate(Bundle savedInstanceState) {
32 | super.onCreate(savedInstanceState);
33 | setContentView(R.layout.activity_login);
34 |
35 | admin_editText = findViewById(R.id.admin_text);
36 | password_editText = findViewById(R.id.password_text);
37 | loginButton = findViewById(R.id.login_button);
38 | loginButton.setOnClickListener(new View.OnClickListener(){
39 | @Override
40 | public void onClick(View view) {
41 |
42 | String username = admin_editText.getText().toString();
43 | String password = password_editText.getText().toString();
44 | try {
45 | JSONObject obj = new JSONObject();
46 | obj.put("username", username);
47 | obj.put("password", password);
48 | StringEntity ent = new StringEntity(obj.toString());
49 | AsyncHttpClient client = new AsyncHttpClient();
50 | client.setSSLSocketFactory(SecurityProvider.getSocketFactory(LoginActivity.this));
51 | client.post(getApplication(), getString(R.string.server_url)+"session_token",
52 | ent, "application/json", new JsonHttpResponseHandler() {
53 | @Override
54 | public void onSuccess(int statusCode, Header[] headers, JSONObject responseBody) {
55 | try {
56 | if (responseBody.get("status").equals("ok")) {
57 | //Correct
58 | String session_id = (String)responseBody.get("session_id");
59 | String session_secret = (String)responseBody.get("session_secret");
60 | Intent collect_data = new Intent(getApplicationContext(),CollectData.class);
61 | collect_data.putExtra("session_id", session_id);
62 | collect_data.putExtra("session_secret", session_secret);
63 | WifiFingerprintList wifiFingerprintList = WifiFingerprintList.getInstance();
64 | wifiFingerprintList.session_id = session_id;
65 | wifiFingerprintList.session_secret = session_secret;
66 | startActivity(collect_data);
67 | } else {
68 | //'Tis not working
69 | Log.d("LoginActivity", "Bad user");
70 | Toast.makeText(LoginActivity.this, "Wrong username or password", Toast.LENGTH_SHORT).show();
71 | }
72 | } catch(JSONException j){
73 | Log.d("LoginActivity", "JSON problem");
74 | Toast.makeText(LoginActivity.this,"Server sent weird response",Toast.LENGTH_LONG);
75 | }
76 | }
77 | });
78 |
79 | } catch (Exception j) {
80 | Log.d("LoginActivity","input problem");
81 | Toast.makeText(LoginActivity.this, "error processing the input", Toast.LENGTH_SHORT).show();
82 | }
83 | }
84 | });
85 | }
86 |
87 | }
88 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/java/com/arjo129/artest/indoorLocation/WifiService.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest.indoorLocation;
2 |
3 | import android.app.Service;
4 | import android.content.Intent;
5 | import android.os.Binder;
6 | import android.os.IBinder;
7 | import android.util.Log;
8 |
9 | import com.arjo129.artest.R;
10 | import com.arjo129.artest.device.WifiLocation;
11 | import com.loopj.android.http.AsyncHttpClient;
12 | import com.loopj.android.http.JsonHttpResponseHandler;
13 | import com.mapbox.android.core.location.LocationEngineListener;
14 |
15 | import org.json.JSONArray;
16 | import org.json.JSONException;
17 | import org.json.JSONObject;
18 |
19 | import java.util.ArrayList;
20 | import java.util.Date;
21 | import java.util.HashMap;
22 | import java.util.Map;
23 |
24 | import cz.msebera.android.httpclient.Header;
25 | import cz.msebera.android.httpclient.entity.StringEntity;
26 |
27 | public class WifiService extends Service {
28 | private static final String TAG = "indoorLocation.WifiService";
29 | private final IBinder mBinder = new WifiBinder();
30 | private double lat, lng, alt;
31 | WifiLocation wifiLocation;
32 | float accuracy;
33 | private Date lastGoodLocation;
34 | public class WifiBinder extends Binder {
35 | WifiService getService(){
36 | return WifiService.this;
37 | }
38 | }
39 | public WifiService() {
40 |
41 | }
42 | @Override
43 | public void onCreate() {
44 | wifiLocation = new WifiLocation(this, (HashMap map)->{
45 | //Format WIFI list to pretty JSON
46 | JSONObject wifi_list = new JSONObject();
47 | for (Map.Entry item : map.entrySet()) {
48 | String key = item.getKey();
49 | int value = item.getValue();
50 | try {
51 | wifi_list.put(key, value);
52 | }
53 | catch(Exception e){
54 | Log.d(TAG,e.toString());
55 | return null;
56 | }
57 | }
58 | Date date = new Date();
59 | JSONObject query = new JSONObject();
60 | try {
61 | query.put("WIFI", wifi_list);
62 | AsyncHttpClient client = new AsyncHttpClient();
63 | client.setSSLSocketFactory(SecurityProvider.getSocketFactory(this));
64 | StringEntity ent = new StringEntity(query.toString());
65 | Log.d(TAG,"Sending request");
66 | Log.d(TAG, "Processing: "+lat+" " +lng+" "+accuracy);
67 | Log.d(TAG,query.toString());
68 |
69 | //Query location
70 | client.post(getApplicationContext(),"https://ec2-18-191-20-227.us-east-2.compute.amazonaws.com/"+"location",ent,"application/json",new JsonHttpResponseHandler() {
71 | @Override
72 | public void onSuccess(int statusCode, Header[] headers, JSONObject responseBody) {
73 | Log.d(TAG,"got response: "+responseBody.toString());
74 | try{
75 | JSONArray predictions = responseBody.getJSONArray("predictions");
76 | alt = (double)predictions.getJSONObject(0).getInt("floor");
77 | Log.d(TAG,"floor: "+alt);
78 | lat = predictions.getJSONObject(0).getDouble("lat");
79 | lng = predictions.getJSONObject(0).getDouble("lng");
80 | accuracy = (float) predictions.getJSONObject(0).getDouble("probability");
81 | lastGoodLocation = date;
82 | Log.d(TAG, "accuracy: " + accuracy);
83 | //setLocation(lat,lng,accuracy);
84 | } catch(JSONException e){
85 | e.printStackTrace();
86 | }
87 | }
88 | });
89 |
90 | } catch (Exception e){
91 | Log.d(TAG,e.toString());
92 | }
93 | return null;
94 | });
95 |
96 | wifiLocation.scanWifiNetworks();
97 | }
98 | @Override
99 | public IBinder onBind(Intent intent) {
100 | // TODO: Return the communication channel to the service.
101 | return mBinder;
102 | }
103 | public void setListener(WifiNotificationListener wifiNotificationListener){
104 |
105 | }
106 | public void unbindListener(){
107 |
108 | }
109 | }
110 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/layout/toolbar_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
14 |
19 |
20 |
31 |
32 |
42 |
43 |
52 |
53 |
54 |
63 |
64 |
65 |
78 |
79 |
91 |
92 |
99 |
100 |
101 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/java/com/arjo129/artest/places/RecyclerAdapter.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest.places;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 | import android.support.v7.widget.RecyclerView;
6 | import android.util.Log;
7 | import android.view.LayoutInflater;
8 | import android.view.View;
9 | import android.view.View.OnClickListener;
10 | import android.view.ViewGroup;
11 | import android.widget.TextView;
12 | import android.widget.Toast;
13 |
14 | import com.arjo129.artest.CollectData;
15 | import com.arjo129.artest.MapActivity;
16 | import com.arjo129.artest.R;
17 | import com.mapbox.mapboxsdk.geometry.LatLng;
18 |
19 | import java.util.ArrayList;
20 | import java.util.LinkedHashSet;
21 | import java.util.List;
22 | import java.util.Set;
23 |
24 | /**
25 | * Done by Chelsey
26 | */
27 | public class RecyclerAdapter extends RecyclerView.Adapter {
28 |
29 | private static final String TAG = "RECYCLER_ADAPTER";
30 | private static final String BASEMENT = "Basement";
31 | private static final String LEVEL_1 = "Level 1";
32 | private static final String LEVEL_2 = "Level 2";
33 | private static final String[] levelNames = {BASEMENT, LEVEL_1, LEVEL_2};
34 | private ListItemClickListener mOnClickListener;
35 | private Set list;
36 | private Context context;
37 | private Toast mToast;
38 | private int level;
39 |
40 | public RecyclerAdapter(Context context, Setlist, int level){
41 | this.context = context;
42 | this.list = list;
43 | this.level = level;
44 | }
45 |
46 | public RecyclerAdapter(Context context, Setlist){
47 | this.context = context;
48 | this.list = list;
49 | this.level = -1;
50 | }
51 |
52 | /*
53 | List Item Click Listener
54 | */
55 | public interface ListItemClickListener{
56 | void onListItemClick(View v, int index);
57 |
58 | }
59 |
60 |
61 | @Override
62 | public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
63 | TextView place = (TextView) LayoutInflater.from(parent.getContext()).inflate(R.layout.lt_layout, parent, false);
64 | MyViewHolder viewHolder = new MyViewHolder(place);
65 | return viewHolder;
66 | }
67 |
68 | @Override
69 | public void onBindViewHolder(MyViewHolder holder, int position) {
70 | PlaceSearch place = (PlaceSearch)list.toArray()[position];
71 | if (level == -1){
72 | holder.place.setText(place.place_name + " (" + levelNames[place.level] + ")");
73 | } else {
74 | holder.place.setText(place.place_name);
75 | }
76 | holder.setItemClickListener(new ListItemClickListener() {
77 | @Override
78 | public void onListItemClick(View v, int index) {
79 | PlaceSearch placeClick = (PlaceSearch)list.toArray()[index];
80 | LatLng latLng = placeClick.coordinate;
81 | Intent mapActivity = new Intent(context, MapActivity.class);
82 | mapActivity.putExtra("lat", latLng.getLatitude());
83 | mapActivity.putExtra("lng", latLng.getLongitude());
84 | mapActivity.putExtra("place_name", placeClick.place_name);
85 | mapActivity.putExtra("level", placeClick.level);
86 | // Log.d(TAG, placeClick.place_name + " at " + placeClick.level);
87 | context.startActivity(mapActivity);
88 | }
89 | });
90 | }
91 |
92 | @Override
93 | public int getItemCount() {
94 | return list.size();
95 | }
96 |
97 | class MyViewHolder extends RecyclerView.ViewHolder
98 | implements OnClickListener{
99 |
100 | TextView place;
101 | ListItemClickListener clickListener;
102 |
103 | public MyViewHolder(View itemView) {
104 | super(itemView);
105 | place = (TextView)itemView.findViewById(R.id.lt_place);
106 | itemView.setOnClickListener(this);
107 | }
108 |
109 | @Override
110 | public void onClick(View view) {
111 | mOnClickListener.onListItemClick(view, getLayoutPosition());
112 | }
113 | public void setItemClickListener(ListItemClickListener listener){
114 | mOnClickListener = listener;
115 | }
116 | }
117 |
118 | public void updateList(Set newList){
119 | list = new LinkedHashSet<>();
120 | list.addAll(newList);
121 | notifyDataSetChanged();
122 | }
123 |
124 | }
125 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
14 |
15 |
22 |
25 |
26 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
40 |
43 |
44 |
47 |
50 |
51 |
52 |
56 |
59 |
60 |
64 |
67 |
68 |
72 |
75 |
76 |
79 |
82 |
83 |
88 |
91 |
92 |
93 |
97 |
100 |
101 |
105 |
106 |
107 |
108 |
109 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
10 |
12 |
14 |
16 |
18 |
20 |
22 |
24 |
26 |
28 |
30 |
32 |
34 |
36 |
38 |
40 |
42 |
44 |
46 |
48 |
50 |
52 |
54 |
56 |
58 |
60 |
62 |
64 |
66 |
68 |
70 |
72 |
74 |
75 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/res/drawable/my_launcher2_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
10 |
12 |
14 |
16 |
18 |
20 |
22 |
24 |
26 |
28 |
30 |
32 |
34 |
36 |
38 |
40 |
42 |
44 |
46 |
48 |
50 |
52 |
54 |
56 |
58 |
60 |
62 |
64 |
66 |
68 |
70 |
72 |
74 |
75 |
--------------------------------------------------------------------------------
/ARTest/app/src/main/java/com/arjo129/artest/WifiActivity.java:
--------------------------------------------------------------------------------
1 | package com.arjo129.artest;
2 |
3 | import android.content.BroadcastReceiver;
4 | import android.content.Context;
5 | import android.content.DialogInterface;
6 | import android.content.Intent;
7 | import android.content.IntentFilter;
8 | import android.content.pm.PackageManager;
9 | import android.location.Location;
10 | import android.location.LocationManager;
11 | import android.net.wifi.ScanResult;
12 | import android.net.wifi.WifiManager;
13 | import android.provider.Settings;
14 | import android.support.v4.content.ContextCompat;
15 | import android.support.v7.app.AlertDialog;
16 | import android.support.v7.app.AppCompatActivity;
17 | import android.os.Bundle;
18 | import android.util.Log;
19 | import android.view.View;
20 | import android.widget.ArrayAdapter;
21 | import android.widget.Button;
22 | import android.widget.ListView;
23 | import android.widget.Toast;
24 |
25 | import java.util.ArrayList;
26 | import java.util.List;
27 |
28 | /**
29 | * Done by Chelsey
30 | */
31 | public class WifiActivity extends AppCompatActivity {
32 | private WifiManager wifi;
33 | private ListView listView;
34 | private Button buttonScan;
35 | private Listresults;
36 | private static int size = 0;
37 | private boolean gps_enabled = false;
38 | private boolean network_enabled = false;
39 |
40 | ArrayListarrayList = new ArrayList<>();
41 | ArrayAdapter adapter;
42 |
43 | @Override
44 | protected void onCreate(Bundle savedInstanceState) {
45 | super.onCreate(savedInstanceState);
46 | // setContentView(R.layout.activity_wifi);
47 |
48 | buttonScan = findViewById(R.id.buttonScan);
49 | buttonScan.setOnClickListener(new View.OnClickListener(){
50 | @Override
51 | public void onClick(View view) {
52 | adapter.clear();
53 | adapter.notifyDataSetChanged();
54 | scanWifiNetworks();
55 | }
56 | });
57 |
58 | listView = findViewById(R.id.list);
59 | wifi = (WifiManager)getApplicationContext().getSystemService(Context.WIFI_SERVICE);
60 | if(!wifi.isWifiEnabled()){
61 | String message = "Wifi is disabled. Enabling it now~";
62 | Toast.makeText(this,message,Toast.LENGTH_LONG).show();
63 | wifi.setWifiEnabled(true);
64 | }
65 | adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, arrayList);
66 | listView.setAdapter(adapter);
67 |
68 | scanWifiNetworks();
69 | }
70 |
71 | @Override
72 | protected void onPause() {
73 | super.onPause();
74 | gps_enabled = false;
75 | network_enabled = false;
76 | }
77 |
78 | @Override
79 | protected void onResume() {
80 | super.onResume();
81 | scanWifiNetworks();
82 | }
83 |
84 | public void scanWifiNetworks(){
85 | enableLocation();
86 | if(gps_enabled && network_enabled){
87 | registerReceiver(wifi_receiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
88 | wifi.startScan();
89 | // Toast.makeText(this, "Scanning....", Toast.LENGTH_SHORT).show();
90 | }
91 | }
92 |
93 | BroadcastReceiver wifi_receiver = new BroadcastReceiver() {
94 | @Override
95 | public void onReceive(Context context, Intent intent) {
96 | Log.d("WifiScanner", "onReceive");
97 | results = wifi.getScanResults();
98 | unregisterReceiver(this);
99 | Log.d("WifiScanner", "size: " +results.size());
100 | for(int i=0; i< results.size(); i++){
101 | ScanResult scanResult = results.get(i);
102 | arrayList.add(i+ ". "+scanResult.SSID + " - " + scanResult.capabilities);
103 | adapter.notifyDataSetChanged();
104 | }
105 | }
106 | };
107 |
108 |
109 | public void enableLocation(){
110 | LocationManager lm = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
111 | try{
112 | gps_enabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
113 | }catch (Exception e){
114 | Log.d("WifiGPS", "GPS cannot be enabled");
115 | }
116 | try{
117 | network_enabled = lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
118 | }catch (Exception e){
119 | Log.d("WifiGPS", "Network cannot be enabled");
120 | }
121 |
122 | if(!gps_enabled && !network_enabled){
123 | AlertDialog.Builder dialog = new AlertDialog.Builder(this);
124 | dialog.setPositiveButton(getResources().getString(R.string.open_location_settings), new DialogInterface.OnClickListener() {
125 | @Override
126 | public void onClick(DialogInterface paramDialogInterface, int paramInt) {
127 | Intent myIntent = new Intent( Settings.ACTION_LOCATION_SOURCE_SETTINGS);
128 | startActivity(myIntent);
129 | //get gps
130 | }
131 | });
132 | dialog.setNegativeButton(getString(R.string.cancel), new DialogInterface.OnClickListener() {
133 | @Override
134 | public void onClick(DialogInterface paramDialogInterface, int paramInt) {
135 | onBackPressed();
136 | }
137 | });
138 | dialog.show();
139 |
140 | }
141 | }
142 |
143 | }
144 |
--------------------------------------------------------------------------------