diff --git a/.idea/Mear.iml b/.idea/Mear.iml
new file mode 100644
index 0000000..0fbbc63
--- /dev/null
+++ b/.idea/Mear.iml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
new file mode 100644
index 0000000..bc11baf
Binary files /dev/null and b/.idea/caches/build_file_checksums.ser differ
diff --git a/.idea/libraries/Gradle__android_arch_core_common_1_1_1_jar.xml b/.idea/libraries/Gradle__android_arch_core_common_1_1_1_jar.xml
new file mode 100644
index 0000000..bf16fff
--- /dev/null
+++ b/.idea/libraries/Gradle__android_arch_core_common_1_1_1_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__android_arch_core_runtime_1_1_1_aar.xml b/.idea/libraries/Gradle__android_arch_core_runtime_1_1_1_aar.xml
new file mode 100644
index 0000000..d92274f
--- /dev/null
+++ b/.idea/libraries/Gradle__android_arch_core_runtime_1_1_1_aar.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__android_arch_lifecycle_common_1_1_1_jar.xml b/.idea/libraries/Gradle__android_arch_lifecycle_common_1_1_1_jar.xml
new file mode 100644
index 0000000..27b1867
--- /dev/null
+++ b/.idea/libraries/Gradle__android_arch_lifecycle_common_1_1_1_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__android_arch_lifecycle_livedata_1_1_1_aar.xml b/.idea/libraries/Gradle__android_arch_lifecycle_livedata_1_1_1_aar.xml
new file mode 100644
index 0000000..c528813
--- /dev/null
+++ b/.idea/libraries/Gradle__android_arch_lifecycle_livedata_1_1_1_aar.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__android_arch_lifecycle_livedata_core_1_1_1_aar.xml b/.idea/libraries/Gradle__android_arch_lifecycle_livedata_core_1_1_1_aar.xml
new file mode 100644
index 0000000..4082ed2
--- /dev/null
+++ b/.idea/libraries/Gradle__android_arch_lifecycle_livedata_core_1_1_1_aar.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_1_aar.xml b/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_1_aar.xml
new file mode 100644
index 0000000..453715b
--- /dev/null
+++ b/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_1_aar.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__android_arch_lifecycle_viewmodel_1_1_1_aar.xml b/.idea/libraries/Gradle__android_arch_lifecycle_viewmodel_1_1_1_aar.xml
new file mode 100644
index 0000000..dad554f
--- /dev/null
+++ b/.idea/libraries/Gradle__android_arch_lifecycle_viewmodel_1_1_1_aar.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_28_0_0_aar.xml
new file mode 100644
index 0000000..9e71b04
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_28_0_0_aar.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_appcompat_v7_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_appcompat_v7_28_0_0_aar.xml
new file mode 100644
index 0000000..8efa084
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_appcompat_v7_28_0_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_asynclayoutinflater_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_asynclayoutinflater_28_0_0_aar.xml
new file mode 100644
index 0000000..b3015a4
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_asynclayoutinflater_28_0_0_aar.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_cardview_v7_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_cardview_v7_28_0_0_aar.xml
new file mode 100644
index 0000000..c46336d
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_cardview_v7_28_0_0_aar.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_collections_28_0_0_jar.xml b/.idea/libraries/Gradle__com_android_support_collections_28_0_0_jar.xml
new file mode 100644
index 0000000..80e4d73
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_collections_28_0_0_jar.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_constraint_constraint_layout_1_1_3_aar.xml b/.idea/libraries/Gradle__com_android_support_constraint_constraint_layout_1_1_3_aar.xml
new file mode 100644
index 0000000..c160235
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_constraint_constraint_layout_1_1_3_aar.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_constraint_constraint_layout_solver_1_1_3_jar.xml b/.idea/libraries/Gradle__com_android_support_constraint_constraint_layout_solver_1_1_3_jar.xml
new file mode 100644
index 0000000..c0adf88
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_constraint_constraint_layout_solver_1_1_3_jar.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_coordinatorlayout_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_coordinatorlayout_28_0_0_aar.xml
new file mode 100644
index 0000000..bd40006
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_coordinatorlayout_28_0_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_cursoradapter_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_cursoradapter_28_0_0_aar.xml
new file mode 100644
index 0000000..8edf861
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_cursoradapter_28_0_0_aar.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_customview_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_customview_28_0_0_aar.xml
new file mode 100644
index 0000000..9dfc909
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_customview_28_0_0_aar.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_design_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_design_28_0_0_aar.xml
new file mode 100644
index 0000000..4d1908a
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_design_28_0_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_documentfile_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_documentfile_28_0_0_aar.xml
new file mode 100644
index 0000000..09543d2
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_documentfile_28_0_0_aar.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_drawerlayout_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_drawerlayout_28_0_0_aar.xml
new file mode 100644
index 0000000..b782241
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_drawerlayout_28_0_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_interpolator_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_interpolator_28_0_0_aar.xml
new file mode 100644
index 0000000..848a925
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_interpolator_28_0_0_aar.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_loader_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_loader_28_0_0_aar.xml
new file mode 100644
index 0000000..bb3f5c3
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_loader_28_0_0_aar.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_localbroadcastmanager_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_localbroadcastmanager_28_0_0_aar.xml
new file mode 100644
index 0000000..2bc1827
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_localbroadcastmanager_28_0_0_aar.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_print_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_print_28_0_0_aar.xml
new file mode 100644
index 0000000..2082668
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_print_28_0_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_recyclerview_v7_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_recyclerview_v7_28_0_0_aar.xml
new file mode 100644
index 0000000..7a51489
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_recyclerview_v7_28_0_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_slidingpanelayout_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_slidingpanelayout_28_0_0_aar.xml
new file mode 100644
index 0000000..8928625
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_slidingpanelayout_28_0_0_aar.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_support_annotations_28_0_0_jar.xml b/.idea/libraries/Gradle__com_android_support_support_annotations_28_0_0_jar.xml
new file mode 100644
index 0000000..0fdecce
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_support_annotations_28_0_0_jar.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_support_compat_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_support_compat_28_0_0_aar.xml
new file mode 100644
index 0000000..dfedd1c
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_support_compat_28_0_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_support_core_ui_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_support_core_ui_28_0_0_aar.xml
new file mode 100644
index 0000000..76c5a05
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_support_core_ui_28_0_0_aar.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_support_core_utils_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_support_core_utils_28_0_0_aar.xml
new file mode 100644
index 0000000..7c241d4
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_support_core_utils_28_0_0_aar.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_support_fragment_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_support_fragment_28_0_0_aar.xml
new file mode 100644
index 0000000..16ee1ea
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_support_fragment_28_0_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_support_media_compat_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_support_media_compat_28_0_0_aar.xml
new file mode 100644
index 0000000..b5b1be3
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_support_media_compat_28_0_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_support_v4_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_support_v4_28_0_0_aar.xml
new file mode 100644
index 0000000..039afab
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_support_v4_28_0_0_aar.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_support_vector_drawable_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_support_vector_drawable_28_0_0_aar.xml
new file mode 100644
index 0000000..19b4d73
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_support_vector_drawable_28_0_0_aar.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_swiperefreshlayout_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_swiperefreshlayout_28_0_0_aar.xml
new file mode 100644
index 0000000..da977cf
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_swiperefreshlayout_28_0_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_core_3_0_2_aar.xml b/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_core_3_0_2_aar.xml
new file mode 100644
index 0000000..bdd8505
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_core_3_0_2_aar.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_idling_resource_3_0_2_aar.xml b/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_idling_resource_3_0_2_aar.xml
new file mode 100644
index 0000000..1fc1ea9
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_test_espresso_espresso_idling_resource_3_0_2_aar.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_test_monitor_1_0_2_aar.xml b/.idea/libraries/Gradle__com_android_support_test_monitor_1_0_2_aar.xml
new file mode 100644
index 0000000..8f77f9b
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_test_monitor_1_0_2_aar.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_test_runner_1_0_2_aar.xml b/.idea/libraries/Gradle__com_android_support_test_runner_1_0_2_aar.xml
new file mode 100644
index 0000000..45f6a29
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_test_runner_1_0_2_aar.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_transition_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_transition_28_0_0_aar.xml
new file mode 100644
index 0000000..3155ba6
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_transition_28_0_0_aar.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_versionedparcelable_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_versionedparcelable_28_0_0_aar.xml
new file mode 100644
index 0000000..5d39e82
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_versionedparcelable_28_0_0_aar.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_android_support_viewpager_28_0_0_aar.xml b/.idea/libraries/Gradle__com_android_support_viewpager_28_0_0_aar.xml
new file mode 100644
index 0000000..f7e85f4
--- /dev/null
+++ b/.idea/libraries/Gradle__com_android_support_viewpager_28_0_0_aar.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_ealva_ealvalog_0_3_0_jar.xml b/.idea/libraries/Gradle__com_ealva_ealvalog_0_3_0_jar.xml
new file mode 100644
index 0000000..19f7429
--- /dev/null
+++ b/.idea/libraries/Gradle__com_ealva_ealvalog_0_3_0_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_ealva_ealvalog_android_0_3_0_aar.xml b/.idea/libraries/Gradle__com_ealva_ealvalog_android_0_3_0_aar.xml
new file mode 100644
index 0000000..db15e3c
--- /dev/null
+++ b/.idea/libraries/Gradle__com_ealva_ealvalog_android_0_3_0_aar.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_ealva_ealvalog_core_0_3_0_jar.xml b/.idea/libraries/Gradle__com_ealva_ealvalog_core_0_3_0_jar.xml
new file mode 100644
index 0000000..5de757f
--- /dev/null
+++ b/.idea/libraries/Gradle__com_ealva_ealvalog_core_0_3_0_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_ealva_ealvatag_0_4_2_jar.xml b/.idea/libraries/Gradle__com_ealva_ealvatag_0_4_2_jar.xml
new file mode 100644
index 0000000..29c0e5c
--- /dev/null
+++ b/.idea/libraries/Gradle__com_ealva_ealvatag_0_4_2_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_2_0_1_jar.xml b/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_2_0_1_jar.xml
new file mode 100644
index 0000000..947e251
--- /dev/null
+++ b/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_2_0_1_jar.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_google_guava_guava_20_0_jar.xml b/.idea/libraries/Gradle__com_google_guava_guava_20_0_jar.xml
new file mode 100644
index 0000000..bbfeb85
--- /dev/null
+++ b/.idea/libraries/Gradle__com_google_guava_guava_20_0_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_squareup_javawriter_2_1_1_jar.xml b/.idea/libraries/Gradle__com_squareup_javawriter_2_1_1_jar.xml
new file mode 100644
index 0000000..5c4dd4e
--- /dev/null
+++ b/.idea/libraries/Gradle__com_squareup_javawriter_2_1_1_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__com_squareup_okio_okio_1_11_0_jar.xml b/.idea/libraries/Gradle__com_squareup_okio_okio_1_11_0_jar.xml
new file mode 100644
index 0000000..4af9d3f
--- /dev/null
+++ b/.idea/libraries/Gradle__com_squareup_okio_okio_1_11_0_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__javax_inject_javax_inject_1_jar.xml b/.idea/libraries/Gradle__javax_inject_javax_inject_1_jar.xml
new file mode 100644
index 0000000..f9c9a30
--- /dev/null
+++ b/.idea/libraries/Gradle__javax_inject_javax_inject_1_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__junit_junit_4_12_jar.xml b/.idea/libraries/Gradle__junit_junit_4_12_jar.xml
new file mode 100644
index 0000000..f4f25a8
--- /dev/null
+++ b/.idea/libraries/Gradle__junit_junit_4_12_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__net_sf_kxml_kxml2_2_3_0_jar.xml b/.idea/libraries/Gradle__net_sf_kxml_kxml2_2_3_0_jar.xml
new file mode 100644
index 0000000..5855a29
--- /dev/null
+++ b/.idea/libraries/Gradle__net_sf_kxml_kxml2_2_3_0_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3_jar.xml b/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3_jar.xml
new file mode 100644
index 0000000..50cf2b9
--- /dev/null
+++ b/.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3_jar.xml b/.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3_jar.xml
new file mode 100644
index 0000000..a5eaca5
--- /dev/null
+++ b/.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3_jar.xml b/.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3_jar.xml
new file mode 100644
index 0000000..b4dabdc
--- /dev/null
+++ b/.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__org_jetbrains_anko_anko_common_0_9_jar.xml b/.idea/libraries/Gradle__org_jetbrains_anko_anko_common_0_9_jar.xml
new file mode 100644
index 0000000..c54834d
--- /dev/null
+++ b/.idea/libraries/Gradle__org_jetbrains_anko_anko_common_0_9_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__org_jetbrains_annotations_16_0_2_jar.xml b/.idea/libraries/Gradle__org_jetbrains_annotations_16_0_2_jar.xml
new file mode 100644
index 0000000..39c2558
--- /dev/null
+++ b/.idea/libraries/Gradle__org_jetbrains_annotations_16_0_2_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_3_20_jar.xml b/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_3_20_jar.xml
new file mode 100644
index 0000000..e7c3f2f
--- /dev/null
+++ b/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_3_20_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_3_20_jar.xml b/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_3_20_jar.xml
new file mode 100644
index 0000000..70d36cc
--- /dev/null
+++ b/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_3_20_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_3_20_jar.xml b/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_3_20_jar.xml
new file mode 100644
index 0000000..fbc6260
--- /dev/null
+++ b/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_3_20_jar.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 7bfef59..37a7509 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,6 +1,6 @@
-
+
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..9dd58e4
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/app.iml b/app/app.iml
new file mode 100644
index 0000000..53276ad
--- /dev/null
+++ b/app/app.iml
@@ -0,0 +1,223 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ generateDebugSources
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index fc521fe..be78ed8 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -29,6 +29,13 @@ dependencies {
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
+ implementation 'org.jetbrains.anko:anko-common:0.9'
+ implementation 'com.ealva:ealvatag:0.4.2'
+ implementation 'com.ealva:ealvalog:0.3.0'
+ implementation 'com.ealva:ealvalog-core:0.3.0'
+ implementation 'com.ealva:ealvalog-android:0.3.0'
+ implementation 'com.google.guava:guava:20.0'
+ implementation 'com.squareup.okio:okio:1.11.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
diff --git a/app/src/main/java/com/example/mear/MainActivity.kt b/app/src/main/java/com/example/mear/MainActivity.kt
index 18c1fc8..d7c3e96 100644
--- a/app/src/main/java/com/example/mear/MainActivity.kt
+++ b/app/src/main/java/com/example/mear/MainActivity.kt
@@ -1,20 +1,24 @@
package com.example.mear
+import android.graphics.Bitmap
+import android.graphics.BitmapFactory
import android.media.MediaPlayer
import android.os.Bundle
import android.os.Environment
import android.support.design.widget.Snackbar
import android.support.v7.app.AppCompatActivity;
+import java.lang.Exception
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.content_main.*
-import java.io.File
-import java.lang.Exception
-import java.nio.file.Files
import kotlin.io.*
+import kotlin.random.Random
+
+import org.jetbrains.anko.*
import com.example.mear.management.MusicFiles
-import kotlin.random.Random
+import com.example.mear.management.TrackManager
+import com.example.mear.models.Track
class MainActivity : AppCompatActivity() {
@@ -23,54 +27,42 @@ class MainActivity : AppCompatActivity() {
setContentView(R.layout.activity_main)
setSupportActionBar(toolbar)
- loadSongs()
+ loadTracks(loadSongPaths())
initializeMediaPlayer()
PlayTrack.setOnClickListener {
playSongTrack()
}
- }
-
-
- fun configureSongs() {
-
- }
- fun configureDemoSong() {
- val sdC = "sdcard0/"
- var musicPath = "music/"
- var artistPath = "Flueric/"
- var albumPath = "New Death of a Phoenix/"
- var songPath = "Qualm.mp3"
- val pa = demoPath!!.absoluteFile.toString() + "/" + musicPath + artistPath + albumPath +
- songPath
- try {
- var fl = File(pa)
- if (fl.exists()) {
- TrackPayer!!.setDataSource(pa)
- }
+ NextTrack.setOnClickListener {
+ playNextSongTrack()
}
- catch (ex: Exception) {
- var exMsg = ex.message
+ PreviousTrack.setOnClickListener {
+ playPreviousSongTrack()
+ }
+ TrackPayer!!.setOnCompletionListener {
+ playNextSongTrack()
}
}
- fun initializeMediaPlayer() {
+ private fun initializeMediaPlayer() {
if (TrackPayer == null) {
TrackPayer = MediaPlayer()
playerInitialized = true
- TrackPayer!!.setDataSource(allSongs!![currentSong!!])
+ TrackPayer!!.setDataSource(allTracks!![currentSong!!].songPath)
TrackPayer!!.prepare()
}
}
- fun playSongTrack() {
+ private fun playSongTrack() {
try {
if (!TrackPayer!!.isPlaying) {
TrackPayer!!.start()
- var musicData = TrackPayer!!.trackInfo
+ configureTrackDisplay()
+
+
println("ss")
} else {
TrackPayer!!.pause()
@@ -80,19 +72,120 @@ class MainActivity : AppCompatActivity() {
val exMsg = ex.message
}
}
+ private fun playNextSongTrack() {
+ try {
+ currentSong = fetchSongIndex(PlayTypes.PlayNextSong)
+ if (TrackPayer!!.isPlaying) {
+ TrackPayer!!.stop()
+ }
- private fun loadSongs() {
- val mfPaths = MusicFiles(this.demoPath!!)
+ TrackPayer!!.reset()
+ TrackPayer!!.setDataSource(allTracks!![currentSong!!].songPath)
+ TrackPayer!!.prepare()
+ TrackPayer!!.start()
+ configureTrackDisplay()
+ }
+ catch (ex: Exception) {
+ val exMsg = ex.message
+ print(exMsg)
+ }
+ }
+ private fun playPreviousSongTrack() {
+ try {
+ currentSong = fetchSongIndex(PlayTypes.PlayPreviousSong)
+
+ if (TrackPayer!!.isPlaying) {
+ TrackPayer!!.stop()
+ }
+
+ TrackPayer!!.reset()
+ TrackPayer!!.setDataSource(allTracks!![currentSong!!].songPath)
+ TrackPayer!!.prepare()
+ TrackPayer!!.start()
+ configureTrackDisplay()
+ }
+ catch (ex: Exception) {
+ val exMsg = ex.message
+ print(exMsg)
+ }
+ }
+ private fun configureTrackDisplay() {
+ val trackTitle = allTracks!![currentSong!!].title
+ val albumTitle = allTracks!![currentSong!!].album
+ var trackCover: ByteArray? = null
+
+ if (!(allTracks!![currentSong!!].TrackCover == null)) {
+ trackCover = allTracks!![currentSong!!].TrackCover
+ }
+
+ TrackTitle.text.clear()
+ AlbumTitle.text.clear()
+ TrackCover.setImageBitmap(null)
+
+ TrackTitle.setText(trackTitle)
+ AlbumTitle.setText(albumTitle)
+ if (trackCover != null) {
+ var songImage = BitmapFactory
+ .decodeByteArray(trackCover, 0, trackCover!!.size)
+ TrackCover.setImageBitmap(songImage)
+ }
+ }
+
+ private fun fetchSongIndex(playType: PlayTypes): Int {
+ var songIndex: Int? = null
+
+ try {
+ when (playType) {
+ PlayTypes.PlayPreviousSong -> {
+ if (currentSong!! == 0) {
+ songIndex = allTracks!!.size - 1
+ } else {
+ songIndex = currentSong!!.dec()
+ }
+ }
+ PlayTypes.PlaySong -> {
+ songIndex = Random.nextInt(0, allTracks!!.size - 1)
+ }
+ PlayTypes.PlayNextSong -> {
+ if (currentSong!! == (allTracks!!.size - 1)) {
+ songIndex = 0
+ } else {
+ songIndex = currentSong!!.inc()
+ }
+ }
+ }
+ }
+ catch (ex: Exception) {
+ val exMsg = ex.message
+ println(exMsg)
+ }
+
+ return songIndex!!
+ }
+
+ private fun loadSongPaths(): MutableList {
+ val demoPath = Environment.getExternalStorageDirectory()
+ val mfPaths = MusicFiles(demoPath)
mfPaths.loadAllMusicPaths()
- allSongs = mfPaths.allSongs
- val songIndex = Random.nextInt(0, allSongs!!.size - 1)
- currentSong = songIndex
+ val allSongs = mfPaths.allSongs
+
+ return allSongs!!
+ }
+ private fun loadTracks(allSongs: MutableList) {
+ val trackMgr = TrackManager(allSongs!!)
+ trackMgr.configureTracks()
+ allTracks = trackMgr.allTracks
+
+ currentSong = fetchSongIndex(PlayTypes.PlaySong)
}
private var TrackPayer: MediaPlayer? = null
- private var demoPath: File? = Environment .getExternalStorageDirectory()
- private var allSongs: MutableList? = null
+ private var allTracks: MutableList