Compare commits
5 Commits
137f024117
...
4499278583
| Author | SHA1 | Date |
|---|---|---|
|
|
4499278583 | |
|
|
372896ac34 | |
|
|
0585fb3eb1 | |
|
|
7a4fe41d02 | |
|
|
beea60cef1 |
|
|
@ -0,0 +1 @@
|
||||||
|
.idea/libraries/
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: android.arch.core:common:1.0.0@jar">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.core/common/1.0.0/a2d487452376193fc8c103dd2b9bd5f2b1b44563/common-1.0.0.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.core/common/1.0.0/a41fa3b9a66f3bdd41f98013a1688e969072aaf2/common-1.0.0-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: android.arch.lifecycle:common:1.0.0@jar">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.lifecycle/common/1.0.0/e414a4cb28434e25c4f6aa71426eb20cf4874ae9/common-1.0.0.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.lifecycle/common/1.0.0/39ce4055689b4b766478265a8c661f4165f26dc3/common-1.0.0-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: android.arch.lifecycle:runtime-1.0.0">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/runtime-1.0.0.aar/cdb9a750027cbb8c85f08353e72fc1c7/res" />
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/runtime-1.0.0.aar/cdb9a750027cbb8c85f08353e72fc1c7/jars/classes.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.lifecycle/runtime/1.0.0/1dd0298d8c45d8dfa4d038270247327f23df7a3a/runtime-1.0.0-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: com.android.support:animated-vector-drawable-26.1.0">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/animated-vector-drawable-26.1.0.aar/d613c82cc11195fbfed7fd901e855eca/res" />
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/animated-vector-drawable-26.1.0.aar/d613c82cc11195fbfed7fd901e855eca/jars/classes.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/animated-vector-drawable/26.1.0/91743e9b07667784f471a3c4748e6883cd810084/animated-vector-drawable-26.1.0-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: com.android.support:appcompat-v7-26.1.0">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/appcompat-v7-26.1.0.aar/d95819845d91c7d41ea53df58c461db7/res" />
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/appcompat-v7-26.1.0.aar/d95819845d91c7d41ea53df58c461db7/jars/classes.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/appcompat-v7/26.1.0/2b34456c30d6b6e5db5fa3e8fa02f6cebd5531fd/appcompat-v7-26.1.0-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
<component name="libraryTable">
|
<component name="libraryTable">
|
||||||
<library name="Gradle: com.android.support.constraint:constraint-layout-1.1.2">
|
<library name="Gradle: com.android.support.constraint:constraint-layout-1.1.2">
|
||||||
<CLASSES>
|
<CLASSES>
|
||||||
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/constraint-layout-1.1.2.aar/00a809a27fc62250c8e4b8815c4af738/res" />
|
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/constraint-layout-1.1.2.aar/f9c6f27924c13d28afb28e2766bf144d/res" />
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/constraint-layout-1.1.2.aar/00a809a27fc62250c8e4b8815c4af738/jars/classes.jar!/" />
|
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/constraint-layout-1.1.2.aar/f9c6f27924c13d28afb28e2766bf144d/jars/classes.jar!/" />
|
||||||
</CLASSES>
|
</CLASSES>
|
||||||
<JAVADOC />
|
<JAVADOC />
|
||||||
<SOURCES />
|
<SOURCES />
|
||||||
|
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: com.android.support:design-26.1.0">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/design-26.1.0.aar/65046785511affcef54941cace853c1b/jars/classes.jar!/" />
|
|
||||||
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/design-26.1.0.aar/65046785511affcef54941cace853c1b/res" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/design/26.1.0/c7ac62df01dd0a97d93500ad3da7faebf03ba49/design-26.1.0-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: com.android.support:recyclerview-v7-26.1.0">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/recyclerview-v7-26.1.0.aar/2b6291273076543057bc89301e60db34/jars/classes.jar!/" />
|
|
||||||
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/recyclerview-v7-26.1.0.aar/2b6291273076543057bc89301e60db34/res" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/recyclerview-v7/26.1.0/63d6891b399433c913fe91ce95a8456de02d367f/recyclerview-v7-26.1.0-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: com.android.support:support-annotations:26.1.0@jar">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-annotations/26.1.0/814258103cf26a15fcc26ecce35f5b7d24b73f8/support-annotations-26.1.0.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-annotations/26.1.0/29ca6aaf2d4976c13dd7c836e91bd2a61b697bf3/support-annotations-26.1.0-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: com.android.support:support-annotations:27.1.1@jar">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-annotations/27.1.1/39ded76b5e1ce1c5b2688e1d25cdc20ecee32007/support-annotations-27.1.1.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-annotations/27.1.1/46bebf5bd40146178cb33c7678f3782a09dea6e4/support-annotations-27.1.1-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: com.android.support:support-compat-26.1.0">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-compat-26.1.0.aar/e5c035260a6e7c79afd664c73a985caa/res" />
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-compat-26.1.0.aar/e5c035260a6e7c79afd664c73a985caa/jars/classes.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-compat/26.1.0/73bfdb5cca1949a51219d3676700996990ea3b52/support-compat-26.1.0-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: com.android.support:support-core-ui-26.1.0">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-core-ui-26.1.0.aar/cb035c7eaff9e1398aa75d9a9bff18a5/res" />
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-core-ui-26.1.0.aar/cb035c7eaff9e1398aa75d9a9bff18a5/jars/classes.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-core-ui/26.1.0/4d52cef4a24bf9939de1d256ca9f0974c6e636a4/support-core-ui-26.1.0-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: com.android.support:support-core-utils-26.1.0">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-core-utils-26.1.0.aar/d18410e4757ddba0d93018bde83681ac/res" />
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-core-utils-26.1.0.aar/d18410e4757ddba0d93018bde83681ac/jars/classes.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-core-utils/26.1.0/2b0c3da7f80880bbf365452b354490a77f085c96/support-core-utils-26.1.0-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: com.android.support:support-fragment-26.1.0">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-fragment-26.1.0.aar/5e7b68212b19cef8fe14d9db924b845f/res" />
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-fragment-26.1.0.aar/5e7b68212b19cef8fe14d9db924b845f/jars/classes.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-fragment/26.1.0/8279b00f5194701ff18363fa2958c5a26670b0ef/support-fragment-26.1.0-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: com.android.support:support-media-compat-26.1.0">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-media-compat-26.1.0.aar/1ca92468064dd9539a184ac2b7807a5f/jars/classes.jar!/" />
|
|
||||||
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-media-compat-26.1.0.aar/1ca92468064dd9539a184ac2b7807a5f/res" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-media-compat/26.1.0/774fd1164ec32514eec562953f723a1920a7fef7/support-media-compat-26.1.0-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: com.android.support:support-v4-26.1.0">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-v4-26.1.0.aar/21aa3f03c2c9d81daff8cb4b0f89d926/jars/classes.jar!/" />
|
|
||||||
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-v4-26.1.0.aar/21aa3f03c2c9d81daff8cb4b0f89d926/res" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-v4/26.1.0/9c53eab3272b3b26583b17facac2e90d264b2788/support-v4-26.1.0-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: com.android.support:support-vector-drawable-26.1.0">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-vector-drawable-26.1.0.aar/01293c8df327d61e6538928cef1f2ed5/jars/classes.jar!/" />
|
|
||||||
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-vector-drawable-26.1.0.aar/01293c8df327d61e6538928cef1f2ed5/res" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-vector-drawable/26.1.0/7a59c417eb560e5ddc2de20792ad45b38e422a5b/support-vector-drawable-26.1.0-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
<component name="libraryTable">
|
<component name="libraryTable">
|
||||||
<library name="Gradle: com.android.support.test.espresso:espresso-core-3.0.2">
|
<library name="Gradle: com.android.support.test.espresso:espresso-core-3.0.2">
|
||||||
<CLASSES>
|
<CLASSES>
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/espresso-core-3.0.2.aar/77876f9eea343818e38e4fe30cfe5e04/jars/classes.jar!/" />
|
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/espresso-core-3.0.2.aar/3d82a8b11d6dc0de54ea3ad98ee03295/jars/classes.jar!/" />
|
||||||
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/espresso-core-3.0.2.aar/77876f9eea343818e38e4fe30cfe5e04/res" />
|
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/espresso-core-3.0.2.aar/3d82a8b11d6dc0de54ea3ad98ee03295/res" />
|
||||||
</CLASSES>
|
</CLASSES>
|
||||||
<JAVADOC />
|
<JAVADOC />
|
||||||
<SOURCES>
|
<SOURCES>
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
<component name="libraryTable">
|
<component name="libraryTable">
|
||||||
<library name="Gradle: com.android.support.test.espresso:espresso-idling-resource-3.0.2">
|
<library name="Gradle: com.android.support.test.espresso:espresso-idling-resource-3.0.2">
|
||||||
<CLASSES>
|
<CLASSES>
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/espresso-idling-resource-3.0.2.aar/465ff76cd63421d1a24fd2e27121842a/jars/classes.jar!/" />
|
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/espresso-idling-resource-3.0.2.aar/4f0cc2851ea76c9c66536fcc52634b85/res" />
|
||||||
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/espresso-idling-resource-3.0.2.aar/465ff76cd63421d1a24fd2e27121842a/res" />
|
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/espresso-idling-resource-3.0.2.aar/4f0cc2851ea76c9c66536fcc52634b85/jars/classes.jar!/" />
|
||||||
</CLASSES>
|
</CLASSES>
|
||||||
<JAVADOC />
|
<JAVADOC />
|
||||||
<SOURCES>
|
<SOURCES>
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
<component name="libraryTable">
|
<component name="libraryTable">
|
||||||
<library name="Gradle: com.android.support.test:monitor-1.0.2">
|
<library name="Gradle: com.android.support.test:monitor-1.0.2">
|
||||||
<CLASSES>
|
<CLASSES>
|
||||||
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/monitor-1.0.2.aar/4b7ea80a5653dd8fdee4721539b5cf35/res" />
|
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/monitor-1.0.2.aar/9ce938bd2588a7e84bbbe32b9999ee6c/res" />
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/monitor-1.0.2.aar/4b7ea80a5653dd8fdee4721539b5cf35/jars/classes.jar!/" />
|
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/monitor-1.0.2.aar/9ce938bd2588a7e84bbbe32b9999ee6c/jars/classes.jar!/" />
|
||||||
</CLASSES>
|
</CLASSES>
|
||||||
<JAVADOC />
|
<JAVADOC />
|
||||||
<SOURCES>
|
<SOURCES>
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
<component name="libraryTable">
|
<component name="libraryTable">
|
||||||
<library name="Gradle: com.android.support.test:runner-1.0.2">
|
<library name="Gradle: com.android.support.test:runner-1.0.2">
|
||||||
<CLASSES>
|
<CLASSES>
|
||||||
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/runner-1.0.2.aar/2912fa4e7ce136fe31465c54f0b31475/res" />
|
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/runner-1.0.2.aar/209693d1f91ba50221fd49c2511d4492/jars/classes.jar!/" />
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/runner-1.0.2.aar/2912fa4e7ce136fe31465c54f0b31475/jars/classes.jar!/" />
|
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/runner-1.0.2.aar/209693d1f91ba50221fd49c2511d4492/res" />
|
||||||
</CLASSES>
|
</CLASSES>
|
||||||
<JAVADOC />
|
<JAVADOC />
|
||||||
<SOURCES>
|
<SOURCES>
|
||||||
|
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: com.android.support:transition-26.1.0">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/transition-26.1.0.aar/135436157cd72fdac2229c2d9ec1f36d/res" />
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/transition-26.1.0.aar/135436157cd72fdac2229c2d9ec1f36d/jars/classes.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/transition/26.1.0/bf675688e3ad5a0b68c627efa77de94822af2610/transition-26.1.0-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: com.google.zxing:core:3.2.1@jar">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.zxing/core/3.2.1/2287494d4f5f9f3a9a2bb6980e3f32053721b315/core-3.2.1.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.zxing/core/3.2.1/e88788f756edecae963417e07b690e88aaaa7c15/core-3.2.1-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: de.measite.minidns:minidns-core:0.2.4@jar">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/de.measite.minidns/minidns-core/0.2.4/e4a6561fade362814e336c9402b2c4341b6a5189/minidns-core-0.2.4.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/de.measite.minidns/minidns-core/0.2.4/2bfa0923df30a7254ea0110329c9eebce14d507f/minidns-core-0.2.4-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: de.measite.minidns:minidns-dnssec:0.2.4@jar">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/de.measite.minidns/minidns-dnssec/0.2.4/a379c5dc82d6e9d5d6c3fa3c56a048bfbb89d3b6/minidns-dnssec-0.2.4.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/de.measite.minidns/minidns-dnssec/0.2.4/84d0c25d677b10ff5111a669b05ec678c80b3ec8/minidns-dnssec-0.2.4-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: de.measite.minidns:minidns-hla:0.2.4@jar">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/de.measite.minidns/minidns-hla/0.2.4/c4b9a2cf4da635c38ebf7982a276a05850eaaf98/minidns-hla-0.2.4.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/de.measite.minidns/minidns-hla/0.2.4/19b7f2edf7b15f619261e9475520ad9c96dcbaa4/minidns-hla-0.2.4-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: de.measite.minidns:minidns-iterative-resolver:0.2.4@jar">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/de.measite.minidns/minidns-iterative-resolver/0.2.4/bd9864adf15337f87d4ed4b46fd50f395f1cc721/minidns-iterative-resolver-0.2.4.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/de.measite.minidns/minidns-iterative-resolver/0.2.4/9874a559dda1d698f745bee9885c0be8ada3638d/minidns-iterative-resolver-0.2.4-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: me.dm7.barcodescanner:core-1.9">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/core-1.9.aar/35f5bbf1c3c89e4cf8f6be1211d87d50/jars/classes.jar!/" />
|
|
||||||
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/core-1.9.aar/35f5bbf1c3c89e4cf8f6be1211d87d50/res" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES />
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: me.dm7.barcodescanner:zxing-1.9">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/zxing-1.9.aar/4fe25337b4e8593ab11fc6034f238ff3/res" />
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/zxing-1.9.aar/4fe25337b4e8593ab11fc6034f238ff3/jars/classes.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES />
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: org.igniterealtime.smack:smack-android:4.2.0@jar">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.igniterealtime.smack/smack-android/4.2.0/1fba3d428a9118497469dd723ae60ab9f44e19ab/smack-android-4.2.0.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.igniterealtime.smack/smack-android/4.2.0/85500dc0a7abbcce1313431953c47d8bf4728559/smack-android-4.2.0-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: org.igniterealtime.smack:smack-android-extensions:4.2.0@jar">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.igniterealtime.smack/smack-android-extensions/4.2.0/ed0c66a3b414382155b00d08652145ceaed23856/smack-android-extensions-4.2.0.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.igniterealtime.smack/smack-android-extensions/4.2.0/bafc8db5015e078bd28c7c8531eabc4a1af900d1/smack-android-extensions-4.2.0-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: org.igniterealtime.smack:smack-core:4.2.0@jar">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.igniterealtime.smack/smack-core/4.2.0/b460b28484d6315dfa158af0bb9a050c92ea106f/smack-core-4.2.0.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.igniterealtime.smack/smack-core/4.2.0/2b049a427e166f79c8b6063a54b9d34f2c376e48/smack-core-4.2.0-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: org.igniterealtime.smack:smack-extensions:4.2.0@jar">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.igniterealtime.smack/smack-extensions/4.2.0/3bffdc845de26ab601ac9a92e53c02f8676609fe/smack-extensions-4.2.0.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.igniterealtime.smack/smack-extensions/4.2.0/285595c8d6ced29196ea5552148836e69e8d07cc/smack-extensions-4.2.0-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: org.igniterealtime.smack:smack-im:4.2.0@jar">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.igniterealtime.smack/smack-im/4.2.0/c1805ee14fe07ac65683e4b22d796d30a4171fd9/smack-im-4.2.0.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.igniterealtime.smack/smack-im/4.2.0/781f1a714249b1330d218b242127a8bdba722839/smack-im-4.2.0-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: org.igniterealtime.smack:smack-resolver-minidns:4.2.0@jar">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.igniterealtime.smack/smack-resolver-minidns/4.2.0/f455576bef17e16ff5627fee48586aefe3855026/smack-resolver-minidns-4.2.0.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.igniterealtime.smack/smack-resolver-minidns/4.2.0/d00c3103c0f479f85e3ec9b0a4685625097b612b/smack-resolver-minidns-4.2.0-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: org.igniterealtime.smack:smack-sasl-provided:4.2.0@jar">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.igniterealtime.smack/smack-sasl-provided/4.2.0/dd5420f029cd3251fd8dfaa3de93ef8a8a607fc8/smack-sasl-provided-4.2.0.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.igniterealtime.smack/smack-sasl-provided/4.2.0/e5938aef4210cab2b68ef9aa1283fc869cea8537/smack-sasl-provided-4.2.0-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: org.igniterealtime.smack:smack-tcp:4.2.0@jar">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.igniterealtime.smack/smack-tcp/4.2.0/1ebbf8b432a4d154171141dcd5aef800e43ab1cd/smack-tcp-4.2.0.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.igniterealtime.smack/smack-tcp/4.2.0/84567022565b936ed9d65eb0dceccc8c0e9d6eb3/smack-tcp-4.2.0-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: org.jxmpp:jxmpp-core:0.5.0@jar">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jxmpp/jxmpp-core/0.5.0/f87f6947d74e7d126965b8a58a5472bbbea5f956/jxmpp-core-0.5.0.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jxmpp/jxmpp-core/0.5.0/afd7bb9e2de02cd1fd267bbe3b360c1769de726f/jxmpp-core-0.5.0-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: org.jxmpp:jxmpp-jid:0.5.0@jar">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jxmpp/jxmpp-jid/0.5.0/eb66b23d633f6a8c01526a78507dac80afef239c/jxmpp-jid-0.5.0.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jxmpp/jxmpp-jid/0.5.0/cd9e5d82c11aebf948aed1945c98b7196748b294/jxmpp-jid-0.5.0-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: org.jxmpp:jxmpp-util-cache:0.5.0@jar">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jxmpp/jxmpp-util-cache/0.5.0/32752e1fdf24320a2363d9b92504abf05f9b6548/jxmpp-util-cache-0.5.0.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jxmpp/jxmpp-util-cache/0.5.0/dc6cdd925ebeaba7593aa80e377738c431a6f02c/jxmpp-util-cache-0.5.0-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
<component name="libraryTable">
|
<component name="libraryTable">
|
||||||
<library name="Gradle: org.osmdroid:osmdroid-android-6.0.2">
|
<library name="Gradle: org.osmdroid:osmdroid-android-6.0.2">
|
||||||
<CLASSES>
|
<CLASSES>
|
||||||
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/osmdroid-android-6.0.2.aar/f3da086d5c64ef8f4f9f765b54a9f360/res" />
|
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/osmdroid-android-6.0.2.aar/8d2264ffb021df5ad9bb1e3a64814a3d/res" />
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/osmdroid-android-6.0.2.aar/f3da086d5c64ef8f4f9f765b54a9f360/jars/classes.jar!/" />
|
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/osmdroid-android-6.0.2.aar/8d2264ffb021df5ad9bb1e3a64814a3d/jars/classes.jar!/" />
|
||||||
</CLASSES>
|
</CLASSES>
|
||||||
<JAVADOC />
|
<JAVADOC />
|
||||||
<SOURCES>
|
<SOURCES>
|
||||||
|
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Gradle: xpp3:xpp3:1.1.4c@jar">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/xpp3/xpp3/1.1.4c/9b988ea84b9e4e9f1874e390ce099b8ac12cfff5/xpp3-1.1.4c.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/xpp3/xpp3/1.1.4c/8dd0ddee19fe6ed0182b18e0e621d1c8b4d8d56/xpp3-1.1.4c-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:roundIcon="@mipmap/ic_launcher_round"
|
android:roundIcon="@mipmap/ic_launcher_round"
|
||||||
android:supportsRtl="true"
|
android:supportsRtl="true"
|
||||||
android:theme="@style/AppTheme">
|
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".MainActivity"
|
android:name=".MainActivity"
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,10 @@ import android.os.Vibrator;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.support.annotation.RequiresApi;
|
import android.support.annotation.RequiresApi;
|
||||||
|
import android.support.design.widget.NavigationView;
|
||||||
|
import android.support.v4.view.GravityCompat;
|
||||||
|
import android.support.v4.widget.DrawerLayout;
|
||||||
|
import android.support.v7.app.ActionBar;
|
||||||
import android.support.v7.app.AppCompatActivity;
|
import android.support.v7.app.AppCompatActivity;
|
||||||
import android.support.v7.widget.Toolbar;
|
import android.support.v7.widget.Toolbar;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
@ -64,7 +68,7 @@ import fr.chteufleur.mytrackingdog.services.ServiceGps;
|
||||||
import fr.chteufleur.mytrackingdog.services.ServiceTrackingDog;
|
import fr.chteufleur.mytrackingdog.services.ServiceTrackingDog;
|
||||||
import fr.chteufleur.mytrackingdog.services.ServiceXmpp;
|
import fr.chteufleur.mytrackingdog.services.ServiceXmpp;
|
||||||
|
|
||||||
public class MainActivity extends AppCompatActivity implements IOrientationConsumer, Observer {
|
public class MainActivity extends AppCompatActivity implements IOrientationConsumer, Observer, NavigationView.OnNavigationItemSelectedListener {
|
||||||
|
|
||||||
public static final String TAG = MainActivity.class.getName();
|
public static final String TAG = MainActivity.class.getName();
|
||||||
|
|
||||||
|
|
@ -80,6 +84,8 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu
|
||||||
|
|
||||||
private Context ctx = null;
|
private Context ctx = null;
|
||||||
private MapView map = null;
|
private MapView map = null;
|
||||||
|
private DrawerLayout mDrawerLayout;
|
||||||
|
private NavigationView navigationView;
|
||||||
|
|
||||||
private int deviceOrientation = 0;
|
private int deviceOrientation = 0;
|
||||||
private boolean zoomed = false;
|
private boolean zoomed = false;
|
||||||
|
|
@ -93,7 +99,6 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu
|
||||||
private Button add_object;
|
private Button add_object;
|
||||||
private TextView textViewCurrentLocation;
|
private TextView textViewCurrentLocation;
|
||||||
|
|
||||||
private MyLocation lastLocation = null;
|
|
||||||
private float distance = 0;
|
private float distance = 0;
|
||||||
|
|
||||||
@RequiresApi(api = Build.VERSION_CODES.M)
|
@RequiresApi(api = Build.VERSION_CODES.M)
|
||||||
|
|
@ -125,6 +130,13 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu
|
||||||
|
|
||||||
Toolbar toolbar = findViewById(R.id.toolbar);
|
Toolbar toolbar = findViewById(R.id.toolbar);
|
||||||
setSupportActionBar(toolbar);
|
setSupportActionBar(toolbar);
|
||||||
|
ActionBar actionBar = getSupportActionBar();
|
||||||
|
actionBar.setDisplayHomeAsUpEnabled(true);
|
||||||
|
actionBar.setHomeAsUpIndicator(R.drawable.ic_menu);
|
||||||
|
|
||||||
|
mDrawerLayout = findViewById(R.id.drawer_layout);
|
||||||
|
navigationView = findViewById(R.id.nav_view);
|
||||||
|
navigationView.setNavigationItemSelectedListener(this);
|
||||||
|
|
||||||
map = findViewById(R.id.map);
|
map = findViewById(R.id.map);
|
||||||
map.setTileSource(TileSourceFactory.OpenTopo);
|
map.setTileSource(TileSourceFactory.OpenTopo);
|
||||||
|
|
@ -310,93 +322,197 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu
|
||||||
@Override
|
@Override
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
// Inflate the menu; this adds items to the action bar if it is present.
|
// Inflate the menu; this adds items to the action bar if it is present.
|
||||||
getMenuInflater().inflate(R.menu.menu_main, menu);
|
getMenuInflater().inflate(R.menu.drawer_view, menu);
|
||||||
|
|
||||||
MenuItem vibrationObjectMenuItem = menu.findItem(R.id.action_active_vibration_object);
|
Menu _menu = navigationView.getMenu();
|
||||||
vibrationObjectMenuItem.setChecked(serviceTrackingDog.isVibrationNearObjectEnabled());
|
_menu.findItem(R.id.action_qr_code_generator).setEnabled(false);
|
||||||
|
_menu.findItem(R.id.action_qr_code_reader).setEnabled(false);
|
||||||
|
_menu.findItem(R.id.action_active_vibration_object).setIcon(getResources().getDrawable(
|
||||||
|
serviceTrackingDog.isVibrationNearObjectEnabled() ? R.drawable.ic_check_box_checked : R.drawable.ic_check_box_unchecked)
|
||||||
|
);
|
||||||
|
_menu.findItem(R.id.action_active_vibration_object).setChecked(serviceTrackingDog.isVibrationNearObjectEnabled());
|
||||||
|
navigationView.getMenu().findItem(R.id.action_active_xmpp_real_time_mode).setIcon(getResources().getDrawable(R.drawable.ic_check_box_unchecked));
|
||||||
|
navigationView.getMenu().findItem(R.id.action_active_xmpp_real_time_mode).setEnabled(false);
|
||||||
|
navigationView.getMenu().findItem(R.id.action_clear_dog).setEnabled(false);
|
||||||
|
updateSendTraceMenu();
|
||||||
|
return super.onCreateOptionsMenu(menu);
|
||||||
|
}
|
||||||
|
|
||||||
MenuItem xmppObjectMenuItem = menu.findItem(R.id.action_active_xmpp);
|
private void updateSendTraceMenu() {
|
||||||
xmppObjectMenuItem.setChecked(serviceTrackingDog.isXmppEnabled());
|
boolean isTrailFileExist = serviceTrackingDog.getLastExportedTrailFile() != null;
|
||||||
return true;
|
boolean isXmppActive = serviceTrackingDog.isXmppEnabled();
|
||||||
|
navigationView.getMenu().findItem(R.id.action_send_gpx_trail).setEnabled(isTrailFileExist);
|
||||||
|
navigationView.getMenu().findItem(R.id.action_send_gpx_trail_by_xmpp).setEnabled(isXmppActive && isTrailFileExist);
|
||||||
|
navigationView.getMenu().findItem(R.id.action_clear_trail).setEnabled(isTrailFileExist);
|
||||||
|
navigationView.getMenu().findItem(R.id.action_clear_dog).setEnabled(lastDogPolyline != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onOptionsItemSelected(MenuItem item) {
|
public boolean onOptionsItemSelected(MenuItem item) {
|
||||||
// Handle action bar item clicks here. The action bar will
|
if (item.getItemId() == android.R.id.home) {
|
||||||
// automatically handle clicks on the Home/Up button, so long
|
mDrawerLayout.openDrawer(GravityCompat.START);
|
||||||
// as you specify a parent activity in AndroidManifest.xml.
|
return true;
|
||||||
|
}
|
||||||
|
return super.onOptionsItemSelected(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
|
||||||
int id = item.getItemId();
|
int id = item.getItemId();
|
||||||
|
|
||||||
//noinspection SimplifiableIfStatement
|
|
||||||
if (id == R.id.action_import_gpx) {
|
if (id == R.id.action_import_gpx) {
|
||||||
Intent intent = new Intent(this, FilePicker.class);
|
startActivityPickFile();
|
||||||
intent.putExtra(FilePicker.EXTRA_FILE_PATH, Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + appName);
|
mDrawerLayout.closeDrawers();
|
||||||
startActivityForResult(intent, ACTIVITY_REQUEST_PICK_FILE);
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
} else if (id == R.id.action_qr_code_generator) {
|
|
||||||
Intent intent = new Intent(this, QRCodeGeneratorActivity.class);
|
|
||||||
startActivityForResult(intent, ACTIVITY_QR_CODE_GENERATOR);
|
|
||||||
|
|
||||||
} else if (id == R.id.action_qr_code_reader) {
|
|
||||||
Intent intent = new Intent(this, QRCodeReaderActivity.class);
|
|
||||||
startActivityForResult(intent, ACTIVITY_QR_CODE_READER);
|
|
||||||
|
|
||||||
} else if (id == R.id.action_send_gpx_trail) {
|
} else if (id == R.id.action_send_gpx_trail) {
|
||||||
File trailFile = serviceTrackingDog.getLastExportedTrailFile();
|
startActivitySendGpxFile();
|
||||||
if (trailFile != null) {
|
mDrawerLayout.closeDrawers();
|
||||||
Intent shareIntent = new Intent();
|
|
||||||
shareIntent.setAction(Intent.ACTION_SEND);
|
|
||||||
shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(trailFile));
|
|
||||||
shareIntent.setType("*/*");
|
|
||||||
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
|
||||||
startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.action_send_to)));
|
|
||||||
} else {
|
|
||||||
Toast.makeText(ctx, "Aucune trace enregistré.", Toast.LENGTH_LONG).show();
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
|
} else if (id == R.id.action_clear_trail) {
|
||||||
} else if (id == R.id.action_send_gpx_trail_by_xmpp) {
|
clearTrail();
|
||||||
File trailFile = serviceTrackingDog.getLastExportedTrailFile();
|
mDrawerLayout.closeDrawers();
|
||||||
if (trailFile != null) {
|
return true;
|
||||||
try {
|
} else if (id == R.id.action_clear_dog) {
|
||||||
serviceTrackingDog.sendXmppFile(trailFile);
|
clearDog();
|
||||||
} catch (XmppStringprepException | SmackException e) {
|
mDrawerLayout.closeDrawers();
|
||||||
Toast.makeText(ctx, "Echec de l'envoye de la trace.", Toast.LENGTH_LONG).show();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
Toast.makeText(ctx, "Aucune trace enregistré.", Toast.LENGTH_LONG).show();
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
} else if (id == R.id.action_active_vibration_object) {
|
} else if (id == R.id.action_active_vibration_object) {
|
||||||
boolean checked = item.isChecked();
|
activeVibrationObject(item);
|
||||||
item.setChecked(!checked);
|
|
||||||
serviceTrackingDog.setVibrationNearObjectEnabled(!checked);
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
} else if (id == R.id.action_active_xmpp) {
|
} else if (id == R.id.action_active_xmpp) {
|
||||||
boolean checked = item.isChecked();
|
activeXmpp(item);
|
||||||
boolean newStat = !checked;
|
return true;
|
||||||
item.setChecked(newStat);
|
} else if (id == R.id.action_active_xmpp_real_time_mode) {
|
||||||
if (newStat) {
|
activeXmppRealTimeMode(item);
|
||||||
try {
|
return true;
|
||||||
serviceTrackingDog.enableXmpp();
|
} else if (id == R.id.action_qr_code_generator) {
|
||||||
Toast.makeText(ctx, "Connexion XMPP réussie", Toast.LENGTH_SHORT).show();
|
startActivityQrCodeGenerator();
|
||||||
} catch (InterruptedException | IOException | SmackException | XMPPException e) {
|
mDrawerLayout.closeDrawers();
|
||||||
e.printStackTrace();
|
return true;
|
||||||
Toast.makeText(ctx, "Echec de connexion XMPP", Toast.LENGTH_LONG).show();
|
} else if (id == R.id.action_qr_code_reader) {
|
||||||
item.setChecked(false);
|
startActivityQrCodeReader();
|
||||||
serviceTrackingDog.disableXmpp();
|
mDrawerLayout.closeDrawers();
|
||||||
}
|
return true;
|
||||||
} else {
|
} else if (id == R.id.action_send_gpx_trail_by_xmpp) {
|
||||||
serviceTrackingDog.disableXmpp();
|
sendGpxFileByXmpp();
|
||||||
}
|
mDrawerLayout.closeDrawers();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void startActivityPickFile() {
|
||||||
|
Intent intent = new Intent(this, FilePicker.class);
|
||||||
|
intent.putExtra(FilePicker.EXTRA_FILE_PATH, Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + appName);
|
||||||
|
startActivityForResult(intent, ACTIVITY_REQUEST_PICK_FILE);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void startActivitySendGpxFile() {
|
||||||
|
File trailFile = serviceTrackingDog.getLastExportedTrailFile();
|
||||||
|
if (trailFile != null) {
|
||||||
|
Intent shareIntent = new Intent();
|
||||||
|
shareIntent.setAction(Intent.ACTION_SEND);
|
||||||
|
shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(trailFile));
|
||||||
|
shareIntent.setType("*/*");
|
||||||
|
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||||
|
startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.action_send_to)));
|
||||||
|
} else {
|
||||||
|
Toast.makeText(ctx, "Aucune trace enregistré.", Toast.LENGTH_LONG).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void clearTrail() {
|
||||||
|
serviceTrackingDog.clearTrail();
|
||||||
|
updateSendTraceMenu();
|
||||||
|
if (lastTrailPolyline != null) {
|
||||||
|
map.getOverlayManager().remove(lastTrailPolyline);
|
||||||
|
lastTrailPolyline = null;
|
||||||
|
}
|
||||||
|
map.getOverlayManager().removeAll(listTrailObject);
|
||||||
|
listTrailObject.clear();
|
||||||
|
this.textViewCurrentLocation.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void clearDog() {
|
||||||
|
serviceTrackingDog.clearDog();
|
||||||
|
navigationView.getMenu().findItem(R.id.action_clear_dog).setEnabled(false);
|
||||||
|
if (lastDogPolyline != null) {
|
||||||
|
map.getOverlayManager().remove(lastDogPolyline);
|
||||||
|
lastDogPolyline = null;
|
||||||
|
}
|
||||||
|
map.getOverlayManager().removeAll(listDogObject);
|
||||||
|
listDogObject.clear();
|
||||||
|
this.textViewCurrentLocation.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void activeVibrationObject(MenuItem item) {
|
||||||
|
boolean checked = item.isChecked();
|
||||||
|
item.setChecked(!checked);
|
||||||
|
serviceTrackingDog.setVibrationNearObjectEnabled(!checked);
|
||||||
|
navigationView.getMenu().findItem(R.id.action_active_vibration_object).setIcon(getResources().getDrawable(
|
||||||
|
serviceTrackingDog.isVibrationNearObjectEnabled() ? R.drawable.ic_check_box_checked : R.drawable.ic_check_box_unchecked));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void activeXmpp(MenuItem item) {
|
||||||
|
boolean checked = item.isChecked();
|
||||||
|
boolean newStat = !checked;
|
||||||
|
|
||||||
|
if (newStat) {
|
||||||
|
try {
|
||||||
|
serviceTrackingDog.enableXmpp();
|
||||||
|
Toast.makeText(ctx, "Connexion XMPP réussie", Toast.LENGTH_SHORT).show();
|
||||||
|
} catch (InterruptedException | IOException | SmackException | XMPPException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
Toast.makeText(ctx, "Echec de connexion XMPP", Toast.LENGTH_LONG).show();
|
||||||
|
newStat = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!newStat) {
|
||||||
|
serviceTrackingDog.disableXmpp();
|
||||||
|
}
|
||||||
|
|
||||||
|
navigationView.getMenu().findItem(R.id.action_qr_code_generator).setEnabled(newStat);
|
||||||
|
navigationView.getMenu().findItem(R.id.action_qr_code_reader).setEnabled(newStat);
|
||||||
|
navigationView.getMenu().findItem(R.id.action_send_gpx_trail_by_xmpp).setEnabled(newStat && serviceTrackingDog.getLastExportedTrailFile() != null);
|
||||||
|
navigationView.getMenu().findItem(R.id.action_active_xmpp_real_time_mode).setEnabled(newStat);
|
||||||
|
item.setChecked(newStat);
|
||||||
|
item.setIcon(getResources().getDrawable(newStat ? R.drawable.ic_check_box_checked : R.drawable.ic_check_box_unchecked));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void activeXmppRealTimeMode(MenuItem item) {
|
||||||
|
boolean checked = item.isChecked();
|
||||||
|
boolean newStat = !checked;
|
||||||
|
item.setChecked(newStat);
|
||||||
|
navigationView.getMenu().findItem(R.id.action_active_xmpp_real_time_mode).setIcon(
|
||||||
|
getResources().getDrawable(newStat ? R.drawable.ic_check_box_checked : R.drawable.ic_check_box_unchecked)
|
||||||
|
);
|
||||||
|
serviceTrackingDog.setXmppRealTimeMode(newStat);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void startActivityQrCodeGenerator() {
|
||||||
|
Intent intent = new Intent(this, QRCodeGeneratorActivity.class);
|
||||||
|
startActivityForResult(intent, ACTIVITY_QR_CODE_GENERATOR);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void startActivityQrCodeReader() {
|
||||||
|
Intent intent = new Intent(this, QRCodeReaderActivity.class);
|
||||||
|
startActivityForResult(intent, ACTIVITY_QR_CODE_READER);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendGpxFileByXmpp() {
|
||||||
|
File trailFile = serviceTrackingDog.getLastExportedTrailFile();
|
||||||
|
if (trailFile != null) {
|
||||||
|
try {
|
||||||
|
serviceTrackingDog.sendXmppFile(trailFile);
|
||||||
|
} catch (XmppStringprepException | SmackException e) {
|
||||||
|
Toast.makeText(ctx, "Echec de l'envoye de la trace.", Toast.LENGTH_LONG).show();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Toast.makeText(ctx, "Aucune trace enregistré.", Toast.LENGTH_LONG).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -408,6 +524,7 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu
|
||||||
serviceTrackingDog.importGpxTrace(new File(data.getStringExtra(FilePicker.EXTRA_FILE_PATH)));
|
serviceTrackingDog.importGpxTrace(new File(data.getStringExtra(FilePicker.EXTRA_FILE_PATH)));
|
||||||
updateDogTrace();
|
updateDogTrace();
|
||||||
updateTrailTrace();
|
updateTrailTrace();
|
||||||
|
updateSendTraceMenu();
|
||||||
|
|
||||||
// Update distance
|
// Update distance
|
||||||
distance = serviceTrackingDog.calculTrailDistance();
|
distance = serviceTrackingDog.calculTrailDistance();
|
||||||
|
|
@ -504,6 +621,11 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu
|
||||||
|
|
||||||
|
|
||||||
//<editor-fold defaultstate="collapsed" desc="Map management">
|
//<editor-fold defaultstate="collapsed" desc="Map management">
|
||||||
|
private Polyline lastDogPolyline = null;
|
||||||
|
private Polyline lastTrailPolyline = null;
|
||||||
|
private final List<Marker> listTrailObject = new ArrayList<>();
|
||||||
|
private final List<Marker> listDogObject = new ArrayList<>();
|
||||||
|
|
||||||
private void changeStatusTrace() {
|
private void changeStatusTrace() {
|
||||||
serviceTrackingDog.toggleTraceurActivation();
|
serviceTrackingDog.toggleTraceurActivation();
|
||||||
if (serviceTrackingDog.isTraceurActivated()) {
|
if (serviceTrackingDog.isTraceurActivated()) {
|
||||||
|
|
@ -517,6 +639,7 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu
|
||||||
this.add_object.setVisibility(View.GONE);
|
this.add_object.setVisibility(View.GONE);
|
||||||
this.start_stop_dog_trace.setVisibility(View.VISIBLE);
|
this.start_stop_dog_trace.setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
|
updateSendTraceMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void changeStatusDogTrace() {
|
private void changeStatusDogTrace() {
|
||||||
|
|
@ -532,6 +655,7 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu
|
||||||
this.start_stop_dog_trace.setText(R.string.dog_start);
|
this.start_stop_dog_trace.setText(R.string.dog_start);
|
||||||
this.add_object.setVisibility(View.GONE);
|
this.add_object.setVisibility(View.GONE);
|
||||||
this.start_stop_trace.setVisibility(View.VISIBLE);
|
this.start_stop_trace.setVisibility(View.VISIBLE);
|
||||||
|
navigationView.getMenu().findItem(R.id.action_clear_dog).setEnabled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -558,6 +682,11 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
map.getOverlays().add(marker);
|
map.getOverlays().add(marker);
|
||||||
|
if (isFound) {
|
||||||
|
listDogObject.add(marker);
|
||||||
|
} else {
|
||||||
|
listTrailObject.add(marker);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void markAsFound() {
|
private void markAsFound() {
|
||||||
|
|
@ -596,15 +725,18 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
Polyline line = new Polyline(map);
|
if (lastDogPolyline != null) {
|
||||||
line.setTitle("Chien");
|
map.getOverlayManager().remove(lastDogPolyline);
|
||||||
line.setSubDescription("Départ: "+listLoc.getFirstLocation().getDatePrint());
|
}
|
||||||
line.setColor(Color.BLUE);
|
lastDogPolyline = new Polyline(map);
|
||||||
line.setPoints(convertListLocation(listLoc));
|
lastDogPolyline.setTitle("Chien");
|
||||||
line.setWidth(LINE_WIDTH_BIG);
|
lastDogPolyline.setSubDescription("Départ: "+listLoc.getFirstLocation().getDatePrint());
|
||||||
line.setGeodesic(true);
|
lastDogPolyline.setColor(Color.BLUE);
|
||||||
line.setInfoWindow(new BasicInfoWindow(R.layout.bonuspack_bubble, map));
|
lastDogPolyline.setPoints(convertListLocation(listLoc));
|
||||||
map.getOverlayManager().add(line);
|
lastDogPolyline.setWidth(LINE_WIDTH_BIG);
|
||||||
|
lastDogPolyline.setGeodesic(true);
|
||||||
|
lastDogPolyline.setInfoWindow(new BasicInfoWindow(R.layout.bonuspack_bubble, map));
|
||||||
|
map.getOverlayManager().add(lastDogPolyline);
|
||||||
map.invalidate();
|
map.invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -614,15 +746,18 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
Polyline line = new Polyline(map);
|
if (lastTrailPolyline != null) {
|
||||||
line.setTitle("Traceur");
|
map.getOverlayManager().remove(lastTrailPolyline);
|
||||||
line.setSubDescription("Départ: "+listLoc.getFirstLocation().getDatePrint());
|
}
|
||||||
line.setColor(Color.RED);
|
lastTrailPolyline = new Polyline(map);
|
||||||
line.setPoints(convertListLocation(listLoc));
|
lastTrailPolyline.setTitle("Traceur");
|
||||||
line.setWidth(LINE_WIDTH_BIG);
|
lastTrailPolyline.setSubDescription("Départ: "+listLoc.getFirstLocation().getDatePrint());
|
||||||
line.setGeodesic(true);
|
lastTrailPolyline.setColor(Color.RED);
|
||||||
line.setInfoWindow(new BasicInfoWindow(R.layout.bonuspack_bubble, map));
|
lastTrailPolyline.setPoints(convertListLocation(listLoc));
|
||||||
map.getOverlayManager().add(line);
|
lastTrailPolyline.setWidth(LINE_WIDTH_BIG);
|
||||||
|
lastTrailPolyline.setGeodesic(true);
|
||||||
|
lastTrailPolyline.setInfoWindow(new BasicInfoWindow(R.layout.bonuspack_bubble, map));
|
||||||
|
map.getOverlayManager().add(lastTrailPolyline);
|
||||||
map.invalidate();
|
map.invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -703,6 +838,16 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu
|
||||||
Toast.makeText(ctx, "Echec dans la reception du fichier", Toast.LENGTH_LONG).show();
|
Toast.makeText(ctx, "Echec dans la reception du fichier", Toast.LENGTH_LONG).show();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
} else if (notification.isAction(ServiceXmpp.NOTIF_NEW_REAL_TIME_MODE)) {
|
||||||
|
runOnUiThread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
navigationView.getMenu().findItem(R.id.action_active_xmpp_real_time_mode).setIcon(
|
||||||
|
getResources().getDrawable(serviceTrackingDog.isXmppRealTimeMode() ? R.drawable.ic_check_box_checked : R.drawable.ic_check_box_unchecked)
|
||||||
|
);
|
||||||
|
navigationView.getMenu().findItem(R.id.action_active_xmpp_real_time_mode).setChecked(serviceTrackingDog.isXmppRealTimeMode());
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -721,11 +866,9 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu
|
||||||
updateTrailTrace();
|
updateTrailTrace();
|
||||||
distance = serviceTrackingDog.calculTrailDistance();
|
distance = serviceTrackingDog.calculTrailDistance();
|
||||||
updatePlaceholder();
|
updatePlaceholder();
|
||||||
lastLocation = onNewLocation;
|
|
||||||
} else if (serviceTrackingDog.isDogActivated()) {
|
} else if (serviceTrackingDog.isDogActivated()) {
|
||||||
updateDogTrace();
|
updateDogTrace();
|
||||||
updatePlaceholder();
|
updatePlaceholder();
|
||||||
lastLocation = onNewLocation;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
float orientation = serviceTrackingDog.getOrientation(deviceOrientation);
|
float orientation = serviceTrackingDog.getOrientation(deviceOrientation);
|
||||||
|
|
|
||||||
|
|
@ -92,4 +92,17 @@ public class Traces {
|
||||||
public boolean isDogActivated() {
|
public boolean isDogActivated() {
|
||||||
return this.dogActivated;
|
return this.dogActivated;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void clearListPointTraceur() {
|
||||||
|
listPointTraceur.clear();
|
||||||
|
}
|
||||||
|
public void clearListPointDog() {
|
||||||
|
listPointDog.clear();
|
||||||
|
}
|
||||||
|
public void clearListObjectsTrail() {
|
||||||
|
listPointObjectsTrail.clear();
|
||||||
|
}
|
||||||
|
public void clearListObjectDog() {
|
||||||
|
listPointObjectsDog.clear();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,86 @@
|
||||||
|
package fr.chteufleur.mytrackingdog.models.xmpp.commands;
|
||||||
|
|
||||||
|
import org.jivesoftware.smack.SmackException;
|
||||||
|
import org.jivesoftware.smack.XMPPException;
|
||||||
|
import org.jivesoftware.smackx.commands.AdHocCommandNote;
|
||||||
|
import org.jivesoftware.smackx.commands.LocalCommand;
|
||||||
|
import org.jivesoftware.smackx.xdata.Form;
|
||||||
|
import org.jivesoftware.smackx.xdata.FormField;
|
||||||
|
import org.jivesoftware.smackx.xdata.packet.DataForm;
|
||||||
|
import org.jxmpp.jid.Jid;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import fr.chteufleur.mytrackingdog.services.ServiceXmpp;
|
||||||
|
|
||||||
|
public class RealTimeModeCommand extends LocalCommand {
|
||||||
|
|
||||||
|
public static final String TAG = ObjectGeolocCommand.class.getName();
|
||||||
|
|
||||||
|
public static final String FIELD_PARAM_IS_ACTIVE = "is_active";
|
||||||
|
|
||||||
|
private final ServiceXmpp serviceXmpp;
|
||||||
|
|
||||||
|
public RealTimeModeCommand(ServiceXmpp serviceXmpp) {
|
||||||
|
this.serviceXmpp = serviceXmpp;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isLastStage() {
|
||||||
|
return getCurrentStage() == 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasPermission(Jid jid) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute() throws SmackException.NoResponseException, XMPPException.XMPPErrorException, SmackException.NotConnectedException, InterruptedException {Form result = new Form(DataForm.Type.form);
|
||||||
|
setExecuteAction(Action.next);
|
||||||
|
|
||||||
|
FormField resultFieldIsActive = new FormField(FIELD_PARAM_IS_ACTIVE);
|
||||||
|
resultFieldIsActive.setLabel(FIELD_PARAM_IS_ACTIVE);
|
||||||
|
resultFieldIsActive.setType(FormField.Type.bool);
|
||||||
|
result.addField(resultFieldIsActive);
|
||||||
|
|
||||||
|
this.addActionAvailable(Action.next);
|
||||||
|
setForm(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void next(Form response) throws SmackException.NoResponseException, XMPPException.XMPPErrorException, SmackException.NotConnectedException, InterruptedException {
|
||||||
|
FormField formIsValide = response.getField(FIELD_PARAM_IS_ACTIVE);
|
||||||
|
|
||||||
|
if (formIsValide != null) {
|
||||||
|
List<String> isValueStrs = formIsValide.getValues();
|
||||||
|
boolean isValue = false;
|
||||||
|
|
||||||
|
for (String isValueStr : isValueStrs) {
|
||||||
|
isValue = isValueStr.equalsIgnoreCase("1") || isValueStr.equalsIgnoreCase("true") || isValueStr.equalsIgnoreCase("yes");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (serviceXmpp != null) {
|
||||||
|
serviceXmpp.addIsRealTimeMode(isValue);
|
||||||
|
}
|
||||||
|
this.addNote(new AdHocCommandNote(AdHocCommandNote.Type.info, "SUCCESS"));
|
||||||
|
} else {
|
||||||
|
this.addNote((new AdHocCommandNote(AdHocCommandNote.Type.error, "FAIL")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void complete(Form response) throws SmackException.NoResponseException, XMPPException.XMPPErrorException, SmackException.NotConnectedException, InterruptedException {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void prev() throws SmackException.NoResponseException, XMPPException.XMPPErrorException, SmackException.NotConnectedException, InterruptedException {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void cancel() throws SmackException.NoResponseException, XMPPException.XMPPErrorException, SmackException.NotConnectedException, InterruptedException {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -230,6 +230,15 @@ public class ServiceTrackingDog implements Observer {
|
||||||
}
|
}
|
||||||
return distance;
|
return distance;
|
||||||
}
|
}
|
||||||
|
public void clearTrail() {
|
||||||
|
traces.clearListObjectsTrail();
|
||||||
|
traces.clearListPointTraceur();
|
||||||
|
lastExportedTrailFile = null;
|
||||||
|
}
|
||||||
|
public void clearDog() {
|
||||||
|
traces.clearListObjectDog();
|
||||||
|
traces.clearListPointDog();
|
||||||
|
}
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
|
|
||||||
|
|
@ -368,6 +377,23 @@ public class ServiceTrackingDog implements Observer {
|
||||||
serviceXmpp.sendFile(file);
|
serviceXmpp.sendFile(file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public void setXmppRealTimeMode(boolean b) {
|
||||||
|
if (serviceXmpp != null) {
|
||||||
|
serviceXmpp.setRealTimeMode(b);
|
||||||
|
try {
|
||||||
|
serviceXmpp.sendCommandeRealTimeMode();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public boolean isXmppRealTimeMode() {
|
||||||
|
boolean ret = false;
|
||||||
|
if (serviceXmpp != null) {
|
||||||
|
ret = serviceXmpp.isRealTimeMode();
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
//<editor-fold defaultstate="collapsed" desc="Commands">
|
//<editor-fold defaultstate="collapsed" desc="Commands">
|
||||||
public void sendXmppCommandStartTrail() throws XmppStringprepException, XMPPException.XMPPErrorException, SmackException.NotConnectedException, InterruptedException, SmackException.NoResponseException {
|
public void sendXmppCommandStartTrail() throws XmppStringprepException, XMPPException.XMPPErrorException, SmackException.NotConnectedException, InterruptedException, SmackException.NoResponseException {
|
||||||
if (serviceXmpp != null) {
|
if (serviceXmpp != null) {
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,7 @@ import fr.chteufleur.mytrackingdog.QRCodeGeneratorActivity;
|
||||||
import fr.chteufleur.mytrackingdog.models.Notification;
|
import fr.chteufleur.mytrackingdog.models.Notification;
|
||||||
import fr.chteufleur.mytrackingdog.models.beans.MyLocation;
|
import fr.chteufleur.mytrackingdog.models.beans.MyLocation;
|
||||||
import fr.chteufleur.mytrackingdog.models.xmpp.commands.ObjectGeolocCommand;
|
import fr.chteufleur.mytrackingdog.models.xmpp.commands.ObjectGeolocCommand;
|
||||||
|
import fr.chteufleur.mytrackingdog.models.xmpp.commands.RealTimeModeCommand;
|
||||||
import fr.chteufleur.mytrackingdog.models.xmpp.commands.StartTrailGeolocCommand;
|
import fr.chteufleur.mytrackingdog.models.xmpp.commands.StartTrailGeolocCommand;
|
||||||
import fr.chteufleur.mytrackingdog.models.xmpp.commands.StopTrailGeolocCommand;
|
import fr.chteufleur.mytrackingdog.models.xmpp.commands.StopTrailGeolocCommand;
|
||||||
import fr.chteufleur.mytrackingdog.models.xmpp.commands.TrailGeolocCommand;
|
import fr.chteufleur.mytrackingdog.models.xmpp.commands.TrailGeolocCommand;
|
||||||
|
|
@ -59,15 +60,18 @@ public class ServiceXmpp extends Observable implements PresenceEventListener, Fi
|
||||||
public static final String NOTIF_RECEIVING_FILE = ServiceXmpp.class.getName()+".receivingfile";
|
public static final String NOTIF_RECEIVING_FILE = ServiceXmpp.class.getName()+".receivingfile";
|
||||||
public static final String NOTIF_RECEIVING_FILE_COMPLETTED = NOTIF_RECEIVING_FILE+".completed";
|
public static final String NOTIF_RECEIVING_FILE_COMPLETTED = NOTIF_RECEIVING_FILE+".completed";
|
||||||
public static final String NOTIF_RECEIVING_FILE_FAIL = NOTIF_RECEIVING_FILE+".receivingfile";
|
public static final String NOTIF_RECEIVING_FILE_FAIL = NOTIF_RECEIVING_FILE+".receivingfile";
|
||||||
|
public static final String NOTIF_NEW_REAL_TIME_MODE = ServiceXmpp.class.getName()+"realtimemode";
|
||||||
|
|
||||||
public static final String NOTIF_NEW_OBJECT_VALUE_LOCATION = NOTIF_NEW_OBJECT+".value.location";
|
public static final String NOTIF_NEW_OBJECT_VALUE_LOCATION = NOTIF_NEW_OBJECT+".value.location";
|
||||||
public static final String NOTIF_NEW_LOCATION_VALUE_LOCATION = NOTIF_NEW_LOCATION+".value.location";
|
public static final String NOTIF_NEW_LOCATION_VALUE_LOCATION = NOTIF_NEW_LOCATION+".value.location";
|
||||||
public static final String NOTIF_NEW_PRESENCE_RECEIVED_VALUE_JID = NOTIF_NEW_PRESENCE_RECEIVED+".value.jid";
|
public static final String NOTIF_NEW_PRESENCE_RECEIVED_VALUE_JID = NOTIF_NEW_PRESENCE_RECEIVED+".value.jid";
|
||||||
|
public static final String NOTIF_NEW_REAL_TIME_MODE_VALUE = NOTIF_NEW_REAL_TIME_MODE+".value";
|
||||||
|
|
||||||
private static final String XMPP_NODE_TRAIL_GEOLOC = "trail_geoloc";
|
private static final String XMPP_NODE_TRAIL_GEOLOC = "trail_geoloc";
|
||||||
private static final String XMPP_NODE_OBJECT_GEOLOC = "object_geoloc";
|
private static final String XMPP_NODE_OBJECT_GEOLOC = "object_geoloc";
|
||||||
private static final String XMPP_NODE_START_TRAIL_GEOLOC = "start_trail_geoloc";
|
private static final String XMPP_NODE_START_TRAIL_GEOLOC = "start_trail_geoloc";
|
||||||
private static final String XMPP_NODE_STOP_TRAIL_GEOLOC = "stop_trail_geoloc";
|
private static final String XMPP_NODE_STOP_TRAIL_GEOLOC = "stop_trail_geoloc";
|
||||||
|
private static final String XMPP_NODE_REAL_TIME_MODE = "real_time_mode";
|
||||||
|
|
||||||
private static final String XMPP_IP_SERVER = "51.254.205.203";
|
private static final String XMPP_IP_SERVER = "51.254.205.203";
|
||||||
private static final String XMPP_DOMAIN_SERVER = "anon.xmpp.kingpenguin.tk";
|
private static final String XMPP_DOMAIN_SERVER = "anon.xmpp.kingpenguin.tk";
|
||||||
|
|
@ -85,6 +89,7 @@ public class ServiceXmpp extends Observable implements PresenceEventListener, Fi
|
||||||
private final ServiceXmpp thsi;
|
private final ServiceXmpp thsi;
|
||||||
|
|
||||||
private boolean isEnable = false;
|
private boolean isEnable = false;
|
||||||
|
private boolean isRealTimeMode = false;
|
||||||
|
|
||||||
public ServiceXmpp(Resources resources) throws UnknownHostException, XmppStringprepException {
|
public ServiceXmpp(Resources resources) throws UnknownHostException, XmppStringprepException {
|
||||||
this.resources = resources;
|
this.resources = resources;
|
||||||
|
|
@ -170,6 +175,14 @@ public class ServiceXmpp extends Observable implements PresenceEventListener, Fi
|
||||||
return isEnable;
|
return isEnable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setRealTimeMode(boolean b) {
|
||||||
|
this.isRealTimeMode = b;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isRealTimeMode() {
|
||||||
|
return this.isRealTimeMode;
|
||||||
|
}
|
||||||
|
|
||||||
//<editor-fold defaultstate="collapsed" desc="Presence">
|
//<editor-fold defaultstate="collapsed" desc="Presence">
|
||||||
public void sendPresenceAvailable() throws SmackException.NotConnectedException, InterruptedException, XmppStringprepException {
|
public void sendPresenceAvailable() throws SmackException.NotConnectedException, InterruptedException, XmppStringprepException {
|
||||||
if (otherJid != null) {
|
if (otherJid != null) {
|
||||||
|
|
@ -270,6 +283,12 @@ public class ServiceXmpp extends Observable implements PresenceEventListener, Fi
|
||||||
return new StopTrailGeolocCommand(thsi);
|
return new StopTrailGeolocCommand(thsi);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
commandManager.registerCommand(XMPP_NODE_REAL_TIME_MODE, XMPP_NODE_REAL_TIME_MODE, new LocalCommandFactory() {
|
||||||
|
@Override
|
||||||
|
public LocalCommand getInstance() {
|
||||||
|
return new RealTimeModeCommand(thsi);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void startTrailGeoloc() {
|
public void startTrailGeoloc() {
|
||||||
|
|
@ -298,8 +317,15 @@ public class ServiceXmpp extends Observable implements PresenceEventListener, Fi
|
||||||
notifyObservers(new Notification(NOTIF_NEW_OBJECT).addExtra(NOTIF_NEW_OBJECT_VALUE_LOCATION, objectLocation));
|
notifyObservers(new Notification(NOTIF_NEW_OBJECT).addExtra(NOTIF_NEW_OBJECT_VALUE_LOCATION, objectLocation));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addIsRealTimeMode(boolean isRealTimeMode) {
|
||||||
|
Log.i(TAG, "Add real time mode");
|
||||||
|
this.isRealTimeMode = isRealTimeMode;
|
||||||
|
setChanged();
|
||||||
|
notifyObservers(new Notification(NOTIF_NEW_REAL_TIME_MODE).addExtra(NOTIF_NEW_REAL_TIME_MODE_VALUE, isRealTimeMode));
|
||||||
|
}
|
||||||
|
|
||||||
public void sendCommandStartTrail() throws XmppStringprepException, XMPPException.XMPPErrorException, SmackException.NotConnectedException, InterruptedException, SmackException.NoResponseException {
|
public void sendCommandStartTrail() throws XmppStringprepException, XMPPException.XMPPErrorException, SmackException.NotConnectedException, InterruptedException, SmackException.NoResponseException {
|
||||||
if (isOtherJidSet()) {
|
if (isOtherJidSet() && isRealTimeMode) {
|
||||||
Log.i(TAG, "Send command start");
|
Log.i(TAG, "Send command start");
|
||||||
RemoteCommand command = commandManager.getRemoteCommand(JidCreate.fullFrom(otherJid), XMPP_NODE_START_TRAIL_GEOLOC);
|
RemoteCommand command = commandManager.getRemoteCommand(JidCreate.fullFrom(otherJid), XMPP_NODE_START_TRAIL_GEOLOC);
|
||||||
command.execute();
|
command.execute();
|
||||||
|
|
@ -307,7 +333,7 @@ public class ServiceXmpp extends Observable implements PresenceEventListener, Fi
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendCommandStopTrail() throws XmppStringprepException, XMPPException.XMPPErrorException, SmackException.NotConnectedException, InterruptedException, SmackException.NoResponseException {
|
public void sendCommandStopTrail() throws XmppStringprepException, XMPPException.XMPPErrorException, SmackException.NotConnectedException, InterruptedException, SmackException.NoResponseException {
|
||||||
if (isOtherJidSet()) {
|
if (isOtherJidSet() && isRealTimeMode) {
|
||||||
Log.i(TAG, "Send command stop");
|
Log.i(TAG, "Send command stop");
|
||||||
RemoteCommand command = commandManager.getRemoteCommand(JidCreate.fullFrom(otherJid), XMPP_NODE_STOP_TRAIL_GEOLOC);
|
RemoteCommand command = commandManager.getRemoteCommand(JidCreate.fullFrom(otherJid), XMPP_NODE_STOP_TRAIL_GEOLOC);
|
||||||
command.execute();
|
command.execute();
|
||||||
|
|
@ -315,7 +341,7 @@ public class ServiceXmpp extends Observable implements PresenceEventListener, Fi
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendCommandObjectTrail(double lat, double lon, long time) throws Exception {
|
public void sendCommandObjectTrail(double lat, double lon, long time) throws Exception {
|
||||||
if (isOtherJidSet()) {
|
if (isOtherJidSet() && isRealTimeMode) {
|
||||||
Log.i(TAG, "Send command object");
|
Log.i(TAG, "Send command object");
|
||||||
RemoteCommand command = commandManager.getRemoteCommand(JidCreate.fullFrom(otherJid), XMPP_NODE_OBJECT_GEOLOC);
|
RemoteCommand command = commandManager.getRemoteCommand(JidCreate.fullFrom(otherJid), XMPP_NODE_OBJECT_GEOLOC);
|
||||||
command.execute();
|
command.execute();
|
||||||
|
|
@ -331,7 +357,7 @@ public class ServiceXmpp extends Observable implements PresenceEventListener, Fi
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendCommandLocationTrail(double lat, double lon, long time) throws Exception {
|
public void sendCommandLocationTrail(double lat, double lon, long time) throws Exception {
|
||||||
if (isOtherJidSet()) {
|
if (isOtherJidSet() && isRealTimeMode) {
|
||||||
Log.i(TAG, "Send command location");
|
Log.i(TAG, "Send command location");
|
||||||
RemoteCommand command = commandManager.getRemoteCommand(JidCreate.fullFrom(otherJid), XMPP_NODE_TRAIL_GEOLOC);
|
RemoteCommand command = commandManager.getRemoteCommand(JidCreate.fullFrom(otherJid), XMPP_NODE_TRAIL_GEOLOC);
|
||||||
command.execute();
|
command.execute();
|
||||||
|
|
@ -345,6 +371,20 @@ public class ServiceXmpp extends Observable implements PresenceEventListener, Fi
|
||||||
command.next(form);
|
command.next(form);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void sendCommandeRealTimeMode() throws Exception {
|
||||||
|
if (isOtherJidSet()) {
|
||||||
|
Log.i(TAG, "Send commande real time mode");
|
||||||
|
RemoteCommand command = commandManager.getRemoteCommand(JidCreate.fullFrom(otherJid), XMPP_NODE_REAL_TIME_MODE);
|
||||||
|
command.execute();
|
||||||
|
if (command.getForm() == null) {
|
||||||
|
throw new Exception("Didn't get form back");
|
||||||
|
}
|
||||||
|
Form form = command.getForm().createAnswerForm();
|
||||||
|
form.setAnswer(RealTimeModeCommand.FIELD_PARAM_IS_ACTIVE, isRealTimeMode);
|
||||||
|
command.next(form);
|
||||||
|
}
|
||||||
|
}
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24.0"
|
||||||
|
android:viewportHeight="24.0">
|
||||||
|
<path
|
||||||
|
android:fillColor="#FF000000"
|
||||||
|
android:pathData="M19,3L5,3c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.11,0 2,-0.9 2,-2L21,5c0,-1.1 -0.89,-2 -2,-2zM10,17l-5,-5 1.41,-1.41L10,14.17l7.59,-7.59L19,8l-9,9z"/>
|
||||||
|
</vector>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24.0"
|
||||||
|
android:viewportHeight="24.0">
|
||||||
|
<path
|
||||||
|
android:fillColor="#FF000000"
|
||||||
|
android:pathData="M19,5v14H5V5h14m0,-2H5c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V5c0,-1.1 -0.9,-2 -2,-2z"/>
|
||||||
|
</vector>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24.0"
|
||||||
|
android:viewportHeight="24.0">
|
||||||
|
<path
|
||||||
|
android:fillColor="#FF000000"
|
||||||
|
android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2V7H6v12zM19,4h-3.5l-1,-1h-5l-1,1H5v2h14V4z"/>
|
||||||
|
</vector>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24.0"
|
||||||
|
android:viewportHeight="24.0">
|
||||||
|
<path
|
||||||
|
android:fillColor="#FF000000"
|
||||||
|
android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2V7H6v12zM19,4h-3.5l-1,-1h-5l-1,1H5v2h14V4z"/>
|
||||||
|
</vector>
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 4.0 KiB |
|
|
@ -0,0 +1,9 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24.0"
|
||||||
|
android:viewportHeight="24.0">
|
||||||
|
<path
|
||||||
|
android:fillColor="#FFFFFFFF"
|
||||||
|
android:pathData="M3,18h18v-2L3,16v2zM3,13h18v-2L3,11v2zM3,6v2h18L21,6L3,6z"/>
|
||||||
|
</vector>
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 1.7 KiB |
|
|
@ -0,0 +1,9 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24.0"
|
||||||
|
android:viewportHeight="24.0">
|
||||||
|
<path
|
||||||
|
android:fillColor="#FF000000"
|
||||||
|
android:pathData="M18,16.08c-0.76,0 -1.44,0.3 -1.96,0.77L8.91,12.7c0.05,-0.23 0.09,-0.46 0.09,-0.7s-0.04,-0.47 -0.09,-0.7l7.05,-4.11c0.54,0.5 1.25,0.81 2.04,0.81 1.66,0 3,-1.34 3,-3s-1.34,-3 -3,-3 -3,1.34 -3,3c0,0.24 0.04,0.47 0.09,0.7L8.04,9.81C7.5,9.31 6.79,9 6,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3c0.79,0 1.5,-0.31 2.04,-0.81l7.12,4.16c-0.05,0.21 -0.08,0.43 -0.08,0.65 0,1.61 1.31,2.92 2.92,2.92 1.61,0 2.92,-1.31 2.92,-2.92s-1.31,-2.92 -2.92,-2.92z"/>
|
||||||
|
</vector>
|
||||||
|
|
@ -1,33 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
tools:context=".MainActivity">
|
|
||||||
|
|
||||||
<android.support.design.widget.AppBarLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:theme="@style/AppTheme.AppBarOverlay">
|
|
||||||
|
|
||||||
<android.support.v7.widget.Toolbar
|
|
||||||
android:id="@+id/toolbar"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="?attr/actionBarSize"
|
|
||||||
android:background="?attr/colorPrimary"
|
|
||||||
app:popupTheme="@style/AppTheme.PopupOverlay" />
|
|
||||||
|
|
||||||
</android.support.design.widget.AppBarLayout>
|
|
||||||
|
|
||||||
<include layout="@layout/content_main" />
|
|
||||||
|
|
||||||
<android.support.design.widget.FloatingActionButton
|
|
||||||
android:id="@+id/fab"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_gravity="bottom|end"
|
|
||||||
android:layout_margin="@dimen/fab_margin"
|
|
||||||
app:srcCompat="@android:drawable/ic_dialog_email" />
|
|
||||||
|
|
||||||
</android.support.design.widget.CoordinatorLayout>
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
app:layout_behavior="@string/appbar_scrolling_view_behavior"
|
|
||||||
tools:context=".MainActivity"
|
|
||||||
tools:showIn="@layout/activity_main">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="Hello World!"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintLeft_toLeftOf="parent"
|
|
||||||
app:layout_constraintRight_toRightOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
|
||||||
|
|
||||||
</android.support.constraint.ConstraintLayout>
|
|
||||||
|
|
@ -1,85 +1,101 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
android:id="@+id/drawer_layout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context=".MainActivity">
|
android:fitsSystemWindows="true">
|
||||||
|
|
||||||
<android.support.design.widget.AppBarLayout
|
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
android:theme="@style/AppTheme.AppBarOverlay">
|
tools:context=".MainActivity">
|
||||||
|
|
||||||
<android.support.v7.widget.Toolbar
|
<android.support.design.widget.AppBarLayout
|
||||||
android:id="@+id/toolbar"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="?attr/actionBarSize"
|
android:layout_height="wrap_content"
|
||||||
android:background="?attr/colorPrimary"
|
android:theme="@style/AppTheme.AppBarOverlay">
|
||||||
app:popupTheme="@style/AppTheme.PopupOverlay" />
|
|
||||||
|
|
||||||
<TextView android:id="@+id/textViewCurrentLocation"
|
<android.support.v7.widget.Toolbar
|
||||||
android:layout_width="fill_parent"
|
android:id="@+id/toolbar"
|
||||||
android:text="PLACEHOLDER"
|
android:layout_width="match_parent"
|
||||||
android:textAlignment="center"
|
android:layout_height="?attr/actionBarSize"
|
||||||
android:gravity="center"
|
android:background="?attr/colorPrimary"
|
||||||
android:textColor="@android:color/white"
|
app:popupTheme="@style/ThemeOverlay.AppCompat.ActionBar" />
|
||||||
android:background="#77000000"
|
|
||||||
android:layout_height="wrap_content" />
|
|
||||||
</android.support.design.widget.AppBarLayout>
|
|
||||||
|
|
||||||
<org.osmdroid.views.MapView android:id="@+id/map"
|
<TextView android:id="@+id/textViewCurrentLocation"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="fill_parent" >
|
android:text="PLACEHOLDER"
|
||||||
|
android:textAlignment="center"
|
||||||
|
android:gravity="center"
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
android:background="#77000000"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
</android.support.design.widget.AppBarLayout>
|
||||||
|
|
||||||
</org.osmdroid.views.MapView>
|
<org.osmdroid.views.MapView android:id="@+id/map"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent" >
|
||||||
|
|
||||||
|
</org.osmdroid.views.MapView>
|
||||||
<Button
|
|
||||||
android:id="@+id/center_button"
|
|
||||||
android:layout_width="48dp"
|
|
||||||
android:layout_height="48dp"
|
|
||||||
android:layout_gravity="top|end"
|
|
||||||
android:layout_marginTop="90dp"
|
|
||||||
android:layout_marginEnd="16dp"
|
|
||||||
android:background="@drawable/osm_ic_center_map" />
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_gravity="bottom"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/start_stop_trace"
|
android:id="@+id/center_button"
|
||||||
android:layout_height="wrap_content"
|
android:layout_width="48dp"
|
||||||
android:layout_width="wrap_content"
|
android:layout_height="48dp"
|
||||||
android:layout_gravity="bottom|start"
|
android:layout_gravity="top|end"
|
||||||
android:layout_weight="1"
|
android:layout_marginTop="90dp"
|
||||||
android:background="@drawable/red_button"
|
android:layout_marginEnd="16dp"
|
||||||
android:textColor="#ffffff"
|
android:background="@drawable/osm_ic_center_map" />
|
||||||
android:text="@string/trail_start" />
|
|
||||||
|
|
||||||
<Button
|
<LinearLayout
|
||||||
android:id="@+id/start_stop_dog_trace"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_width="wrap_content"
|
android:layout_gravity="bottom"
|
||||||
android:layout_gravity="bottom|end"
|
android:orientation="horizontal">
|
||||||
android:layout_weight="1"
|
|
||||||
android:background="@drawable/blue_button"
|
|
||||||
android:textColor="#ffffff"
|
|
||||||
android:text="@string/dog_start" />
|
|
||||||
|
|
||||||
<Button
|
|
||||||
android:id="@+id/add_object"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_gravity="bottom|end"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:background="@drawable/green_button"
|
|
||||||
android:text="@string/trail_object"
|
|
||||||
android:textColor="#ffffff" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</android.support.design.widget.CoordinatorLayout>
|
<Button
|
||||||
|
android:id="@+id/start_stop_trace"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_gravity="bottom|start"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:background="@drawable/red_button"
|
||||||
|
android:textColor="#ffffff"
|
||||||
|
android:text="@string/trail_start" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/start_stop_dog_trace"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_gravity="bottom|end"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:background="@drawable/blue_button"
|
||||||
|
android:textColor="#ffffff"
|
||||||
|
android:text="@string/dog_start" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/add_object"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="bottom|end"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:background="@drawable/green_button"
|
||||||
|
android:text="@string/trail_object"
|
||||||
|
android:textColor="#ffffff" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</android.support.design.widget.CoordinatorLayout>
|
||||||
|
|
||||||
|
<android.support.design.widget.NavigationView
|
||||||
|
android:id="@+id/nav_view"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_gravity="start"
|
||||||
|
android:fitsSystemWindows="true"
|
||||||
|
app:menu="@menu/drawer_view"/>
|
||||||
|
</android.support.v4.widget.DrawerLayout>
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_import_gpx"
|
||||||
|
android:title="@string/action_import_gpx"
|
||||||
|
android:icon="@drawable/ic_import" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_send_gpx_trail"
|
||||||
|
android:title="@string/action_send_gpx_trail"
|
||||||
|
android:icon="@drawable/ic_share" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_clear_trail"
|
||||||
|
android:title="@string/action_clear_trail"
|
||||||
|
android:icon="@drawable/ic_clear_trail" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_clear_dog"
|
||||||
|
android:title="@string/action_clear_dog"
|
||||||
|
android:icon="@drawable/ic_clear_dog" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_active_vibration_object"
|
||||||
|
android:title="@string/action_active_vibration_object"
|
||||||
|
android:icon="@drawable/ic_check_box_unchecked" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:title="@string/menu_title_xmpp" >
|
||||||
|
<menu>
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_active_xmpp"
|
||||||
|
android:title="@string/action_active_xmpp"
|
||||||
|
android:icon="@drawable/ic_check_box_unchecked" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_active_xmpp_real_time_mode"
|
||||||
|
android:title="@string/action_active_xmpp_real_time_mode"
|
||||||
|
android:icon="@drawable/ic_check_box_unchecked" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_qr_code_generator"
|
||||||
|
android:title="@string/action_qr_code_generator" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_qr_code_reader"
|
||||||
|
android:title="@string/action_qr_code_reader" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_send_gpx_trail_by_xmpp"
|
||||||
|
android:title="@string/action_send_gpx_trail_by_xmpp"
|
||||||
|
android:icon="@drawable/ic_share" />
|
||||||
|
</menu>
|
||||||
|
</item>
|
||||||
|
</menu>
|
||||||
|
|
@ -1,42 +0,0 @@
|
||||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
tools:context="fr.chteufleur.mytrackingdog.MainActivity">
|
|
||||||
<item
|
|
||||||
android:id="@+id/action_import_gpx"
|
|
||||||
android:orderInCategory="100"
|
|
||||||
android:title="@string/action_import_gpx"
|
|
||||||
app:showAsAction="never" />
|
|
||||||
<item
|
|
||||||
android:id="@+id/action_send_gpx_trail"
|
|
||||||
android:orderInCategory="100"
|
|
||||||
android:title="@string/action_send_gpx_trail"
|
|
||||||
app:showAsAction="never" />
|
|
||||||
<item
|
|
||||||
android:id="@+id/action_send_gpx_trail_by_xmpp"
|
|
||||||
android:orderInCategory="100"
|
|
||||||
android:title="@string/action_send_gpx_trail_by_xmpp"
|
|
||||||
app:showAsAction="never" />
|
|
||||||
<item
|
|
||||||
android:id="@+id/action_active_vibration_object"
|
|
||||||
android:checkable="true"
|
|
||||||
android:orderInCategory="100"
|
|
||||||
android:title="@string/action_active_vibration_object"
|
|
||||||
app:showAsAction="never" />
|
|
||||||
<item
|
|
||||||
android:id="@+id/action_qr_code_generator"
|
|
||||||
android:orderInCategory="100"
|
|
||||||
android:title="@string/action_qr_code_generator"
|
|
||||||
app:showAsAction="never" />
|
|
||||||
<item
|
|
||||||
android:id="@+id/action_qr_code_reader"
|
|
||||||
android:orderInCategory="100"
|
|
||||||
android:title="@string/action_qr_code_reader"
|
|
||||||
app:showAsAction="never" />
|
|
||||||
<item
|
|
||||||
android:id="@+id/action_active_xmpp"
|
|
||||||
android:checkable="true"
|
|
||||||
android:orderInCategory="100"
|
|
||||||
android:title="@string/action_active_xmpp"
|
|
||||||
app:showAsAction="never" />
|
|
||||||
</menu>
|
|
||||||
|
|
@ -9,10 +9,14 @@
|
||||||
|
|
||||||
<string name="action_import_gpx">Import GPX</string>
|
<string name="action_import_gpx">Import GPX</string>
|
||||||
<string name="action_send_gpx_trail">Envoyer trace du traceur</string>
|
<string name="action_send_gpx_trail">Envoyer trace du traceur</string>
|
||||||
<string name="action_send_gpx_trail_by_xmpp">Envoyer trace du traceur par XMPP</string>
|
|
||||||
<string name="action_send_to">Envoyer par</string>
|
<string name="action_send_to">Envoyer par</string>
|
||||||
|
<string name="action_clear_trail">Supprimer données traceur</string>
|
||||||
|
<string name="action_clear_dog">Supprimer données chien</string>
|
||||||
<string name="action_active_vibration_object">Active vibration objets</string>
|
<string name="action_active_vibration_object">Active vibration objets</string>
|
||||||
<string name="action_qr_code_generator">Affiche identifiant</string>
|
<string name="action_qr_code_generator">Affiche identifiant</string>
|
||||||
<string name="action_qr_code_reader">Lecture identifiant</string>
|
<string name="action_qr_code_reader">Lecture identifiant</string>
|
||||||
|
<string name="menu_title_xmpp">XMPP</string>
|
||||||
<string name="action_active_xmpp">Active XMPP</string>
|
<string name="action_active_xmpp">Active XMPP</string>
|
||||||
|
<string name="action_active_xmpp_real_time_mode">Active mode temps réel</string>
|
||||||
|
<string name="action_send_gpx_trail_by_xmpp">Envoyer trace du traceur</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue