diff --git a/.idea/libraries/android_joda_2_9_0.xml b/.idea/libraries/android_joda_2_9_0.xml
new file mode 100644
index 0000000..a31a92d
--- /dev/null
+++ b/.idea/libraries/android_joda_2_9_0.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/appcompat_v7_23_1_1.xml b/.idea/libraries/appcompat_v7_23_1_1.xml
new file mode 100644
index 0000000..86abb7a
--- /dev/null
+++ b/.idea/libraries/appcompat_v7_23_1_1.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/calligraphy_2_1_0.xml b/.idea/libraries/calligraphy_2_1_0.xml
new file mode 100644
index 0000000..b66590d
--- /dev/null
+++ b/.idea/libraries/calligraphy_2_1_0.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/cloudsdk_0_3_4.xml b/.idea/libraries/cloudsdk_0_3_4.xml
new file mode 100644
index 0000000..fcf6758
--- /dev/null
+++ b/.idea/libraries/cloudsdk_0_3_4.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/commons_lang3_3_3_2.xml b/.idea/libraries/commons_lang3_3_3_2.xml
new file mode 100644
index 0000000..aa26166
--- /dev/null
+++ b/.idea/libraries/commons_lang3_3_3_2.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/design_23_1_1.xml b/.idea/libraries/design_23_1_1.xml
new file mode 100644
index 0000000..fca64f8
--- /dev/null
+++ b/.idea/libraries/design_23_1_1.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/devicesetup_0_3_4.xml b/.idea/libraries/devicesetup_0_3_4.xml
new file mode 100644
index 0000000..7fd0ef0
--- /dev/null
+++ b/.idea/libraries/devicesetup_0_3_4.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/gson_2_4.xml b/.idea/libraries/gson_2_4.xml
new file mode 100644
index 0000000..dbc0d4d
--- /dev/null
+++ b/.idea/libraries/gson_2_4.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/guava_18_0.xml b/.idea/libraries/guava_18_0.xml
new file mode 100644
index 0000000..6f98269
--- /dev/null
+++ b/.idea/libraries/guava_18_0.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/httpcore_4_0_alpha6.xml b/.idea/libraries/httpcore_4_0_alpha6.xml
new file mode 100644
index 0000000..de2ac02
--- /dev/null
+++ b/.idea/libraries/httpcore_4_0_alpha6.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/joda_time_2_9_no_tzdb.xml b/.idea/libraries/joda_time_2_9_no_tzdb.xml
new file mode 100644
index 0000000..f2a1b3e
--- /dev/null
+++ b/.idea/libraries/joda_time_2_9_no_tzdb.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/jsr305_3_0_1.xml b/.idea/libraries/jsr305_3_0_1.xml
new file mode 100644
index 0000000..6d41b6e
--- /dev/null
+++ b/.idea/libraries/jsr305_3_0_1.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/okhttp_2_5_0.xml b/.idea/libraries/okhttp_2_5_0.xml
new file mode 100644
index 0000000..7cc2954
--- /dev/null
+++ b/.idea/libraries/okhttp_2_5_0.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/okio_1_6_0.xml b/.idea/libraries/okio_1_6_0.xml
new file mode 100644
index 0000000..ec753df
--- /dev/null
+++ b/.idea/libraries/okio_1_6_0.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/phrase_1_0_3.xml b/.idea/libraries/phrase_1_0_3.xml
new file mode 100644
index 0000000..7ab5447
--- /dev/null
+++ b/.idea/libraries/phrase_1_0_3.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/recyclerview_v7_23_1_1.xml b/.idea/libraries/recyclerview_v7_23_1_1.xml
new file mode 100644
index 0000000..be86ee8
--- /dev/null
+++ b/.idea/libraries/recyclerview_v7_23_1_1.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/retrofit_1_9_0.xml b/.idea/libraries/retrofit_1_9_0.xml
new file mode 100644
index 0000000..5b7af4f
--- /dev/null
+++ b/.idea/libraries/retrofit_1_9_0.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/support_annotations_23_1_1.xml b/.idea/libraries/support_annotations_23_1_1.xml
new file mode 100644
index 0000000..85dc6db
--- /dev/null
+++ b/.idea/libraries/support_annotations_23_1_1.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/support_v4_23_1_1.xml b/.idea/libraries/support_v4_23_1_1.xml
new file mode 100644
index 0000000..03d7cab
--- /dev/null
+++ b/.idea/libraries/support_v4_23_1_1.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/android-app.iml b/android-app.iml
index b05eee2..fa28bf3 100644
--- a/android-app.iml
+++ b/android-app.iml
@@ -8,7 +8,7 @@
-
+
diff --git a/app/build.gradle b/app/build.gradle
index 4161fc5..905470f 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,28 +1,44 @@
apply plugin: 'com.android.application'
android {
- compileSdkVersion 19
- buildToolsVersion "23.0.0 rc2"
+ compileSdkVersion 23
+ buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.banc.sparkle_gateway"
minSdkVersion 18
- targetSdkVersion 18
+ targetSdkVersion 23
+ versionCode 1
+ versionName "1.0"
}
-
buildTypes {
release {
minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
+ exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
+ exclude 'META-INF/NOTICE'
+ exclude 'META-INF/LICENSE'
+ exclude 'META-INF/DEPENDENCIES'
+ exclude 'META-INF/notice.txt'
+ exclude 'META-INF/license.txt'
+ exclude 'META-INF/dependencies.txt'
+ exclude 'META-INF/LGPL2.1'
}
}
dependencies {
- compile 'com.android.support:support-v4:19.1.0'
+ compile fileTree(dir: 'libs', include: ['*.jar'])
+ testCompile 'junit:junit:4.12'
+ compile 'com.android.support:appcompat-v7:23.1.1'
+ compile 'com.android.support:design:23.1.1'
compile 'io.particle:cloudsdk:0.3.4'
-}
+ compile 'org.apache.httpcomponents:httpcore:4.0-alpha6'
+ compile 'io.particle:devicesetup:0.3.4'
+ compile 'com.android.support:recyclerview-v7:23.1.1'
+
+}
\ No newline at end of file
diff --git a/app/build/generated/source/buildConfig/androidTest/debug/com/banc/sparkle_gateway/test/BuildConfig.java b/app/build/generated/source/buildConfig/androidTest/debug/com/banc/sparkle_gateway/test/BuildConfig.java
index c61c2b3..e85692a 100644
--- a/app/build/generated/source/buildConfig/androidTest/debug/com/banc/sparkle_gateway/test/BuildConfig.java
+++ b/app/build/generated/source/buildConfig/androidTest/debug/com/banc/sparkle_gateway/test/BuildConfig.java
@@ -8,6 +8,6 @@ public final class BuildConfig {
public static final String APPLICATION_ID = "com.banc.sparkle_gateway.test";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "";
- public static final int VERSION_CODE = -1;
- public static final String VERSION_NAME = "";
+ public static final int VERSION_CODE = 1;
+ public static final String VERSION_NAME = "1.0";
}
diff --git a/app/build/generated/source/buildConfig/debug/com/banc/sparkle_gateway/BuildConfig.java b/app/build/generated/source/buildConfig/debug/com/banc/sparkle_gateway/BuildConfig.java
deleted file mode 100644
index e3b5de4..0000000
--- a/app/build/generated/source/buildConfig/debug/com/banc/sparkle_gateway/BuildConfig.java
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * Automatically generated file. DO NOT MODIFY
- */
-package com.banc.sparkle_gateway;
-
-public final class BuildConfig {
- public static final boolean DEBUG = Boolean.parseBoolean("true");
- public static final String APPLICATION_ID = "com.banc.sparkle_gateway";
- public static final String BUILD_TYPE = "debug";
- public static final String FLAVOR = "";
- public static final int VERSION_CODE = 1;
- public static final String VERSION_NAME = "";
-}
diff --git a/app/build/generated/source/r/debug/com/banc/sparkle_gateway/R.java b/app/build/generated/source/r/debug/com/banc/sparkle_gateway/R.java
deleted file mode 100644
index ec21811..0000000
--- a/app/build/generated/source/r/debug/com/banc/sparkle_gateway/R.java
+++ /dev/null
@@ -1,583 +0,0 @@
-/* AUTO-GENERATED FILE. DO NOT MODIFY.
- *
- * This class was automatically generated by the
- * aapt tool from the resource data it found. It
- * should not be modified by hand.
- */
-
-package com.banc.sparkle_gateway;
-
-public final class R {
- public static final class attr {
- }
- public static final class dimen {
- public static final int activity_horizontal_margin=0x7f070000;
- public static final int activity_vertical_margin=0x7f070001;
- }
- public static final class drawable {
- public static final int arrow_right=0x7f020000;
- public static final int bluz_icon=0x7f020001;
- public static final int gradient_bg=0x7f020002;
- public static final int gradient_bg_hover=0x7f020003;
- public static final int ic_launcher=0x7f020004;
- public static final int image_bg=0x7f020005;
- public static final int list_selector=0x7f020006;
- }
- public static final class id {
- public static final int action_settings=0x7f0a0012;
- public static final int button=0x7f0a0011;
- public static final int button2=0x7f0a000d;
- public static final int claimButton=0x7f0a0010;
- public static final int connectButton=0x7f0a000f;
- public static final int deviceCloudId=0x7f0a000e;
- public static final int deviceCloudName=0x7f0a000c;
- public static final int deviceName=0x7f0a0009;
- public static final int deviceRssi=0x7f0a000b;
- public static final int emailTextField=0x7f0a0006;
- public static final int linearLayout1=0x7f0a0000;
- public static final int listView1=0x7f0a0003;
- public static final int list_image=0x7f0a0008;
- public static final int loginButton=0x7f0a0001;
- public static final int passwordTextField=0x7f0a0007;
- public static final int scanButton=0x7f0a0002;
- public static final int textView=0x7f0a0005;
- public static final int textView1=0x7f0a0004;
- public static final int thumbnail=0x7f0a000a;
- }
- public static final class layout {
- public static final int activity_ble_list=0x7f030000;
- public static final int activity_glove_display=0x7f030001;
- public static final int activity_main=0x7f030002;
- public static final int activity_particle_login=0x7f030003;
- public static final int list_row=0x7f030004;
- }
- public static final class menu {
- public static final int main=0x7f090000;
- }
- public static final class plurals {
- public static final int joda_time_android_abbrev_in_num_days=0x7f050000;
- public static final int joda_time_android_abbrev_in_num_hours=0x7f050001;
- public static final int joda_time_android_abbrev_in_num_minutes=0x7f050002;
- public static final int joda_time_android_abbrev_in_num_seconds=0x7f050003;
- public static final int joda_time_android_abbrev_num_days_ago=0x7f050004;
- public static final int joda_time_android_abbrev_num_hours_ago=0x7f050005;
- public static final int joda_time_android_abbrev_num_minutes_ago=0x7f050006;
- public static final int joda_time_android_abbrev_num_seconds_ago=0x7f050007;
- public static final int joda_time_android_duration_hours=0x7f050008;
- public static final int joda_time_android_duration_minutes=0x7f050009;
- public static final int joda_time_android_duration_seconds=0x7f05000a;
- public static final int joda_time_android_in_num_days=0x7f05000b;
- public static final int joda_time_android_in_num_hours=0x7f05000c;
- public static final int joda_time_android_in_num_minutes=0x7f05000d;
- public static final int joda_time_android_in_num_seconds=0x7f05000e;
- public static final int joda_time_android_num_days_ago=0x7f05000f;
- public static final int joda_time_android_num_hours_ago=0x7f050010;
- public static final int joda_time_android_num_minutes_ago=0x7f050011;
- public static final int joda_time_android_num_seconds_ago=0x7f050012;
- }
- public static final class raw {
- public static final int joda_africa_abidjan=0x7f040000;
- public static final int joda_africa_accra=0x7f040001;
- public static final int joda_africa_addis_ababa=0x7f040002;
- public static final int joda_africa_algiers=0x7f040003;
- public static final int joda_africa_asmara=0x7f040004;
- public static final int joda_africa_asmera=0x7f040005;
- public static final int joda_africa_bamako=0x7f040006;
- public static final int joda_africa_bangui=0x7f040007;
- public static final int joda_africa_banjul=0x7f040008;
- public static final int joda_africa_bissau=0x7f040009;
- public static final int joda_africa_blantyre=0x7f04000a;
- public static final int joda_africa_brazzaville=0x7f04000b;
- public static final int joda_africa_bujumbura=0x7f04000c;
- public static final int joda_africa_cairo=0x7f04000d;
- public static final int joda_africa_casablanca=0x7f04000e;
- public static final int joda_africa_ceuta=0x7f04000f;
- public static final int joda_africa_conakry=0x7f040010;
- public static final int joda_africa_dakar=0x7f040011;
- public static final int joda_africa_dar_es_salaam=0x7f040012;
- public static final int joda_africa_djibouti=0x7f040013;
- public static final int joda_africa_douala=0x7f040014;
- public static final int joda_africa_el_aaiun=0x7f040015;
- public static final int joda_africa_freetown=0x7f040016;
- public static final int joda_africa_gaborone=0x7f040017;
- public static final int joda_africa_harare=0x7f040018;
- public static final int joda_africa_johannesburg=0x7f040019;
- public static final int joda_africa_juba=0x7f04001a;
- public static final int joda_africa_kampala=0x7f04001b;
- public static final int joda_africa_khartoum=0x7f04001c;
- public static final int joda_africa_kigali=0x7f04001d;
- public static final int joda_africa_kinshasa=0x7f04001e;
- public static final int joda_africa_lagos=0x7f04001f;
- public static final int joda_africa_libreville=0x7f040020;
- public static final int joda_africa_lome=0x7f040021;
- public static final int joda_africa_luanda=0x7f040022;
- public static final int joda_africa_lubumbashi=0x7f040023;
- public static final int joda_africa_lusaka=0x7f040024;
- public static final int joda_africa_malabo=0x7f040025;
- public static final int joda_africa_maputo=0x7f040026;
- public static final int joda_africa_maseru=0x7f040027;
- public static final int joda_africa_mbabane=0x7f040028;
- public static final int joda_africa_mogadishu=0x7f040029;
- public static final int joda_africa_monrovia=0x7f04002a;
- public static final int joda_africa_nairobi=0x7f04002b;
- public static final int joda_africa_ndjamena=0x7f04002c;
- public static final int joda_africa_niamey=0x7f04002d;
- public static final int joda_africa_nouakchott=0x7f04002e;
- public static final int joda_africa_ouagadougou=0x7f04002f;
- public static final int joda_africa_porto_novo=0x7f040030;
- public static final int joda_africa_sao_tome=0x7f040031;
- public static final int joda_africa_timbuktu=0x7f040032;
- public static final int joda_africa_tripoli=0x7f040033;
- public static final int joda_africa_tunis=0x7f040034;
- public static final int joda_africa_windhoek=0x7f040035;
- public static final int joda_america_adak=0x7f040036;
- public static final int joda_america_anchorage=0x7f040037;
- public static final int joda_america_anguilla=0x7f040038;
- public static final int joda_america_antigua=0x7f040039;
- public static final int joda_america_araguaina=0x7f04003a;
- public static final int joda_america_argentina_buenos_aires=0x7f04003b;
- public static final int joda_america_argentina_catamarca=0x7f04003c;
- public static final int joda_america_argentina_comodrivadavia=0x7f04003d;
- public static final int joda_america_argentina_cordoba=0x7f04003e;
- public static final int joda_america_argentina_jujuy=0x7f04003f;
- public static final int joda_america_argentina_la_rioja=0x7f040040;
- public static final int joda_america_argentina_mendoza=0x7f040041;
- public static final int joda_america_argentina_rio_gallegos=0x7f040042;
- public static final int joda_america_argentina_salta=0x7f040043;
- public static final int joda_america_argentina_san_juan=0x7f040044;
- public static final int joda_america_argentina_san_luis=0x7f040045;
- public static final int joda_america_argentina_tucuman=0x7f040046;
- public static final int joda_america_argentina_ushuaia=0x7f040047;
- public static final int joda_america_aruba=0x7f040048;
- public static final int joda_america_asuncion=0x7f040049;
- public static final int joda_america_atikokan=0x7f04004a;
- public static final int joda_america_bahia=0x7f04004b;
- public static final int joda_america_bahia_banderas=0x7f04004c;
- public static final int joda_america_barbados=0x7f04004d;
- public static final int joda_america_belem=0x7f04004e;
- public static final int joda_america_belize=0x7f04004f;
- public static final int joda_america_blanc_sablon=0x7f040050;
- public static final int joda_america_boa_vista=0x7f040051;
- public static final int joda_america_bogota=0x7f040052;
- public static final int joda_america_boise=0x7f040053;
- public static final int joda_america_cambridge_bay=0x7f040054;
- public static final int joda_america_campo_grande=0x7f040055;
- public static final int joda_america_cancun=0x7f040056;
- public static final int joda_america_caracas=0x7f040057;
- public static final int joda_america_cayenne=0x7f040058;
- public static final int joda_america_cayman=0x7f040059;
- public static final int joda_america_chicago=0x7f04005a;
- public static final int joda_america_chihuahua=0x7f04005b;
- public static final int joda_america_coral_harbour=0x7f04005c;
- public static final int joda_america_costa_rica=0x7f04005d;
- public static final int joda_america_creston=0x7f04005e;
- public static final int joda_america_cuiaba=0x7f04005f;
- public static final int joda_america_curacao=0x7f040060;
- public static final int joda_america_danmarkshavn=0x7f040061;
- public static final int joda_america_dawson=0x7f040062;
- public static final int joda_america_dawson_creek=0x7f040063;
- public static final int joda_america_denver=0x7f040064;
- public static final int joda_america_detroit=0x7f040065;
- public static final int joda_america_dominica=0x7f040066;
- public static final int joda_america_edmonton=0x7f040067;
- public static final int joda_america_eirunepe=0x7f040068;
- public static final int joda_america_el_salvador=0x7f040069;
- public static final int joda_america_ensenada=0x7f04006a;
- public static final int joda_america_fort_nelson=0x7f04006b;
- public static final int joda_america_fortaleza=0x7f04006c;
- public static final int joda_america_glace_bay=0x7f04006d;
- public static final int joda_america_godthab=0x7f04006e;
- public static final int joda_america_goose_bay=0x7f04006f;
- public static final int joda_america_grand_turk=0x7f040070;
- public static final int joda_america_grenada=0x7f040071;
- public static final int joda_america_guadeloupe=0x7f040072;
- public static final int joda_america_guatemala=0x7f040073;
- public static final int joda_america_guayaquil=0x7f040074;
- public static final int joda_america_guyana=0x7f040075;
- public static final int joda_america_halifax=0x7f040076;
- public static final int joda_america_havana=0x7f040077;
- public static final int joda_america_hermosillo=0x7f040078;
- public static final int joda_america_indiana_indianapolis=0x7f040079;
- public static final int joda_america_indiana_knox=0x7f04007a;
- public static final int joda_america_indiana_marengo=0x7f04007b;
- public static final int joda_america_indiana_petersburg=0x7f04007c;
- public static final int joda_america_indiana_tell_city=0x7f04007d;
- public static final int joda_america_indiana_vevay=0x7f04007e;
- public static final int joda_america_indiana_vincennes=0x7f04007f;
- public static final int joda_america_indiana_winamac=0x7f040080;
- public static final int joda_america_inuvik=0x7f040081;
- public static final int joda_america_iqaluit=0x7f040082;
- public static final int joda_america_jamaica=0x7f040083;
- public static final int joda_america_juneau=0x7f040084;
- public static final int joda_america_kentucky_louisville=0x7f040085;
- public static final int joda_america_kentucky_monticello=0x7f040086;
- public static final int joda_america_kralendijk=0x7f040087;
- public static final int joda_america_la_paz=0x7f040088;
- public static final int joda_america_lima=0x7f040089;
- public static final int joda_america_los_angeles=0x7f04008a;
- public static final int joda_america_lower_princes=0x7f04008b;
- public static final int joda_america_maceio=0x7f04008c;
- public static final int joda_america_managua=0x7f04008d;
- public static final int joda_america_manaus=0x7f04008e;
- public static final int joda_america_marigot=0x7f04008f;
- public static final int joda_america_martinique=0x7f040090;
- public static final int joda_america_matamoros=0x7f040091;
- public static final int joda_america_mazatlan=0x7f040092;
- public static final int joda_america_menominee=0x7f040093;
- public static final int joda_america_merida=0x7f040094;
- public static final int joda_america_metlakatla=0x7f040095;
- public static final int joda_america_mexico_city=0x7f040096;
- public static final int joda_america_miquelon=0x7f040097;
- public static final int joda_america_moncton=0x7f040098;
- public static final int joda_america_monterrey=0x7f040099;
- public static final int joda_america_montevideo=0x7f04009a;
- public static final int joda_america_montreal=0x7f04009b;
- public static final int joda_america_montserrat=0x7f04009c;
- public static final int joda_america_nassau=0x7f04009d;
- public static final int joda_america_new_york=0x7f04009e;
- public static final int joda_america_nipigon=0x7f04009f;
- public static final int joda_america_nome=0x7f0400a0;
- public static final int joda_america_noronha=0x7f0400a1;
- public static final int joda_america_north_dakota_beulah=0x7f0400a2;
- public static final int joda_america_north_dakota_center=0x7f0400a3;
- public static final int joda_america_north_dakota_new_salem=0x7f0400a4;
- public static final int joda_america_ojinaga=0x7f0400a5;
- public static final int joda_america_panama=0x7f0400a6;
- public static final int joda_america_pangnirtung=0x7f0400a7;
- public static final int joda_america_paramaribo=0x7f0400a8;
- public static final int joda_america_phoenix=0x7f0400a9;
- public static final int joda_america_port_au_prince=0x7f0400aa;
- public static final int joda_america_port_of_spain=0x7f0400ab;
- public static final int joda_america_porto_velho=0x7f0400ac;
- public static final int joda_america_puerto_rico=0x7f0400ad;
- public static final int joda_america_rainy_river=0x7f0400ae;
- public static final int joda_america_rankin_inlet=0x7f0400af;
- public static final int joda_america_recife=0x7f0400b0;
- public static final int joda_america_regina=0x7f0400b1;
- public static final int joda_america_resolute=0x7f0400b2;
- public static final int joda_america_rio_branco=0x7f0400b3;
- public static final int joda_america_rosario=0x7f0400b4;
- public static final int joda_america_santa_isabel=0x7f0400b5;
- public static final int joda_america_santarem=0x7f0400b6;
- public static final int joda_america_santiago=0x7f0400b7;
- public static final int joda_america_santo_domingo=0x7f0400b8;
- public static final int joda_america_sao_paulo=0x7f0400b9;
- public static final int joda_america_scoresbysund=0x7f0400ba;
- public static final int joda_america_sitka=0x7f0400bb;
- public static final int joda_america_st_barthelemy=0x7f0400bc;
- public static final int joda_america_st_johns=0x7f0400bd;
- public static final int joda_america_st_kitts=0x7f0400be;
- public static final int joda_america_st_lucia=0x7f0400bf;
- public static final int joda_america_st_thomas=0x7f0400c0;
- public static final int joda_america_st_vincent=0x7f0400c1;
- public static final int joda_america_swift_current=0x7f0400c2;
- public static final int joda_america_tegucigalpa=0x7f0400c3;
- public static final int joda_america_thule=0x7f0400c4;
- public static final int joda_america_thunder_bay=0x7f0400c5;
- public static final int joda_america_tijuana=0x7f0400c6;
- public static final int joda_america_toronto=0x7f0400c7;
- public static final int joda_america_tortola=0x7f0400c8;
- public static final int joda_america_vancouver=0x7f0400c9;
- public static final int joda_america_whitehorse=0x7f0400ca;
- public static final int joda_america_winnipeg=0x7f0400cb;
- public static final int joda_america_yakutat=0x7f0400cc;
- public static final int joda_america_yellowknife=0x7f0400cd;
- public static final int joda_antarctica_casey=0x7f0400ce;
- public static final int joda_antarctica_davis=0x7f0400cf;
- public static final int joda_antarctica_dumontdurville=0x7f0400d0;
- public static final int joda_antarctica_macquarie=0x7f0400d1;
- public static final int joda_antarctica_mawson=0x7f0400d2;
- public static final int joda_antarctica_mcmurdo=0x7f0400d3;
- public static final int joda_antarctica_palmer=0x7f0400d4;
- public static final int joda_antarctica_rothera=0x7f0400d5;
- public static final int joda_antarctica_south_pole=0x7f0400d6;
- public static final int joda_antarctica_syowa=0x7f0400d7;
- public static final int joda_antarctica_troll=0x7f0400d8;
- public static final int joda_antarctica_vostok=0x7f0400d9;
- public static final int joda_asia_aden=0x7f0400da;
- public static final int joda_asia_almaty=0x7f0400db;
- public static final int joda_asia_amman=0x7f0400dc;
- public static final int joda_asia_anadyr=0x7f0400dd;
- public static final int joda_asia_aqtau=0x7f0400de;
- public static final int joda_asia_aqtobe=0x7f0400df;
- public static final int joda_asia_ashgabat=0x7f0400e0;
- public static final int joda_asia_baghdad=0x7f0400e1;
- public static final int joda_asia_bahrain=0x7f0400e2;
- public static final int joda_asia_baku=0x7f0400e3;
- public static final int joda_asia_bangkok=0x7f0400e4;
- public static final int joda_asia_beirut=0x7f0400e5;
- public static final int joda_asia_bishkek=0x7f0400e6;
- public static final int joda_asia_brunei=0x7f0400e7;
- public static final int joda_asia_chita=0x7f0400e8;
- public static final int joda_asia_choibalsan=0x7f0400e9;
- public static final int joda_asia_chongqing=0x7f0400ea;
- public static final int joda_asia_chungking=0x7f0400eb;
- public static final int joda_asia_colombo=0x7f0400ec;
- public static final int joda_asia_damascus=0x7f0400ed;
- public static final int joda_asia_dhaka=0x7f0400ee;
- public static final int joda_asia_dili=0x7f0400ef;
- public static final int joda_asia_dubai=0x7f0400f0;
- public static final int joda_asia_dushanbe=0x7f0400f1;
- public static final int joda_asia_gaza=0x7f0400f2;
- public static final int joda_asia_hanoi=0x7f0400f3;
- public static final int joda_asia_harbin=0x7f0400f4;
- public static final int joda_asia_hebron=0x7f0400f5;
- public static final int joda_asia_ho_chi_minh=0x7f0400f6;
- public static final int joda_asia_hong_kong=0x7f0400f7;
- public static final int joda_asia_hovd=0x7f0400f8;
- public static final int joda_asia_irkutsk=0x7f0400f9;
- public static final int joda_asia_istanbul=0x7f0400fa;
- public static final int joda_asia_jakarta=0x7f0400fb;
- public static final int joda_asia_jayapura=0x7f0400fc;
- public static final int joda_asia_jerusalem=0x7f0400fd;
- public static final int joda_asia_kabul=0x7f0400fe;
- public static final int joda_asia_kamchatka=0x7f0400ff;
- public static final int joda_asia_karachi=0x7f040100;
- public static final int joda_asia_kashgar=0x7f040101;
- public static final int joda_asia_kathmandu=0x7f040102;
- public static final int joda_asia_khandyga=0x7f040103;
- public static final int joda_asia_kolkata=0x7f040104;
- public static final int joda_asia_krasnoyarsk=0x7f040105;
- public static final int joda_asia_kuala_lumpur=0x7f040106;
- public static final int joda_asia_kuching=0x7f040107;
- public static final int joda_asia_kuwait=0x7f040108;
- public static final int joda_asia_macau=0x7f040109;
- public static final int joda_asia_magadan=0x7f04010a;
- public static final int joda_asia_makassar=0x7f04010b;
- public static final int joda_asia_manila=0x7f04010c;
- public static final int joda_asia_muscat=0x7f04010d;
- public static final int joda_asia_nicosia=0x7f04010e;
- public static final int joda_asia_novokuznetsk=0x7f04010f;
- public static final int joda_asia_novosibirsk=0x7f040110;
- public static final int joda_asia_omsk=0x7f040111;
- public static final int joda_asia_oral=0x7f040112;
- public static final int joda_asia_phnom_penh=0x7f040113;
- public static final int joda_asia_pontianak=0x7f040114;
- public static final int joda_asia_pyongyang=0x7f040115;
- public static final int joda_asia_qatar=0x7f040116;
- public static final int joda_asia_qyzylorda=0x7f040117;
- public static final int joda_asia_rangoon=0x7f040118;
- public static final int joda_asia_riyadh=0x7f040119;
- public static final int joda_asia_sakhalin=0x7f04011a;
- public static final int joda_asia_samarkand=0x7f04011b;
- public static final int joda_asia_seoul=0x7f04011c;
- public static final int joda_asia_shanghai=0x7f04011d;
- public static final int joda_asia_singapore=0x7f04011e;
- public static final int joda_asia_srednekolymsk=0x7f04011f;
- public static final int joda_asia_taipei=0x7f040120;
- public static final int joda_asia_tashkent=0x7f040121;
- public static final int joda_asia_tbilisi=0x7f040122;
- public static final int joda_asia_tehran=0x7f040123;
- public static final int joda_asia_tel_aviv=0x7f040124;
- public static final int joda_asia_thimphu=0x7f040125;
- public static final int joda_asia_tokyo=0x7f040126;
- public static final int joda_asia_ulaanbaatar=0x7f040127;
- public static final int joda_asia_urumqi=0x7f040128;
- public static final int joda_asia_ust_nera=0x7f040129;
- public static final int joda_asia_vientiane=0x7f04012a;
- public static final int joda_asia_vladivostok=0x7f04012b;
- public static final int joda_asia_yakutsk=0x7f04012c;
- public static final int joda_asia_yekaterinburg=0x7f04012d;
- public static final int joda_asia_yerevan=0x7f04012e;
- public static final int joda_atlantic_azores=0x7f04012f;
- public static final int joda_atlantic_bermuda=0x7f040130;
- public static final int joda_atlantic_canary=0x7f040131;
- public static final int joda_atlantic_cape_verde=0x7f040132;
- public static final int joda_atlantic_faroe=0x7f040133;
- public static final int joda_atlantic_jan_mayen=0x7f040134;
- public static final int joda_atlantic_madeira=0x7f040135;
- public static final int joda_atlantic_reykjavik=0x7f040136;
- public static final int joda_atlantic_south_georgia=0x7f040137;
- public static final int joda_atlantic_st_helena=0x7f040138;
- public static final int joda_atlantic_stanley=0x7f040139;
- public static final int joda_australia_adelaide=0x7f04013a;
- public static final int joda_australia_brisbane=0x7f04013b;
- public static final int joda_australia_broken_hill=0x7f04013c;
- public static final int joda_australia_currie=0x7f04013d;
- public static final int joda_australia_darwin=0x7f04013e;
- public static final int joda_australia_eucla=0x7f04013f;
- public static final int joda_australia_hobart=0x7f040140;
- public static final int joda_australia_lindeman=0x7f040141;
- public static final int joda_australia_lord_howe=0x7f040142;
- public static final int joda_australia_melbourne=0x7f040143;
- public static final int joda_australia_perth=0x7f040144;
- public static final int joda_australia_sydney=0x7f040145;
- public static final int joda_cet=0x7f040146;
- public static final int joda_cst6cdt=0x7f040147;
- public static final int joda_eet=0x7f040148;
- public static final int joda_est=0x7f040149;
- public static final int joda_est5edt=0x7f04014a;
- public static final int joda_etc_gmt=0x7f04014b;
- public static final int joda_etc_gmt_1=0x7f04014c;
- public static final int joda_etc_gmt_10=0x7f04014d;
- public static final int joda_etc_gmt_11=0x7f04014e;
- public static final int joda_etc_gmt_12=0x7f04014f;
- public static final int joda_etc_gmt_13=0x7f040150;
- public static final int joda_etc_gmt_14=0x7f040151;
- public static final int joda_etc_gmt_2=0x7f040152;
- public static final int joda_etc_gmt_3=0x7f040153;
- public static final int joda_etc_gmt_4=0x7f040154;
- public static final int joda_etc_gmt_5=0x7f040155;
- public static final int joda_etc_gmt_6=0x7f040156;
- public static final int joda_etc_gmt_7=0x7f040157;
- public static final int joda_etc_gmt_8=0x7f040158;
- public static final int joda_etc_gmt_9=0x7f040159;
- public static final int joda_etc_gmtplus1=0x7f04015a;
- public static final int joda_etc_gmtplus10=0x7f04015b;
- public static final int joda_etc_gmtplus11=0x7f04015c;
- public static final int joda_etc_gmtplus12=0x7f04015d;
- public static final int joda_etc_gmtplus2=0x7f04015e;
- public static final int joda_etc_gmtplus3=0x7f04015f;
- public static final int joda_etc_gmtplus4=0x7f040160;
- public static final int joda_etc_gmtplus5=0x7f040161;
- public static final int joda_etc_gmtplus6=0x7f040162;
- public static final int joda_etc_gmtplus7=0x7f040163;
- public static final int joda_etc_gmtplus8=0x7f040164;
- public static final int joda_etc_gmtplus9=0x7f040165;
- public static final int joda_etc_uct=0x7f040166;
- public static final int joda_etc_utc=0x7f040167;
- public static final int joda_europe_amsterdam=0x7f040168;
- public static final int joda_europe_andorra=0x7f040169;
- public static final int joda_europe_athens=0x7f04016a;
- public static final int joda_europe_belfast=0x7f04016b;
- public static final int joda_europe_belgrade=0x7f04016c;
- public static final int joda_europe_berlin=0x7f04016d;
- public static final int joda_europe_bratislava=0x7f04016e;
- public static final int joda_europe_brussels=0x7f04016f;
- public static final int joda_europe_bucharest=0x7f040170;
- public static final int joda_europe_budapest=0x7f040171;
- public static final int joda_europe_busingen=0x7f040172;
- public static final int joda_europe_chisinau=0x7f040173;
- public static final int joda_europe_copenhagen=0x7f040174;
- public static final int joda_europe_dublin=0x7f040175;
- public static final int joda_europe_gibraltar=0x7f040176;
- public static final int joda_europe_guernsey=0x7f040177;
- public static final int joda_europe_helsinki=0x7f040178;
- public static final int joda_europe_isle_of_man=0x7f040179;
- public static final int joda_europe_istanbul=0x7f04017a;
- public static final int joda_europe_jersey=0x7f04017b;
- public static final int joda_europe_kaliningrad=0x7f04017c;
- public static final int joda_europe_kiev=0x7f04017d;
- public static final int joda_europe_lisbon=0x7f04017e;
- public static final int joda_europe_ljubljana=0x7f04017f;
- public static final int joda_europe_london=0x7f040180;
- public static final int joda_europe_luxembourg=0x7f040181;
- public static final int joda_europe_madrid=0x7f040182;
- public static final int joda_europe_malta=0x7f040183;
- public static final int joda_europe_mariehamn=0x7f040184;
- public static final int joda_europe_minsk=0x7f040185;
- public static final int joda_europe_monaco=0x7f040186;
- public static final int joda_europe_moscow=0x7f040187;
- public static final int joda_europe_nicosia=0x7f040188;
- public static final int joda_europe_oslo=0x7f040189;
- public static final int joda_europe_paris=0x7f04018a;
- public static final int joda_europe_podgorica=0x7f04018b;
- public static final int joda_europe_prague=0x7f04018c;
- public static final int joda_europe_riga=0x7f04018d;
- public static final int joda_europe_rome=0x7f04018e;
- public static final int joda_europe_samara=0x7f04018f;
- public static final int joda_europe_san_marino=0x7f040190;
- public static final int joda_europe_sarajevo=0x7f040191;
- public static final int joda_europe_simferopol=0x7f040192;
- public static final int joda_europe_skopje=0x7f040193;
- public static final int joda_europe_sofia=0x7f040194;
- public static final int joda_europe_stockholm=0x7f040195;
- public static final int joda_europe_tallinn=0x7f040196;
- public static final int joda_europe_tirane=0x7f040197;
- public static final int joda_europe_tiraspol=0x7f040198;
- public static final int joda_europe_uzhgorod=0x7f040199;
- public static final int joda_europe_vaduz=0x7f04019a;
- public static final int joda_europe_vatican=0x7f04019b;
- public static final int joda_europe_vienna=0x7f04019c;
- public static final int joda_europe_vilnius=0x7f04019d;
- public static final int joda_europe_volgograd=0x7f04019e;
- public static final int joda_europe_warsaw=0x7f04019f;
- public static final int joda_europe_zagreb=0x7f0401a0;
- public static final int joda_europe_zaporozhye=0x7f0401a1;
- public static final int joda_europe_zurich=0x7f0401a2;
- public static final int joda_hst=0x7f0401a3;
- public static final int joda_indian_antananarivo=0x7f0401a4;
- public static final int joda_indian_chagos=0x7f0401a5;
- public static final int joda_indian_christmas=0x7f0401a6;
- public static final int joda_indian_cocos=0x7f0401a7;
- public static final int joda_indian_comoro=0x7f0401a8;
- public static final int joda_indian_kerguelen=0x7f0401a9;
- public static final int joda_indian_mahe=0x7f0401aa;
- public static final int joda_indian_maldives=0x7f0401ab;
- public static final int joda_indian_mauritius=0x7f0401ac;
- public static final int joda_indian_mayotte=0x7f0401ad;
- public static final int joda_indian_reunion=0x7f0401ae;
- public static final int joda_met=0x7f0401af;
- public static final int joda_mst=0x7f0401b0;
- public static final int joda_mst7mdt=0x7f0401b1;
- public static final int joda_pacific_apia=0x7f0401b2;
- public static final int joda_pacific_auckland=0x7f0401b3;
- public static final int joda_pacific_bougainville=0x7f0401b4;
- public static final int joda_pacific_chatham=0x7f0401b5;
- public static final int joda_pacific_chuuk=0x7f0401b6;
- public static final int joda_pacific_easter=0x7f0401b7;
- public static final int joda_pacific_efate=0x7f0401b8;
- public static final int joda_pacific_enderbury=0x7f0401b9;
- public static final int joda_pacific_fakaofo=0x7f0401ba;
- public static final int joda_pacific_fiji=0x7f0401bb;
- public static final int joda_pacific_funafuti=0x7f0401bc;
- public static final int joda_pacific_galapagos=0x7f0401bd;
- public static final int joda_pacific_gambier=0x7f0401be;
- public static final int joda_pacific_guadalcanal=0x7f0401bf;
- public static final int joda_pacific_guam=0x7f0401c0;
- public static final int joda_pacific_honolulu=0x7f0401c1;
- public static final int joda_pacific_johnston=0x7f0401c2;
- public static final int joda_pacific_kiritimati=0x7f0401c3;
- public static final int joda_pacific_kosrae=0x7f0401c4;
- public static final int joda_pacific_kwajalein=0x7f0401c5;
- public static final int joda_pacific_majuro=0x7f0401c6;
- public static final int joda_pacific_marquesas=0x7f0401c7;
- public static final int joda_pacific_midway=0x7f0401c8;
- public static final int joda_pacific_nauru=0x7f0401c9;
- public static final int joda_pacific_niue=0x7f0401ca;
- public static final int joda_pacific_norfolk=0x7f0401cb;
- public static final int joda_pacific_noumea=0x7f0401cc;
- public static final int joda_pacific_pago_pago=0x7f0401cd;
- public static final int joda_pacific_palau=0x7f0401ce;
- public static final int joda_pacific_pitcairn=0x7f0401cf;
- public static final int joda_pacific_pohnpei=0x7f0401d0;
- public static final int joda_pacific_port_moresby=0x7f0401d1;
- public static final int joda_pacific_rarotonga=0x7f0401d2;
- public static final int joda_pacific_saipan=0x7f0401d3;
- public static final int joda_pacific_tahiti=0x7f0401d4;
- public static final int joda_pacific_tarawa=0x7f0401d5;
- public static final int joda_pacific_tongatapu=0x7f0401d6;
- public static final int joda_pacific_wake=0x7f0401d7;
- public static final int joda_pacific_wallis=0x7f0401d8;
- public static final int joda_pst8pdt=0x7f0401d9;
- public static final int joda_wet=0x7f0401da;
- public static final int joda_zoneinfomap=0x7f0401db;
- }
- public static final class string {
- public static final int action_settings=0x7f060004;
- public static final int api_base_uri=0x7f060005;
- public static final int app_name=0x7f060006;
- public static final int hello_world=0x7f060007;
- public static final int http_log_level=0x7f060008;
- public static final int joda_time_android_date_time=0x7f060000;
- public static final int joda_time_android_preposition_for_date=0x7f060001;
- public static final int joda_time_android_preposition_for_time=0x7f060002;
- public static final int joda_time_android_relative_time=0x7f060003;
- public static final int oauth_client_id=0x7f060009;
- public static final int oauth_client_secret=0x7f06000a;
- }
- public static final class style {
- /** API 11 theme customizations can go here.
- API 14 theme customizations can go here.
-
- Theme customizations available in newer API levels can go in
- res/values-vXX/styles.xml, while customizations related to
- backward-compatibility can go here.
-
- */
- public static final int AppBaseTheme=0x7f080000;
- /** All customizations that are NOT specific to a particular API-level can go here.
- */
- public static final int AppTheme=0x7f080001;
- }
-}
diff --git a/app/build/intermediates/classes/debug/com/banc/BLEManagement/BLEDeviceInfo.class b/app/build/intermediates/classes/debug/com/banc/BLEManagement/BLEDeviceInfo.class
deleted file mode 100644
index cdbbc88..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/BLEManagement/BLEDeviceInfo.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/BLEManagement/BLEDeviceInfoList.class b/app/build/intermediates/classes/debug/com/banc/BLEManagement/BLEDeviceInfoList.class
deleted file mode 100644
index 600f40b..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/BLEManagement/BLEDeviceInfoList.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/BLEManagement/BLEEvent.class b/app/build/intermediates/classes/debug/com/banc/BLEManagement/BLEEvent.class
deleted file mode 100644
index efec660..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/BLEManagement/BLEEvent.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/BLEManagement/BLEManager$1.class b/app/build/intermediates/classes/debug/com/banc/BLEManagement/BLEManager$1.class
deleted file mode 100644
index 6303dd5..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/BLEManagement/BLEManager$1.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/BLEManagement/BLEManager$2.class b/app/build/intermediates/classes/debug/com/banc/BLEManagement/BLEManager$2.class
deleted file mode 100644
index 2d7caca..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/BLEManagement/BLEManager$2.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/BLEManagement/BLEManager$3.class b/app/build/intermediates/classes/debug/com/banc/BLEManagement/BLEManager$3.class
deleted file mode 100644
index 04ce1a3..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/BLEManagement/BLEManager$3.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/BLEManagement/BLEManager.class b/app/build/intermediates/classes/debug/com/banc/BLEManagement/BLEManager.class
deleted file mode 100644
index 5e8bb41..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/BLEManagement/BLEManager.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/BLEManagement/BLEScanner.class b/app/build/intermediates/classes/debug/com/banc/BLEManagement/BLEScanner.class
deleted file mode 100644
index 9eb9b1e..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/BLEManagement/BLEScanner.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/BLEManagement/BluetoothHelper.class b/app/build/intermediates/classes/debug/com/banc/BLEManagement/BluetoothHelper.class
deleted file mode 100644
index 408aa3c..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/BLEManagement/BluetoothHelper.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/AbstractService$1.class b/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/AbstractService$1.class
deleted file mode 100644
index 74a233f..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/AbstractService$1.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/AbstractService$IncomingHandler.class b/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/AbstractService$IncomingHandler.class
deleted file mode 100644
index 1e9b2a9..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/AbstractService$IncomingHandler.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/AbstractService.class b/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/AbstractService.class
deleted file mode 100644
index b5de5a3..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/AbstractService.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/BLEDisplay$1.class b/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/BLEDisplay$1.class
deleted file mode 100644
index c8761e9..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/BLEDisplay$1.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/BLEDisplay$HandlerExtension.class b/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/BLEDisplay$HandlerExtension.class
deleted file mode 100644
index ba052be..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/BLEDisplay$HandlerExtension.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/BLEDisplay.class b/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/BLEDisplay.class
deleted file mode 100644
index 261960d..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/BLEDisplay.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/BLESelection$1.class b/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/BLESelection$1.class
deleted file mode 100644
index 3fa9818..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/BLESelection$1.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/BLESelection$HandlerExtension.class b/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/BLESelection$HandlerExtension.class
deleted file mode 100644
index 82d77e9..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/BLESelection$HandlerExtension.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/BLESelection.class b/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/BLESelection.class
deleted file mode 100644
index 680dcc8..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/BLESelection.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/BLEService.class b/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/BLEService.class
deleted file mode 100644
index b47108d..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/BLEService.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/BuildConfig.class b/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/BuildConfig.class
deleted file mode 100644
index adb7837..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/BuildConfig.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/DeviceAdapter.class b/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/DeviceAdapter.class
deleted file mode 100644
index af9838c..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/DeviceAdapter.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/HexAsciiHelper.class b/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/HexAsciiHelper.class
deleted file mode 100644
index 627a551..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/HexAsciiHelper.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/MainActivity.class b/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/MainActivity.class
deleted file mode 100644
index da07bab..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/MainActivity.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/MyBroadcastReceiver.class b/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/MyBroadcastReceiver.class
deleted file mode 100644
index d1cab0d..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/MyBroadcastReceiver.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/R$attr.class b/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/R$attr.class
deleted file mode 100644
index bac23ca..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/R$attr.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/R$dimen.class b/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/R$dimen.class
deleted file mode 100644
index 6fcb5c6..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/R$dimen.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/R$drawable.class b/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/R$drawable.class
deleted file mode 100644
index 4bca0cd..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/R$drawable.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/R$id.class b/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/R$id.class
deleted file mode 100644
index a59fa6c..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/R$id.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/R$layout.class b/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/R$layout.class
deleted file mode 100644
index 0eb2d97..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/R$layout.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/R$menu.class b/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/R$menu.class
deleted file mode 100644
index e90eabb..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/R$menu.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/R$string.class b/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/R$string.class
deleted file mode 100644
index f0cd109..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/R$string.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/R$style.class b/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/R$style.class
deleted file mode 100644
index d68f1ef..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/R$style.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/R.class b/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/R.class
deleted file mode 100644
index edc6cfd..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/R.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/ServiceManager$1.class b/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/ServiceManager$1.class
deleted file mode 100644
index 3fb4076..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/ServiceManager$1.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/ServiceManager$IncomingHandler.class b/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/ServiceManager$IncomingHandler.class
deleted file mode 100644
index 323f2a6..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/ServiceManager$IncomingHandler.class and /dev/null differ
diff --git a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/ServiceManager.class b/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/ServiceManager.class
deleted file mode 100644
index 6385b3f..0000000
Binary files a/app/build/intermediates/classes/debug/com/banc/sparkle_gateway/ServiceManager.class and /dev/null differ
diff --git a/app/build/intermediates/dex/debug/classes.dex b/app/build/intermediates/dex/debug/classes.dex
deleted file mode 100644
index f3def43..0000000
Binary files a/app/build/intermediates/dex/debug/classes.dex and /dev/null differ
diff --git a/app/build/intermediates/incremental/aidl/androidTest/debug/dependency.store b/app/build/intermediates/incremental/aidl/androidTest/debug/dependency.store
deleted file mode 100644
index 8b8400d..0000000
Binary files a/app/build/intermediates/incremental/aidl/androidTest/debug/dependency.store and /dev/null differ
diff --git a/app/build/intermediates/incremental/aidl/debug/dependency.store b/app/build/intermediates/incremental/aidl/debug/dependency.store
deleted file mode 100644
index 8b8400d..0000000
Binary files a/app/build/intermediates/incremental/aidl/debug/dependency.store and /dev/null differ
diff --git a/app/build/intermediates/incremental/mergeAssets/androidTest/debug/merger.xml b/app/build/intermediates/incremental/mergeAssets/androidTest/debug/merger.xml
deleted file mode 100644
index 1841382..0000000
--- a/app/build/intermediates/incremental/mergeAssets/androidTest/debug/merger.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/mergeAssets/debug/merger.xml b/app/build/intermediates/incremental/mergeAssets/debug/merger.xml
deleted file mode 100644
index f9b4e39..0000000
--- a/app/build/intermediates/incremental/mergeAssets/debug/merger.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/mergeResources/androidTest/debug/merger.xml b/app/build/intermediates/incremental/mergeResources/androidTest/debug/merger.xml
deleted file mode 100644
index 46eef09..0000000
--- a/app/build/intermediates/incremental/mergeResources/androidTest/debug/merger.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/app/build/intermediates/incremental/mergeResources/debug/merger.xml b/app/build/intermediates/incremental/mergeResources/debug/merger.xml
deleted file mode 100644
index 16cc609..0000000
--- a/app/build/intermediates/incremental/mergeResources/debug/merger.xml
+++ /dev/null
@@ -1,4052 +0,0 @@
-
-
- - 1 second ago
- - %d seconds ago
-
- - 1 hour ago
- - %d hours ago
-
- - tomorrow
- - in %d days
-
- - yesterday
- - %d days ago
-
- - in 1 sec
- - in %d secs
- at %s
- - in 1 hour
- - in %d hours
-
- - 1 hour
- - %d hours
-
- - 1 minute
- - %d minutes
-
- - 1 minute ago
- - %d minutes ago
- "%1$s, %2$s"
- - 1 sec ago
- - %d secs ago
- %1$s, %2$s
- - 1 hour ago
- - %d hours ago
-
- - in 1 second
- - in %d seconds
-
- - in 1 min
- - in %d mins
-
- - in 1 hour
- - in %d hours
-
- - 1 min ago
- - %d mins ago
-
- - in 1 minute
- - in %d minutes
-
- - yesterday
- - %d days ago
- on %s
- - tomorrow
- - in %d days
-
- - 1 second
- - %d seconds
-
- - "1 minuut gelede"
- - "%d minute gelede"
-
- - "oor 1 uur"
- - "oor %d uur"
-
- - "oor 1 sekonde"
- - "oor %d sekondes"
-
- - "oor 1 minuut"
- - "oor %d minute"
-
- - "1 minuut"
- - "%d minute"
-
- - "1 uur gelede"
- - "%d uur gelede"
- "by %s"
- - "oor 1 min."
- - "oor %d minute"
- "op %s"
- - "1 sekonde gelede"
- - "%d sekondes gelede"
-
- - "1 uur"
- - "%d ure"
-
- - "gister"
- - "%d dae gelede"
-
- - "1 uur gelede"
- - "%d uur gelede"
- %2$s %1$s
- - "oor 1 sek."
- - "oor %d sek."
-
- - "1 sekonde"
- - "%d sekondes"
- "%1$s, %2$s"
- - "oor 1 uur"
- - "oor %d uur"
-
- - "môre"
- - "oor %d dae"
-
- - "môre"
- - "oor %d dae"
-
- - "1 min. gelede"
- - "%d min. gelede"
-
- - "gister"
- - "%d dae gelede"
-
- - "1 sek. gelede"
- - "%d sek. gelede"
-
- - "በ1 ደቂቃ ውስጥ"
- - "በ%d ደቂቃዎች ውስጥ"
-
- - "ነገ"
- - "በ%d ቀናት"
-
- - "ከ 1 ደቂቃ በፊት"
- - "ከ %d ደቂቃዎች በፊት"
-
- - "በ 1 ሰዓት"
- - "በ %d ሰዓቶች"
-
- - "1 ሴኮንድ"
- - "%d ሰከንዶች"
-
- - "ከ 1 ደቂቃ በፊት"
- - "%d ደቂቃዎች በፊት"
-
- - "ነገ"
- - "በ%d ቀናት"
-
- - "1 ደቂቃ"
- - "%d ደቂቃዎች"
-
- - "ከ1 ሰዓት በፊት"
- - "ከ %d ሰዓት በፊት"
-
- - "በ 1 ሰዓት"
- - "በ %d ሰዓቶች"
-
- - "1 ሴኮንድ በፊት"
- - "%d ሰከንዶች በፊት"
- %2$s %1$s
- - "ትላንትና"
- - "ከ %dቀን በፊት"
-
- - "በ1 ደቂቃ ውስጥ"
- - "በ%d ደቂቃዎች ውስጥ"
-
- - "ትላንትና"
- - "ከ %dቀን በፊት"
-
- - "ከ1 ሰዓት በፊት"
- - "ከ %d ሰዓት በፊት"
- "በ %s""በ %s"
- - "በ1 ሴኮንድ"
- - "በ%d ሰከንዶች ውስጥ"
-
- - "1 ሰዓት"
- - "%d ሰዓቶች"
-
- - "በ1 ሴኮንድ"
- - "በ%d ሰከንዶች ውስጥ"
- "%1$s, %2$s"
- - "ከ1 ሴኮንድ በፊት"
- - "%d ሰኮንዶች በፊት"
- "في الساعة %s"
- - "قبل ساعة واحدة"
- - "قبل %d ساعة"
-
- - "في ساعة واحدة"
- - "في %d ساعة"
-
- - "قبل ساعة واحدة"
- - "قبل %d ساعة"
-
- - "في ثانية واحدة"
- - "في %d ثانية"
-
- - "قبل ثانية واحدة"
- - "قبل %d ثانية"
-
- - "غدًا"
- - "في %d يوم"
-
- - "قبل دقيقة واحدة"
- - "قبل %d دقيقة"
-
- - "أمس"
- - "قبل %d يوم"
- "في %s""%1$s، %2$s"
- - "غدًا"
- - "في %d يوم"
-
- - "ثانية واحدة"
- - "%d من الثواني"
-
- - "في ثانية واحدة"
- - "في %d ثانية"
-
- - "في ساعة واحدة"
- - "في %d ساعة"
-
- - "أمس"
- - "قبل %d يوم"
-
- - "قبل دقيقة واحدة"
- - "قبل %d دقيقة"
-
- - "ساعة واحدة"
- - "%d من الساعات"
-
- - "في دقيقة واحدة"
- - "في %d دقيقة"
- %2$s %1$s
- - "دقيقة واحدة"
- - "%d من الدقائق"
-
- - "في دقيقة واحدة"
- - "في %d دقيقة"
-
- - "قبل ثانية واحدة"
- - "قبل %d ثانية"
- %2$s %1$s
- - "1 saniyə əvvəl"
- - "%d saniyə əvvəl"
-
- - "1 saniyə əvvəl"
- - "%d san əvvəl"
-
- - "1 saat"
- - "%d saat"
-
- - "1 dəqiqə"
- - "%d dəqiqə"
-
- - "1 saniyə"
- - "%d saniyə"
- "saat %s"
- - "1 san ərzində"
- - "%d san ərzində"
-
- - "1 dəqiqə əvvəl"
- - "%d dəqiqə əvvəl"
-
- - "1 saat əvvəl"
- - "%d saat əvvəl"
-
- - "1 dəqiqə içində"
- - "%d dəqiqə ərzində"
-
- - "dünən"
- - "%d gün əvvəl"
-
- - "1 saat əvvəl"
- - "%d saat əvvəl"
-
- - "1 saat ərzində"
- - "%d saata"
-
- - "dünən"
- - "%d gün əvvəl"
- "%1$s, %2$s"
- - "1 saniyə ərzində"
- - "%d saniyə içində"
-
- - "1 saata"
- - "%d saata"
-
- - "sabah"
- - "%d günə"
-
- - "sabah"
- - "%d gün ərzində"
- "%s tarixində"
- - "1 dəqiqə əvvəl"
- - "%d dəqiqə əvvəl"
-
- - "1 dəq ərzində"
- - "%d dəqiqəyə"
-
- - "1 saat əvvəl"
- - "%d saat əvvəl"
-
- - "1 dəqiqə"
- - "%d dəqiqə"
-
- - "1 saniyə ərzində"
- - "%d saniyə içində"
-
- - "1 dəqiqə əvvəl"
- - "%d dəqiqə əvvəl"
-
- - "1 saat əvvəl"
- - "%d saat əvvəl"
-
- - "dünən"
- - "%d gün əvvəl"
-
- - "sabah"
- - "%d gün ərzində"
-
- - "1 saat"
- - "%d saat"
- "%1$s, %2$s"
- - "1 dəqiqə əvvəl"
- - "%d dəqiqə əvvəl"
-
- - "1 saniyə əvvəl"
- - "%d san əvvəl"
-
- - "1 dəq ərzində"
- - "%d dəqiqəyə"
- "%s tarixində"
- - "1 saniyə"
- - "%d saniyə"
-
- - "dünən"
- - "%d gün əvvəl"
-
- - "1 dəqiqə içində"
- - "%d dəqiqə ərzində"
-
- - "1 saat ərzində"
- - "%d saata"
-
- - "1 san ərzində"
- - "%d san ərzində"
- "saat %s"
- - "1 saata"
- - "%d saata"
-
- - "1 saniyə əvvəl"
- - "%d saniyə əvvəl"
-
- - "sabah"
- - "%d günə"
-
- - "праз 1 секунду"
- - "праз %d с."
-
- - "1 хвіліна"
- - "%d хв."
- %2$s %1$s
- - "1 хвіліну таму"
- - "%d хв. таму"
- "у %s"
- - "1 хвiлiну таму"
- - "%d мін. таму"
-
- - "учора"
- - "%d д. таму"
- "дата: %s"
- - "1 секунду таму"
- - "%d с. таму"
-
- - "заўтра"
- - "праз %d д."
-
- - "праз 1 гадзіну"
- - "праз %d гадз."
-
- - "1 гадзіна"
- - "%d гадз."
-
- - "праз 1 секунду"
- - "праз %d с."
-
- - "1 гадзіну таму"
- - "%d гадз. таму"
-
- - "учора"
- - "%d д. таму"
-
- - "заўтра"
- - "праз %d д."
- "%1$s, %2$s"
- - "праз 1 хв."
- - "Праз %d хв."
-
- - "1 секунда"
- - "%d с"
-
- - "праз 1 гадзіну"
- - "праз %d гадз."
-
- - "праз 1 хвіліну"
- - "праз %d хв."
-
- - "1 гадзіну таму"
- - "%d гадз. таму"
-
- - "1 секунду таму"
- - "%d с. таму"
-
- - "1 минута"
- - "%d минути"
- "в %s"
- - "Преди 1 час"
- - "Преди %d часа"
-
- - "1 секунда"
- - "%d секунди"
-
- - "след 1 час"
- - "след %d часа"
-
- - "Преди 1 секунда"
- - "Преди %d секунди"
-
- - "вчера"
- - "Преди %d дни"
-
- - "утре"
- - "след %d дни"
-
- - "Преди 1 мин"
- - "Преди %d мин"
-
- - "утре"
- - "след %d дни"
- "на %s"
- - "Преди 1 минута"
- - "Преди %d минути"
-
- - "след 1 секунда"
- - "след %d секунди"
-
- - "вчера"
- - "Преди %d дни"
- %2$s %1$s
- - "Преди 1 сек"
- - "Преди %d сек"
-
- - "след 1 минута"
- - "след %d минути"
-
- - "1 час"
- - "%d часа"
-
- - "след 1 сек"
- - "след %d сек"
-
- - "след 1 час"
- - "след %d часа"
-
- - "след 1 мин"
- - "след %d мин"
-
- - "Преди 1 час"
- - "Преди %d часа"
- "%1$s, %2$s""%1$s, %2$s""a les %s"
- - "1 segon"
- - "%d segons"
-
- - "d\'aquí a 1 s"
- - "d\'aquí a %d s"
-
- - "Fa 1 segon"
- - "Fa %d segons"
- %2$s %1$s
- - "Ahir"
- - "Fa %d dies"
-
- - "d\'aquí a 1 minut"
- - "d\'aquí a %d minuts"
-
- - "demà"
- - "d\'aquí a %d dies"
-
- - "d\'aquí a 1 segon"
- - "d\'aquí a %d segons"
-
- - "ahir"
- - "Fa %d dies"
-
- - "1 hora"
- - "%d hores"
-
- - "Fa 1 minut"
- - "Fa %d minuts"
- "el %s"
- - "Fa 1 hora"
- - "Fa %d hores"
-
- - "fa 1 min"
- - "Fa %d min"
-
- - "d\'aquí a 1 hora"
- - "d\'aquí a %d hores"
-
- - "Fa 1 s"
- - "Fa %d s"
-
- - "1 minut"
- - "%d minuts"
-
- - "d\'aquí a 1 min"
- - "d\'aquí a %d minuts"
-
- - "Fa 1 hora"
- - "Fa %d hores"
-
- - "d\'aquí a 1 hora"
- - "d\'aquí a %d hores"
-
- - "demà"
- - "d\'aquí a %d dies"
-
- - "před 1 s"
- - "před %d s"
-
- - "za 1 s"
- - "za %d s"
-
- - "před 1 min"
- - "před %d min"
-
- - "za 1 minutu"
- - "za %d min"
-
- - "zítra"
- - "za %d dny"
-
- - "za 1 hodinu"
- - "za %d hod."
- "%1$s, %2$s"
- - "před 1 min"
- - "před %d min"
-
- - "zítra"
- - "za %d dny"
-
- - "1 minuta"
- - "%d min"
- "v %s"
- - "před 1 h"
- - "před %d h"
-
- - "1 hodina"
- - "%d h"
-
- - "za 1 sekundu"
- - "za %d s"
-
- - "včera"
- - "před %d dny"
-
- - "před 1 h"
- - "před %d h"
- %2$s %1$s
- - "včera"
- - "před %d dny"
-
- - "za 1 min"
- - "za %d min"
- "dne %s"
- - "před 1 sekundou"
- - "před %d s"
-
- - "za 1 hodinu"
- - "za %d hod."
-
- - "1 sekunda"
- - "%d s"
- "den %s"
- - "i morgen"
- - "om %d dage"
-
- - "i går"
- - "for %d dage siden"
-
- - "Ét sekund"
- - "%d sekunder"
-
- - "for 1 sek. siden"
- - "for %d sek. siden"
- "%1$s, %2$s"
- - "om 1 min."
- - "om %d min."
-
- - "Én time"
- - "%d timer"
-
- - "om 1 sek."
- - "om %d sekunder"
-
- - "for 1 time siden"
- - "for %d timer siden"
-
- - "Ét minut"
- - "%d minutter"
-
- - "om 1 minut"
- - "om %d minutter"
-
- - "for 1 time siden"
- - "for %d timer siden"
-
- - "for 1 min. siden"
- - "for %d min. siden"
-
- - "om 1 sekund"
- - "om %d sekunder"
-
- - "i går"
- - "for %d dage siden"
-
- - "i morgen"
- - "om %d dage"
- "kl. %s"
- - "for 1 minut siden"
- - "for %d minutter siden"
- %2$s, %1$s
- - "for 1 sekund siden"
- - "for %d sekunder siden"
-
- - "om 1 time"
- - "om %d timer"
-
- - "om 1 time"
- - "om %d timer"
-
- - "vor 1 Minute"
- - "vor %d Minuten"
-
- - "1 Minute"
- - "%d Minuten"
- %1$s, %2$s
- - "gestern"
- - "vor %d Tagen"
-
- - "vor 1 Minute"
- - "vor %d Minuten"
-
- - "vor 1 Sekunde"
- - "vor %d Sekunden"
-
- - "vor 1 Stunde"
- - "vor %d Stunden"
- "um %s""%1$s, %2$s"
- - "morgen"
- - "in %d Tagen"
-
- - "in 1 Minute"
- - "in %d Minuten"
-
- - "gestern"
- - "vor %d Tagen"
-
- - "in 1 Stunde"
- - "In %d Stunden"
-
- - "1 Stunde"
- - "%d Stunden"
-
- - "in 1 Sekunde"
- - "in %d Sekunden"
-
- - "in 1 Minute"
- - "in %d Minuten"
-
- - "in 1 Sekunde"
- - "in %d Sekunden"
-
- - "vor 1 Sekunde"
- - "vor %d Sekunden"
-
- - "morgen"
- - "in %d Tagen"
-
- - "vor 1 Stunde"
- - "vor %d Stunden"
- "am %s"
- - "1 Sekunde"
- - "%d Sekunden"
-
- - "in 1 Stunde"
- - "In %d Stunden"
-
- - "σε 1 ώρα"
- - "σε %d ώρες"
-
- - "χθες"
- - "πριν από %d ημέρες"
-
- - "πριν από 1 ώρα"
- - "πριν από %d ώρες"
-
- - "πριν από 1 δευτερόλεπτο"
- - "πριν από %d δευτερόλεπτα"
- "%1$s, %2$s"
- - "1 δευτερόλεπτο"
- - "%d δευτερόλεπτα"
-
- - "πριν από 1 λεπτό"
- - "πριν από %d λεπτά"
-
- - "1 ώρα"
- - "%d ώρες"
-
- - "πριν από 1 ώρα"
- - "πριν από %d ώρες"
-
- - "αύριο"
- - "σε %d ημέρες"
-
- - "χθες"
- - "πριν από %d ημέρες"
- %2$s %1$s
- - "σε 1 ώρα"
- - "σε %d ώρες"
-
- - "πριν από 1 δευτερόλεπτο"
- - "πριν από %d δευτερόλεπτα"
-
- - "σε 1 δευτερόλεπτο"
- - "σε %d δευτερόλεπτα"
-
- - "πριν από 1 λεπτό"
- - "πριν από %d λεπτά"
-
- - "σε 1 λεπτό"
- - "σε %d λεπτά"
-
- - "σε 1 λεπτό"
- - "σε %d λεπτά"
-
- - "σε 1 δευτερόλεπτο"
- - "σε %d δευτερόλεπτα"
-
- - "1 λεπτό"
- - "%d λεπτά"
- "στις %s""στις %s"
- - "αύριο"
- - "σε %d ημέρες"
- %1$s, %2$s%1$s, %2$s"%1$s, %2$s"
- - "yesterday"
- - "%d days ago"
-
- - "1 sec ago"
- - "%d secs ago"
- %1$s, %2$s
- - "in 1 min"
- - "in %d mins"
-
- - "in 1 minute"
- - "in %d minutes"
-
- - "1 hour"
- - "%d hours"
- "on %s"
- - "1 hour ago"
- - "%d hours ago"
-
- - "in 1 hour"
- - "in %d hours"
- "at %s"
- - "yesterday"
- - "%d days ago"
-
- - "tomorrow"
- - "in %d days"
-
- - "1 second"
- - "%d seconds"
-
- - "1 second ago"
- - "%d seconds ago"
-
- - "1 minute"
- - "%d minutes"
-
- - "tomorrow"
- - "in %d days"
-
- - "in 1 hour"
- - "in %d hours"
-
- - "in 1 sec"
- - "in %d secs"
-
- - "1 min ago"
- - "%d mins ago"
-
- - "1 hour ago"
- - "%d hours ago"
-
- - "1 minute ago"
- - "%d minutes ago"
-
- - "in 1 second"
- - "in %d seconds"
- %1$s, %2$s"on %s""at %s"
- - "1 second ago"
- - "%d seconds ago"
-
- - "in 1 hour"
- - "in %d hours"
-
- - "in 1 minute"
- - "in %d minutes"
-
- - "in 1 hour"
- - "in %d hours"
- "%1$s, %2$s"%1$s, %2$s
- - "1 min ago"
- - "%d mins ago"
-
- - "in 1 min"
- - "in %d mins"
-
- - "yesterday"
- - "%d days ago"
-
- - "tomorrow"
- - "in %d days"
-
- - "1 hour ago"
- - "%d hours ago"
-
- - "1 hour"
- - "%d hours"
-
- - "1 minute"
- - "%d minutes"
-
- - "1 minute ago"
- - "%d minutes ago"
-
- - "in 1 sec"
- - "in %d secs"
-
- - "1 hour ago"
- - "%d hours ago"
-
- - "tomorrow"
- - "in %d days"
-
- - "1 sec ago"
- - "%d secs ago"
-
- - "1 second"
- - "%d seconds"
-
- - "yesterday"
- - "%d days ago"
-
- - "in 1 second"
- - "in %d seconds"
- %1$s, %2$s%1$s, %2$s%1$s, %2$s
- - "1 minuto"
- - "%d minutos"
-
- - "dentro de 1 hora"
- - "dentro de %d horas"
-
- - "dentro de 1 minuto"
- - "dentro de %d minutos"
-
- - "hace 1 segundo"
- - "hace %d segundos"
-
- - "dentro de 1 segundo"
- - "dentro de %d segundos"
-
- - "Hace 1 segundo"
- - "Hace %d segundos"
-
- - "Hace 1 hora"
- - "Hace %d horas"
-
- - "1 segundo"
- - "%d segundos"
-
- - "Ayer"
- - "hace %d días"
-
- - "mañana"
- - "dentro de %d días"
- "%1$s, %2$s"
- - "Hace 1 minuto"
- - "Hace %d minutos"
- "a las %s"
- - "hace 1 minuto"
- - "hace %d minutos"
-
- - "1 hora"
- - "%d horas"
-
- - "dentro de 1 segundo"
- - "dentro de %d segundos"
- %1$s, %2$s
- - "dentro de 1 hora"
- - "dentro de %d horas"
-
- - "mañana"
- - "dentro de %d días"
-
- - "dentro de 1 minuto"
- - "dentro de %d minutos"
- "el %s"
- - "Ayer"
- - "Hace %d días"
-
- - "hace 1 hora"
- - "hace %d horas"
-
- - "mañana"
- - "en %d días"
-
- - "hace 1 segundo"
- - "hace %d segundos"
-
- - "Hace 1 minuto."
- - "hace %d minutos"
- "a las %s""%1$s, %2$s""activado %s"
- - "en 1 segundo"
- - "en %d segundos"
-
- - "mañana"
- - "en %d días"
-
- - "Hace 1 hora."
- - "Hace %d horas."
-
- - "1 segundo"
- - "%d segundos"
-
- - "en 1 minuto"
- - "en %d minutos"
-
- - "en 1 hora"
- - "en %d horas"
-
- - "en 1 hora"
- - "en %d horas"
-
- - "ayer"
- - "Hace %d días."
-
- - "en 1 minuto"
- - "en %d minutos"
-
- - "Hace 1 hora."
- - "hace %d horas"
-
- - "1 hora"
- - "%d horas"
-
- - "ayer"
- - "Hace %d días."
-
- - "1 minuto"
- - "%d minutos"
- %2$s %1$s
- - "en 1 segundo"
- - "en %d segundos"
-
- - "hace 1 min"
- - "Hace %d minutos."
-
- - "hace 1 segundo"
- - "hace %d segundos"
- "kell %s"%2$s %1$s
- - "1 tunni pärast"
- - "%d tunni pärast"
-
- - "1 minuti pärast"
- - "%d minuti pärast"
-
- - "1 tunni pärast"
- - "%d tunni pärast"
-
- - "1 sekund"
- - "%d sekundit"
- "kuupäeval %s"
- - "1 minut tagasi"
- - "%d minutit tagasi"
-
- - "1 minuti pärast"
- - "%d minuti pärast"
-
- - "1 tund tagasi"
- - "%d tundi tagasi"
-
- - "homme"
- - "%d päeva pärast"
-
- - "1 s tagasi"
- - "%d sekundit tagasi"
-
- - "eile"
- - "%d päeva tagasi"
-
- - "1 sekundi pärast"
- - "%d sekundi pärast"
-
- - "1 sekund tagasi"
- - "%d sekundit tagasi"
-
- - "1 sekundi pärast"
- - "%d sekundi pärast"
-
- - "eile"
- - "%d päeva tagasi"
-
- - "1 minut tagasi"
- - "%d minutit tagasi"
-
- - "1 minut"
- - "%d minutit"
-
- - "homme"
- - "%d päeva pärast"
-
- - "1 tund tagasi"
- - "%d tundi tagasi"
- "%1$s, %2$s"
- - "1 tund"
- - "%d tundi"
-
- - "1 minut tagasi"
- - "%d minutit tagasi"
-
- - "homme"
- - "%d päeva pärast"
-
- - "1 sekund"
- - "%d sekundit"
-
- - "1 tund tagasi"
- - "%d tundi tagasi"
-
- - "1 s tagasi"
- - "%d sekundit tagasi"
-
- - "1 sekund tagasi"
- - "%d sekundit tagasi"
-
- - "eile"
- - "%d päeva tagasi"
-
- - "1 minuti pärast"
- - "%d minuti pärast"
-
- - "1 sekundi pärast"
- - "%d sekundi pärast"
-
- - "1 tunni pärast"
- - "%d tunni pärast"
-
- - "1 tunni pärast"
- - "%d tunni pärast"
-
- - "1 sekundi pärast"
- - "%d sekundi pärast"
-
- - "1 tund tagasi"
- - "%d tundi tagasi"
-
- - "eile"
- - "%d päeva tagasi"
- "kell %s"
- - "homme"
- - "%d päeva pärast"
- "kuupäeval %s"
- - "1 minut"
- - "%d minutit"
-
- - "1 minuti pärast"
- - "%d minuti pärast"
- "%1$s, %2$s"
- - "1 minut tagasi"
- - "%d minutit tagasi"
-
- - "1 tund"
- - "%d tundi"
-
- - "۱ ساعت"
- - "%d ساعت"
- "%1$s، %2$s"
- - "۱ ساعت قبل"
- - "%d ساعت قبل"
- "در %s"
- - "در ۱ دقیقه"
- - "در %d دقیقه"
-
- - "۱ دقیقه"
- - "%d دقیقه"
-
- - "۱ ثانیه"
- - "%d ثانیه"
-
- - "فردا"
- - "در %d روز"
- "در %s"
- - "فردا"
- - "در %d روز"
-
- - "۱ ثانیه قبل"
- - "%d ثانیه قبل"
-
- - "در ۱ ثانیه"
- - "در %d ثانیه"
-
- - "در ۱ ساعت"
- - "در %d ساعت"
-
- - "در ۱ ساعت"
- - "در %d ساعت"
- %2$s، %1$s
- - "ديروز"
- - "%d روز قبل"
-
- - "۱ دقیقه قبل"
- - "%d دقیقه قبل"
-
- - "۱ ساعت قبل"
- - "%d ساعت قبل"
-
- - "۱ دقیقه قبل"
- - "%d دقیقه قبل"
-
- - "۱ ثانیه قبل"
- - "%d ثانیه قبل"
-
- - "در ۱ دقیقه"
- - "در %d دقیقه"
-
- - "در ۱ ثانیه"
- - "در %d ثانیه"
-
- - "ديروز"
- - "%d روز قبل"
-
- - "eilen"
- - "%d päivää sitten"
-
- - "1 minuutti"
- - "%d minuuttia"
-
- - "1 tunnin kuluttua"
- - "%d tunnin kuluttua"
-
- - "1 tunti sitten"
- - "%d tuntia sitten"
-
- - "1 s sitten"
- - "%d s sitten"
-
- - "1 minuutin kuluttua"
- - "%d minuutin kuluttua"
-
- - "huomenna"
- - "%d päivän kuluttua"
-
- - "1 s kuluttua"
- - "%d sekunnin kuluttua"
-
- - "eilen"
- - "%d päivää sitten"
- "päivä: %s"
- - "1 sekunti sitten"
- - "%d sekuntia sitten"
-
- - "1 min sitten"
- - "%d min sitten"
-
- - "1 sekunti"
- - "%d sekuntia"
-
- - "huomenna"
- - "%d päivän kuluttua"
-
- - "1 tunti sitten"
- - "%d tuntia sitten"
-
- - "1 tunnin kuluttua"
- - "%d tunnin kuluttua"
-
- - "1 tunti"
- - "%d tuntia"
- "%1$s, %2$s"
- - "1 min kuluttua"
- - "%d min kuluttua"
- %2$s %1$s"klo %s"
- - "1 minuutti sitten"
- - "%d minuuttia sitten"
-
- - "1 sekunnin kuluttua"
- - "%d sekunnin kuluttua"
- %2$s %1$s
- - "demain"
- - "dans %d jours"
- "le %s"
- - "demain"
- - "dans %d jours"
-
- - "dans 1 minute"
- - "dans %d minutes"
-
- - "il y a 1 seconde"
- - "il y a %d secondes"
-
- - "il y a 1 heure"
- - "Il y a %d heures"
-
- - "1 heure"
- - "%d heures"
- %1$s à %2$s
- - "1 seconde"
- - "%d secondes"
- "à %s"
- - "il y a 1 heure"
- - "Il y a %d heures"
-
- - "il y a 1 minute"
- - "il y a %d minutes"
-
- - "1 minute"
- - "%d minutes"
-
- - "Il y a 1 minute"
- - "Il y a %d minutes"
-
- - "hier"
- - "Il y a %d jours"
-
- - "dans 1 seconde"
- - "dans %d secondes"
-
- - "hier"
- - "Il y a %d jours"
- "%1$s, %2$s"
- - "dans 1 heure"
- - "dans %d heures"
-
- - "Il y a 1 seconde"
- - "Il y a %d secondes"
-
- - "dans 1 seconde"
- - "dans %d secondes"
-
- - "dans 1 minute"
- - "dans %d minutes"
-
- - "dans 1 heure"
- - "dans %d heures"
-
- - "dans 1 seconde"
- - "dans %d secondes"
-
- - "1 heure"
- - "%d heures"
- "à %s"
- - "1 seconde"
- - "%d secondes"
-
- - "dans 1 minute"
- - "dans %d minutes"
-
- - "dans 1 heure"
- - "dans %d heures"
-
- - "Il y a 1 minute"
- - "Il y a %d minutes"
-
- - "Il y a 1 heure"
- - "il y a %d heures"
-
- - "1 minute"
- - "%dminutes"
-
- - "dans 1 heure"
- - "dans %d heures"
- "%1$s, %2$s"
- - "hier"
- - "il y a %d jours"
-
- - "il y a 1 min"
- - "il y a %d minutes"
-
- - "demain"
- - "dans %d jours"
-
- - "Il y a 1 h."
- - "il y a %d heures"
-
- - "il y a 1 seconde"
- - "Il y a %d secondes"
-
- - "il y a 1 seconde"
- - "il y a %d secondes"
-
- - "hier"
- - "il y a %d jours"
-
- - "dans 1 minute"
- - "dans %d minutes"
- "le %s"
- - "dans 1 seconde"
- - "dans %d secondes"
-
- - "demain"
- - "dans %d jours"
-
- - "1 मिनट पहले"
- - "%d मिनट पहले"
-
- - "1 मिनट में"
- - "%d मिनट में"
-
- - "1 घंटा"
- - "%d घंटे"
-
- - "बीता कल"
- - "%d दिन पहले"
-
- - "1 घंटे में"
- - "%d घंटे में"
- "%1$s, %2$s"
- - "1 सेकंड"
- - "%d सेकंड"
-
- - "बीता कल"
- - "%d दिन पहले"
- %2$s %1$s"%s को"
- - "1 सेकंड में"
- - "%d सेकंड में"
-
- - "1 घंटे पहले"
- - "%d घंटे पहले"
-
- - "1 घंटे में"
- - "%d घंटे में"
- "%s पर"
- - "1 मिनट पहले"
- - "%d मिनट पहले"
-
- - "1 सेकंड में"
- - "%d सेकंड में"
-
- - "आने वाला कल"
- - "%d दिन में"
-
- - "आने वाला कल"
- - "%d दिन में"
-
- - "1 मिनट"
- - "%d मिनट"
-
- - "1 मिनट में"
- - "%d मिनट में"
-
- - "1 सेकंड पहले"
- - "%d सेकंड पहले"
-
- - "1 सेकंड पहले"
- - "%d सेकंड पहले"
-
- - "1 घंटे पहले"
- - "%d घंटे पहले"
- %2$s %1$s
- - "jučer"
- - "Prije %d dana"
-
- - "sutra"
- - "za sljedeći broj dana: %d"
-
- - "za 1 min"
- - "za %d min"
-
- - "sutra"
- - "za sljedeći broj dana: %d"
-
- - "prije 1 minutu"
- - "Prije %d min"
-
- - "Prije 1 sata"
- - "Prije %d h"
-
- - "Prije 1 sat"
- - "Prije %d h"
- %2$s %1$s
- - "1 sat"
- - "%d h"
- "%1$s, %2$s"
- - "Prije 1 min"
- - "Prije %d min"
-
- - "za 1 sat"
- - "za sljedeći broj sati: %d"
-
- - "jučer"
- - "Prije %d dana"
- "dana %s"
- - "za 1 minutu"
- - "za sljedeći broj minuta: %d"
-
- - "za 1 s"
- - "za %d s"
-
- - "za 1 sat"
- - "za %d h"
-
- - "za 1 sekundu"
- - "za %d s"
- "u %s"
- - "Prije 1 sekundu"
- - "prije %d s"
-
- - "1 min"
- - "%d min"
-
- - "1 s"
- - "%d s"
-
- - "Prije 1 s"
- - "Prije %d s"
- %2$s %1$s
- - "1 órája"
- - "%d órája"
- "%1$s, %2$s"
- - "1 óra múlva"
- - "%d óra múlva"
-
- - "1 perce"
- - "%d perce"
-
- - "1 másodperce"
- - "%d másodperce"
-
- - "1 perc"
- - "%d perc"
-
- - "tegnap"
- - "%d napja"
-
- - "holnap"
- - "%d nap múlva"
- %2$s %1$s
- - "1 perce"
- - "%d perce"
-
- - "1 óra múlva"
- - "%d óra múlva"
-
- - "tegnap"
- - "%d napja"
-
- - "1 másodperc múlva"
- - "%d másodperc múlva"
-
- - "1 másodperc múlva"
- - "%d másodperc múlva"
- "e napon: %s"
- - "1 óra"
- - "%d óra"
-
- - "1 másodperce"
- - "%d másodperce"
-
- - "1 órája"
- - "%d órája"
-
- - "1 perc múlva"
- - "%d perc múlva"
-
- - "1 másodperc"
- - "%d másodperc"
- "%s"
- - "1 perc múlva"
- - "%d perc múlva"
-
- - "holnap"
- - "%d nap múlva"
- %1$s, %2$s"%1$s, %2$s""%s-ին"
- - "1 ժամ առաջ"
- - "%d ժամ առաջ"
-
- - "վաղը"
- - "%d օրից"
- "ժամը %s-ին"
- - "1 վայրկյանից"
- - "%d վայրկյանից"
-
- - "1 ժամից"
- - "%d ժամից"
-
- - "1 րոպեից"
- - "%d րոպեից"
-
- - "1 րոպե առաջ"
- - "%d րոպե առաջ"
-
- - "1 վայրկյան"
- - "%d վայրկյան"
-
- - "1 ժամ"
- - "%d ժամ"
-
- - "1 վրկ առաջ"
- - "%d վրկ. առաջ"
-
- - "երեկ"
- - "%d օր առաջ"
-
- - "1 վրկ-ից"
- - "%d վրկ-ից"
-
- - "1 ժամ առաջ"
- - "%d ժամ առաջ"
-
- - "1 րոպե առաջ"
- - "%d րոպե առաջ"
-
- - "1 րոպեից"
- - "%d րոպեից"
-
- - "վաղը"
- - "%d օրից"
-
- - "երեկ"
- - "%d օր առաջ"
-
- - "1 ժամից"
- - "%d ժամից"
-
- - "1 րոպե"
- - "%d րոպե"
-
- - "1 վայրկյան առաջ"
- - "%d վայրկյան առաջ"
-
- - "1 ժամ առաջ"
- - "%d ժամ առաջ"
- "ժամը %s-ին"
- - "1 րոպե առաջ"
- - "%d րոպե առաջ"
- "%s-ին"
- - "1 րոպեից"
- - "%d րոպեից"
-
- - "1 րոպե առաջ"
- - "%d րոպե առաջ"
-
- - "1 վրկ-ից"
- - "%d վրկ-ից"
-
- - "1 ժամից"
- - "%d ժամից"
-
- - "1 ժամ առաջ"
- - "%d ժամ առաջ"
-
- - "վաղը"
- - "%d օրից"
-
- - "1 ժամ"
- - "%d ժամ"
-
- - "երեկ"
- - "%d օր առաջ"
-
- - "1 ժամից"
- - "%d ժամից"
-
- - "երեկ"
- - "%d օր առաջ"
-
- - "1 վայրկյան առաջ"
- - "%d վայրկյան առաջ"
-
- - "1 րոպեից"
- - "%d րոպեից"
-
- - "1 րոպե"
- - "%d րոպե"
-
- - "1 վայրկյան"
- - "%d վայրկյան"
-
- - "վաղը"
- - "%d օրից"
-
- - "1 վայրկյանից"
- - "%d վայրկյանից"
- "%1$s, %2$s"
- - "1 վրկ առաջ"
- - "%d վրկ. առաջ"
-
- - "1 detik"
- - "%d detik"
-
- - "1 menit yang lalu"
- - "%d menit yang lalu"
-
- - "1 menit yang lalu"
- - "%d menit yang lalu"
-
- - "kemarin"
- - "%d hari yang lalu"
-
- - "1 detik yang lalu"
- - "%d detik yang lalu"
-
- - "dalam 1 detik"
- - "dalam %d detik"
- "pada %s"%2$s %1$s
- - "dalam 1 jam"
- - "dalam %d jam"
-
- - "besok"
- - "dalam %d hari"
-
- - "1 menit"
- - "%d menit"
-
- - "1 detik lalu"
- - "%d detik yang lalu"
-
- - "1 jam"
- - "%d jam"
-
- - "dalam 1 menit"
- - "dalam %d menit"
-
- - "besok"
- - "dalam %d hari"
-
- - "dalam 1 menit"
- - "dalam %d menit"
- "pada %s"
- - "kemarin"
- - "%d hari yang lalu"
-
- - "1 jam yang lalu"
- - "%d jam yang lalu"
-
- - "1 jam yang lalu"
- - "%d jam yang lalu"
- "%1$s, %2$s"
- - "dalam 1 detik"
- - "dalam %d detik"
-
- - "dalam 1 jam"
- - "dalam %d jam"
- %2$s %1$s%2$s %1$s
- - "tra 1 sec"
- - "tra %d sec"
-
- - "ieri"
- - "%d giorni fa"
-
- - "1 ora fa"
- - "%d ore fa"
-
- - "tra 1 min"
- - "tra %d min"
-
- - "1 ora fa"
- - "%d ore fa"
-
- - "1 secondo fa"
- - "%d secondi fa"
-
- - "domani"
- - "tra %d giorni"
-
- - "domani"
- - "tra %d giorni"
-
- - "1 ora"
- - "%d ore"
-
- - "1 min fa"
- - "%d min fa"
-
- - "tra 1 minuto"
- - "tra %d minuti"
-
- - "tra 1 ora"
- - "tra %d ore"
-
- - "1 minuto fa"
- - "%d minuti fa"
-
- - "1 sec fa"
- - "%d sec fa"
- "%1$s, %2$s""in data %s"
- - "ieri"
- - "%d giorni fa"
-
- - "1 secondo"
- - "%d secondi"
- "alle ore %s"
- - "1 minuto"
- - "%d minuti"
-
- - "tra 1 secondo"
- - "tra %d secondi"
-
- - "tra 1 ora"
- - "tra %d ore"
-
- - "שנייה אחת"
- - "%d שניות"
-
- - "דקה אחת"
- - "%d דקות"
-
- - "אתמול"
- - "לפני %d ימים"
-
- - "בעוד שנייה אחת"
- - "תוך %d שניות"
-
- - "לפני שעה"
- - "לפני %d שעות"
-
- - "לפני שעה"
- - "לפני %d שעות"
-
- - "תוך דקה אחת"
- - "תוך %d דקות"
-
- - "אתמול"
- - "לפני %d ימים"
-
- - "מחר"
- - "בעוד %d ימים"
-
- - "לפני שנייה אחת"
- - "לפני %d שניות"
- %2$s %1$s
- - "בעוד דקה אחת"
- - "תוך %d דקות"
-
- - "שעה אחת"
- - "%d שעות"
- "בתאריך %s"
- - "לפני דקה אחת"
- - "לפני %d דקות"
- "בשעה %s"
- - "תוך שנייה אחת"
- - "תוך %d שניות"
-
- - "לפני שנייה אחת"
- - "לפני %d שניות"
-
- - "תוך שעה אחת"
- - "תוך %d שעות"
-
- - "תוך שעה אחת"
- - "תוך %d שעות"
-
- - "לפני דקה"
- - "לפני %d דקות"
- "%1$s, %2$s"
- - "מחר"
- - "בעוד %d ימים"
- "%1$s %2$s"
- - "1分前"
- - "%d分前"
-
- - "1時間後"
- - "%d時間後"
-
- - "1時間後"
- - "%d時間後"
- %1$s %2$s
- - "1分後"
- - "%d分後"
-
- - "明日"
- - "%d日後"
-
- - "1分前"
- - "%d分前"
-
- - "1時間前"
- - "%d時間前"
- "%s"
- - "明日"
- - "%d日後"
-
- - "1時間"
- - "%d時間"
-
- - "1分後"
- - "%d分後"
-
- - "1秒後"
- - "%d秒後"
-
- - "1秒前"
- - "%d秒前"
-
- - "1時間前"
- - "%d時間前"
-
- - "1秒"
- - "%d秒"
-
- - "昨日"
- - "%d日前"
- "%s"
- - "1秒前"
- - "%d秒前"
-
- - "昨日"
- - "%d日前"
-
- - "1分"
- - "%d分"
-
- - "1秒後"
- - "%d秒後"
- "თარიღი: %s"
- - "გუშინ"
- - "%d დღის წინ"
-
- - "ხვალ"
- - "%d დღეში"
-
- - "1 წამში"
- - "%d წამში"
-
- - "1 საათში"
- - "%d საათში"
-
- - "1 წუთში"
- - "%d წუთში"
-
- - "1 წუთის უკან"
- - "%d წუთის წინ"
-
- - "1 წუთში"
- - "%d წუთში"
-
- - "გუშინ"
- - "%d დღის წინ"
-
- - "ხვალ"
- - "%d დღეში"
-
- - "1 წუთის წინ"
- - "%d წუთის წინ"
-
- - "1 წამი"
- - "%d წამი"
-
- - "1 წუთი"
- - "%d წუთი"
- "%s-ზე"
- - "1 წამის წინ"
- - "%d წამის წინ"
-
- - "1 საათში"
- - "%d საათში"
-
- - "1 საათის წინ"
- - "%d საათის წინ"
-
- - "1 წმ. წინ"
- - "%d წამის წინ"
- "%1$s, %2$s"
- - "1 საათი"
- - "%d საათში"
-
- - "1 წამში"
- - "%d წამის წინ"
-
- - "1 საათის წინ"
- - "%d საათის წინ"
-
- - "1 წუთის უკან"
- - "%d წუთის წინ"
-
- - "გუშინ"
- - "%d დღის წინ"
-
- - "1 წამის წინ"
- - "%d წამის წინ"
-
- - "1 წუთის წინ"
- - "%d წუთის წინ"
-
- - "1 წამში"
- - "%d წამის წინ"
-
- - "1 საათში"
- - "%d საათში"
-
- - "1 წუთი"
- - "%d წუთი"
-
- - "1 წამი"
- - "%d წამი"
-
- - "1 წუთში"
- - "%d წუთში"
- "%1$s, %2$s"
- - "ხვალ"
- - "%d დღეში"
-
- - "1 წუთში"
- - "%d წუთში"
-
- - "1 საათი"
- - "%d საათში"
- "%s-ზე"
- - "1 საათში"
- - "%d საათში"
-
- - "1 საათის წინ"
- - "%d საათის წინ"
-
- - "1 წმ. წინ"
- - "%d წამის წინ"
-
- - "გუშინ"
- - "%d დღის წინ"
-
- - "ხვალ"
- - "%d დღეში"
-
- - "1 წამში"
- - "%d წამში"
- "თარიღი: %s"
- - "1 საათის წინ"
- - "%d საათის წინ"
-
- - "ក្នុងរយៈពេល ១ ម៉ោង"
- - "ក្នុងរយៈពេល %d ម៉ោង"
-
- - "១ នាទីមុន"
- - "%d នាទីមុន"
-
- - "ក្នុងរយៈពេល ១ នាទី"
- - "រយៈពេល %d នាទី"
-
- - "ក្នុងពេល 1 នាទី"
- - "នៅរយៈពេល %d នាទី"
-
- - "១ នាទី"
- - "%d នាទី"
-
- - "ម្សិលមិញ"
- - "%d ថ្ងៃមុន"
- "%1$s, %2$s"
- - "១ ម៉ោងមុន"
- - "%d ម៉ោងមុន"
- "នៅម៉ោង %s"
- - "១ នាទីមុន"
- - "%d នាទីមុន"
-
- - "ម្សិលមិញ"
- - "%d ថ្ងៃមុន"
-
- - "1 វិនាទី"
- - "%d វិនាទី"
-
- - "ក្នុងរយៈពេល ១ វិនាទី"
- - "ក្នុងរយៈពេល %d វិនាទី"
- "នៅ %s"
- - "ថ្ងៃស្អែក"
- - "រយៈពេល %d ថ្ងៃ"
-
- - "រយៈពេល ១ ម៉ោង"
- - "រយៈពេល %d ម៉ោង"
-
- - "១ ម៉ោង"
- - "%d ម៉ោង"
-
- - "ក្នុងពេល 1 វិនាទី"
- - "ក្នុងពេល %d វិនាទី"
-
- - "ថ្ងៃស្អែក"
- - "ក្នុងរយៈពេល %d ថ្ងៃ"
-
- - "១ ម៉ោងមុន"
- - "%d ម៉ោងមុន"
-
- - "១ វិនាទីមុន"
- - "%d វិនាទីមុន"
-
- - "១ វិនាទីមុន"
- - "%d វិនាទីមុន"
-
- - "ក្នុងរយៈពេល ១ វិនាទី"
- - "ក្នុងរយៈពេល %d វិនាទី"
-
- - "ម្សិលមិញ"
- - "%d ថ្ងៃមុន"
-
- - "១ នាទីមុន"
- - "%d នាទីមុន"
-
- - "១ វិនាទីមុន"
- - "%d វិនាទីមុន"
-
- - "១ ម៉ោងមុន"
- - "%d ម៉ោងមុន"
-
- - "១ នាទី"
- - "%d នាទី"
- "នៅម៉ោង %s"
- - "១ វិនាទីមុន"
- - "%d វិនាទីមុន"
-
- - "1 វិនាទី"
- - "%d វិនាទី"
-
- - "ក្នុងរយៈពេល ១ ម៉ោង"
- - "ក្នុងរយៈពេល %d ម៉ោង"
-
- - "ថ្ងៃស្អែក"
- - "រយៈពេល %d ថ្ងៃ"
-
- - "ក្នុងរយៈពេល ១ នាទី"
- - "រយៈពេល %d នាទី"
- "នៅ %s"
- - "ក្នុងពេល 1 នាទី"
- - "នៅរយៈពេល %d នាទី"
- "%1$s, %2$s"
- - "១ ម៉ោងមុន"
- - "%d ម៉ោងមុន"
-
- - "១ ម៉ោង"
- - "%d ម៉ោង"
-
- - "១ នាទីមុន"
- - "%d នាទីមុន"
-
- - "ម្សិលមិញ"
- - "%d ថ្ងៃមុន"
-
- - "រយៈពេល ១ ម៉ោង"
- - "រយៈពេល %d ម៉ោង"
-
- - "ថ្ងៃស្អែក"
- - "ក្នុងរយៈពេល %d ថ្ងៃ"
-
- - "ក្នុងពេល 1 វិនាទី"
- - "ក្នុងពេល %d វិនាទី"
-
- - "1초"
- - "%d초"
-
- - "내일"
- - "%d일 후"
-
- - "1시간 후"
- - "%d시간 후"
-
- - "어제"
- - "%d일 전"
- "%1$s, %2$s"
- - "1초 내"
- - "%d초 후"
-
- - "1시간 전"
- - "%d시간 전"
-
- - "1분 후"
- - "%d분 후"
-
- - "1분 전"
- - "%d분 전"
-
- - "1분 전"
- - "%d분 전"
-
- - "1시간 전"
- - "%d시간 전"
-
- - "어제"
- - "%d일 전"
-
- - "1분"
- - "%d분"
-
- - "내일"
- - "%d일 후"
-
- - "1초 후"
- - "%d초 후"
- "%s"
- - "1분 후"
- - "%d분 후"
-
- - "1초 전"
- - "%d초 전"
-
- - "1시간 후"
- - "%d시간 후"
- %1$s %2$s
- - "1시간"
- - "%d시간"
- "%s"
- - "1초 전"
- - "%d초 전"
-
- - "ມື້ອື່ນ"
- - "ໃນ %d ມື້"
-
- - "1 ຊົ່ວໂມງກ່ອນ"
- - "%d ຊົ່ວໂມງກ່ອນໜ້ານີ້"
-
- - "1 ວິນາທີກ່ອນ"
- - "%d ວິ ກ່ອນໜ້ານີ້"
-
- - "ມື້ອື່ນ"
- - "ໃນ %d ມື້"
-
- - "ໃນອີກ 1 ວິນາທີ"
- - "ໃນ %d ວິນາທີ"
- "ເວລາ %s"
- - "1 ນາທີກ່ອນໜ້ານີ້"
- - "%d ນາທີທີ່ຜ່ານມາ"
- "%1$s, %2$s""ວັນທີ %s"
- - "ໃນ 1 ຊົ່ວໂມງ"
- - "ໃນ %d ຊົ່ວໂມງ"
-
- - "1 ວິນາທີກ່ອນ"
- - "%d ວິນາທີກ່ອນໜ້ານີ້"
-
- - "ໃນ 1 ນາທີ"
- - "ໃນ %d ນາທີ"
-
- - "1 ຊົ່ວໂມງ"
- - "%d ຊົ່ວໂມງ"
-
- - "1 ວິນາທີ"
- - "%d ວິນາທີ"
-
- - "1 ຊົ່ວໂມງກ່ອນໜ້ານີ້"
- - "%d ຊົ່ວໂມງທີ່ຜ່ານມາ"
-
- - "ມື້ວານນີ້"
- - "%d ມື້ກ່ອນ"
-
- - "ໃນ 1 ນາທີ"
- - "ໃນ %d ນທ"
-
- - "1 ນາທີ"
- - "%d ນາທີ"
-
- - "1 ນທ ກ່ອນ"
- - "%d ນທ ກ່ອນໜ້ານີ້"
-
- - "ໃນ 1 ວິ"
- - "ໃນ %d ວິ"
-
- - "ມື້ວານນີ້"
- - "%d ມື້ກ່ອນໜ້ານີ້"
-
- - "ໃນ 1 ຊົ່ວໂມງ"
- - "ໃນ %d ຊົ່ວໂມງ"
-
- - "ມື້ວານນີ້"
- - "%d ມື້ກ່ອນ"
-
- - "1 ວິນາທີກ່ອນ"
- - "%d ວິນາທີກ່ອນໜ້ານີ້"
-
- - "1 ຊົ່ວໂມງກ່ອນ"
- - "%d ຊົ່ວໂມງກ່ອນໜ້ານີ້"
-
- - "1 ວິນາທີ"
- - "%d ວິນາທີ"
-
- - "ມື້ອື່ນ"
- - "ໃນ %d ມື້"
-
- - "1 ນາທີກ່ອນໜ້ານີ້"
- - "%d ນາທີທີ່ຜ່ານມາ"
-
- - "ໃນ 1 ນາທີ"
- - "ໃນ %d ນທ"
-
- - "ມື້ອື່ນ"
- - "ໃນ %d ມື້"
-
- - "ໃນ 1 ຊົ່ວໂມງ"
- - "ໃນ %d ຊົ່ວໂມງ"
- "%1$s, %2$s""ວັນທີ %s"
- - "1 ນາທີ"
- - "%d ນາທີ"
-
- - "ໃນອີກ 1 ວິນາທີ"
- - "ໃນ %d ວິນາທີ"
- "ເວລາ %s"
- - "ມື້ວານນີ້"
- - "%d ມື້ກ່ອນໜ້ານີ້"
-
- - "1 ຊົ່ວໂມງ"
- - "%d ຊົ່ວໂມງ"
-
- - "1 ນທ ກ່ອນ"
- - "%d ນທ ກ່ອນໜ້ານີ້"
-
- - "ໃນ 1 ນາທີ"
- - "ໃນ %d ນາທີ"
-
- - "ໃນ 1 ຊົ່ວໂມງ"
- - "ໃນ %d ຊົ່ວໂມງ"
-
- - "1 ວິນາທີກ່ອນ"
- - "%d ວິ ກ່ອນໜ້ານີ້"
-
- - "ໃນ 1 ວິ"
- - "ໃນ %d ວິ"
-
- - "1 ຊົ່ວໂມງກ່ອນໜ້ານີ້"
- - "%d ຊົ່ວໂມງທີ່ຜ່ານມາ"
-
- - "po 1 sek."
- - "po %d sek."
-
- - "po 1 val."
- - "po %d val."
-
- - "1 min."
- - "%d min."
-
- - "Prieš 1 valandą"
- - "Prieš %d val."
-
- - "1 val."
- - "%d val."
- "%1$s, %2$s"%2$s %1$s"%s""%s"
- - "vakar"
- - "Prieš %d d."
-
- - "rytoj"
- - "po %d d."
-
- - "vakar"
- - "Prieš %d d."
-
- - "po 1 val."
- - "po %d val."
-
- - "po 1 min."
- - "po %d min."
-
- - "Prieš 1 sek."
- - "Prieš %d sek."
-
- - "Prieš 1 min."
- - "Prieš %d min."
-
- - "Prieš 1 sek."
- - "Prieš %d sek."
-
- - "1 sek."
- - "%d sek."
-
- - "rytoj"
- - "po %d d."
-
- - "Prieš 1 valandą"
- - "Prieš %d val."
-
- - "Prieš 1 minutę"
- - "Prieš %d min."
-
- - "po 1 min."
- - "po %d min."
-
- - "po 1 sek."
- - "po %d sek."
- %2$s, %1$s
- - "Pirms 1 min"
- - "Pirms %d min"
-
- - "vakar"
- - "Pirms %d dienas(-ām)"
-
- - "pēc 1 s"
- - "pēc %d s"
-
- - "Pirms 1 sekundes"
- - "Pirms %d s"
-
- - "1 s"
- - "%d s"
-
- - "Pirms 1 sekundes"
- - "Pirms %d sekundes(-ēm)"
-
- - "1 stunda"
- - "%d h"
-
- - "pēc 1 minūtes"
- - "pēc %d minūtes(-ēm)"
-
- - "pēc 1 sekundes"
- - "pēc %d sekundes(-ēm)"
-
- - "pēc 1 min"
- - "pēc %d minūtes(-ēm)"
- "%1$s, %2$s"
- - "Pirms 1 stundas"
- - "Pirms %d stundas(-ām)"
-
- - "pēc 1 stundas"
- - "pēc %d stundas(-ām)"
- "plkst. %s"
- - "Pirms 1 stundas"
- - "Pirms %d stundas(-ām)"
- "šādā datumā: %s"
- - "Pirms 1 minūtes"
- - "Pirms %d minūtes(-ēm)"
-
- - "rītdien"
- - "pēc %d dienas(-ām)"
-
- - "vakar"
- - "Pirms %d dienas(-ām)"
-
- - "1 min"
- - "%d min"
-
- - "pēc 1 stundas"
- - "pēc %d stundas(-ām)"
-
- - "rītdien"
- - "pēc %d dienas(-ām)"
- %2$s %1$s%1$s, %2$s
- - "маргааш"
- - "%d өдрийн дараа"
-
- - "1 мин дараа"
- - "%d минутын дараа"
-
- - "1 цагийн дараа"
- - "%d цагийн дараа"
-
- - "өчигдөр"
- - "%d өдрийн өмнө"
-
- - "1 цаг"
- - "%d цаг"
- "%s""%s"
- - "1 цагийн өмнө"
- - "%d цагийн өмнө"
-
- - "1 цагийн өмнө"
- - "%d цагийн өмнө"
-
- - "1 секундын өмнө"
- - "%d сек дараа"
-
- - "1 секунд"
- - "%d секунд"
-
- - "1 мин өмнө"
- - "%d минутын өмнө"
-
- - "1 сек дараа"
- - "%d сек дараа"
-
- - "1 секундын дараа"
- - "%d секундын дараа"
-
- - "1 минутын өмнө"
- - "%d минутын өмнө"
-
- - "маргааш"
- - "%d өдрийн дараа"
-
- - "өчигдөр"
- - "%d өдрийн өмнө"
- "%1$s, %2$s"
- - "1 секундын өмнө"
- - "%d секундын өмнө"
-
- - "1 цагийн дараа"
- - "%d цагийн дараа"
-
- - "1 минут"
- - "%d минут"
-
- - "1 минутын дараа"
- - "%d минутын дараа"
- "%s"
- - "1 минутын өмнө"
- - "%d минутын өмнө"
-
- - "өчигдөр"
- - "%d өдрийн өмнө"
-
- - "1 цаг"
- - "%d цаг"
-
- - "1 цагийн дараа"
- - "%d цагийн дараа"
-
- - "1 минутын дараа"
- - "%d минутын дараа"
-
- - "маргааш"
- - "%d өдрийн дараа"
-
- - "1 мин өмнө"
- - "%d минутын өмнө"
-
- - "1 цагийн өмнө"
- - "%d цагийн өмнө"
-
- - "1 секундын өмнө"
- - "%d сек дараа"
-
- - "1 минут"
- - "%d минут"
-
- - "1 сек дараа"
- - "%d сек дараа"
-
- - "1 секундын өмнө"
- - "%d секундын өмнө"
-
- - "1 секунд"
- - "%d секунд"
-
- - "1 секундын дараа"
- - "%d секундын дараа"
-
- - "өчигдөр"
- - "%d өдрийн өмнө"
-
- - "1 цагийн өмнө"
- - "%d цагийн өмнө"
- "%s"
- - "маргааш"
- - "%d өдрийн дараа"
-
- - "1 мин дараа"
- - "%d минутын дараа"
-
- - "1 цагийн дараа"
- - "%d цагийн дараа"
- "%1$s, %2$s"
- - "1 minit yang lalu"
- - "%d minit yang lalu"
-
- - "1 jam yang lalu"
- - "%d jam yang lalu"
-
- - "dalam 1 jam"
- - "dalam %d jam"
-
- - "dalam 1 jam"
- - "dalam %d jam"
-
- - "semalam"
- - "%d hari yang lalu"
- "%1$s, %2$s""pada %s"
- - "1 jam yang lalu"
- - "%d jam yang lalu"
- %2$s %1$s
- - "esok"
- - "dalam %d hari"
-
- - "1 minit"
- - "%d minit"
-
- - "dalam 1 minit"
- - "dalam %d minit"
-
- - "semalam"
- - "%d hari yang lalu"
-
- - "dalam 1 saat"
- - "dalam %d saat"
-
- - "esok"
- - "dalam %d hari"
-
- - "1 minit yang lalu"
- - "%d minit yang lalu"
-
- - "dalam 1 minit"
- - "dalam %d minit"
-
- - "dalam 1 saat"
- - "dalam %d saat"
-
- - "1 saat yang lalu"
- - "%d saat yang lalu"
- "pada %s"
- - "1 saat yang lalu"
- - "%d saat yang lalu"
-
- - "1 jam"
- - "%d jam"
-
- - "1 saat"
- - "%d saat"
-
- - "esok"
- - "dalam %d hari"
-
- - "dalam 1 jam"
- - "dalam %d jam"
-
- - "1 jam yang lalu"
- - "%d jam yang lalu"
-
- - "1 jam"
- - "%d jam"
-
- - "1 jam yang lalu"
- - "%d jam yang lalu"
-
- - "semalam"
- - "%d hari yang lalu"
-
- - "dalam 1 jam"
- - "dalam %d jam"
-
- - "esok"
- - "dalam %d hari"
-
- - "dalam 1 saat"
- - "dalam %d saat"
-
- - "1 saat yang lalu"
- - "%d saat yang lalu"
-
- - "dalam 1 saat"
- - "dalam %d saat"
-
- - "dalam 1 minit"
- - "dalam %d minit"
- "%1$s, %2$s"
- - "1 saat"
- - "%d saat"
-
- - "1 minit"
- - "%d minit"
-
- - "semalam"
- - "%d hari yang lalu"
- "pada %s"
- - "1 minit yang lalu"
- - "%d minit yang lalu"
-
- - "dalam 1 minit"
- - "dalam %d minit"
- "pada %s"
- - "1 minit yang lalu"
- - "%d minit yang lalu"
-
- - "1 saat yang lalu"
- - "%d saat yang lalu"
-
- - "om et sekund"
- - "om %d sekunder"
-
- - "i morgen"
- - "om %d d"
- "%1$s, %2$s"
- - "1 sek siden"
- - "%d sek siden"
-
- - "i morgen"
- - "om %d dager"
- "kl. %s"
- - "for en time siden"
- - "for %d timer siden"
-
- - "Én time"
- - "%d timer"
-
- - "om 1 min"
- - "om %d min"
-
- - "Ett minutt"
- - "%d minutter"
-
- - "om et minutt"
- - "om %d timer"
-
- - "1 min siden"
- - "%d min siden"
- %2$s %1$s
- - "i går"
- - "for %d dager siden"
-
- - "om 1 t"
- - "om %d t"
-
- - "Ett sekund"
- - "%d sekunder"
-
- - "for et sekund siden"
- - "for %d sekunder siden"
-
- - "i går"
- - "%d d siden"
-
- - "1 t siden"
- - "%d t siden"
-
- - "om 1 sek"
- - "om %d sek"
- "%s"
- - "for et minutt siden"
- - "for %d minutter siden"
-
- - "om et minutt"
- - "om %d minutter"
-
- - "१ मिनेटमा"
- - "%dमिनेटमा"
-
- - "१ सेकेन्ड अघि"
- - "%d सेकेन्ड अगाडि"
- "%s मा"
- - "१ सेकेन्डमा"
- - "%d सेकेन्डमा"
-
- - "१ घन्टा अघि"
- - "%d घन्टा अघि"
-
- - "१ मिनेटमा"
- - "%d मिनेटमा"
-
- - "१ घन्टा अघि"
- - "%d घन्टा अघि"
-
- - "१ घन्टामा"
- - "%d घन्टामा"
- "%1$s, %2$s""%s मा"
- - "१ मिनेट"
- - "%d मिनेट"
-
- - "हिजो"
- - "%d दिन अघि"
-
- - "हिजो"
- - "%d दिन अघि"
-
- - "१ सेकन्ड"
- - "%d सेकेन्डमा"
-
- - "१ मिनेट अघि"
- - "%d मिनेट अघि"
-
- - "१ सेकेन्ड"
- - "%d सेकेन्ड"
-
- - "१ सेकेन्ड अघि"
- - "%d सेकेन्ड अघि"
-
- - "भोलि"
- - "दिन%d मा"
-
- - "१ घन्टामा"
- - "%d घन्टामा"
-
- - "१ मिनेट अघि"
- - "%d मिनेट अघि"
-
- - "भोलि"
- - "%d दिनमा"
-
- - "१ घन्टा"
- - "%d घन्टा"
-
- - "१ सेकेन्ड"
- - "%d सेकेन्ड"
-
- - "१ सेकन्ड"
- - "%d सेकेन्डमा"
-
- - "१ मिनेट अघि"
- - "%d मिनेट अघि"
-
- - "१ घन्टामा"
- - "%d घन्टामा"
-
- - "१ मिनेट अघि"
- - "%d मिनेट अघि"
- "%s मा"
- - "१ सेकेन्डमा"
- - "%d सेकेन्डमा"
-
- - "१ घन्टा अघि"
- - "%d घन्टा अघि"
- "%s मा"
- - "भोलि"
- - "%d दिनमा"
-
- - "१ घन्टा"
- - "%d घन्टा"
-
- - "हिजो"
- - "%d दिन अघि"
-
- - "१ मिनेटमा"
- - "%d मिनेटमा"
-
- - "१ मिनेटमा"
- - "%dमिनेटमा"
- "%1$s, %2$s"
- - "१ घन्टामा"
- - "%d घन्टामा"
-
- - "हिजो"
- - "%d दिन अघि"
-
- - "भोलि"
- - "दिन%d मा"
-
- - "१ सेकेन्ड अघि"
- - "%d सेकेन्ड अघि"
-
- - "१ घन्टा अघि"
- - "%d घन्टा अघि"
-
- - "१ मिनेट"
- - "%d मिनेट"
-
- - "१ सेकेन्ड अघि"
- - "%d सेकेन्ड अगाडि"
-
- - "over 1 uur"
- - "over %d uur"
-
- - "1 uur"
- - "%d uur"
-
- - "1 uur geleden"
- - "%d uur geleden"
- %2$s %1$s"op %s"
- - "1 uur geleden"
- - "%d uur geleden"
-
- - "gisteren"
- - "%d dagen geleden"
-
- - "morgen"
- - "over %d dagen"
-
- - "1 seconde geleden"
- - "%d seconden geleden"
- "om %s"
- - "over 1 minuut"
- - "over %d minuten"
-
- - "1 minuut"
- - "%d minuten"
-
- - "1 minuut geleden"
- - "%d minuten geleden"
-
- - "over 1 minuut"
- - "over %d minuten"
-
- - "1 minuut geleden"
- - "%d minuten geleden"
-
- - "1 seconde"
- - "%d seconden"
-
- - "over 1 uur"
- - "over %d uur"
-
- - "over 1 seconde"
- - "over %d seconden"
-
- - "morgen"
- - "over %d dagen"
-
- - "gisteren"
- - "%d dagen geleden"
-
- - "over 1 seconde"
- - "over %d seconden"
- "%1$s, %2$s"
- - "1 seconde geleden"
- - "%d seconden geleden"
- "o godzinie %s"
- - "godzinę temu"
- - "%d godzin temu"
-
- - "za godzinę"
- - "za %d godz."
-
- - "godzinę temu"
- - "%d godz. temu"
- %1$s %2$s"%1$s, %2$s"
- - "1 minutę temu"
- - "%d min. temu"
-
- - "1 minuta"
- - "%d min"
-
- - "za minutę"
- - "za %d min."
-
- - "za godzinę"
- - "za %d godzin"
-
- - "za minutę"
- - "za %d min"
-
- - "jutro"
- - "za %d dni"
-
- - "sekundę temu"
- - "%d sek. temu"
- "w dniu %s"
- - "za sekundę"
- - "za %d s"
-
- - "sekundę temu"
- - "%d s temu"
-
- - "jutro"
- - "za %d dni"
-
- - "wczoraj"
- - "%d dni temu"
-
- - "za sekundę"
- - "za %d sek."
-
- - "1 sekunda"
- - "%d s"
-
- - "minutę temu"
- - "%d min temu"
-
- - "1 godzina"
- - "%d godz."
-
- - "wczoraj"
- - "%d dni temu"
-
- - "Uma hora"
- - "%d horas"
-
- - "em 1 minuto"
- - "em %d minutos"
-
- - "em 1 hora"
- - "Em %d horas"
-
- - "1 minuto atrás"
- - "%d minutos atrás"
-
- - "Um minuto"
- - "%d minutos"
-
- - "em 1 segundo"
- - "em %d segundos"
-
- - "amanhã"
- - "em %d dias"
-
- - "1 seg. atrás"
- - "%d segundos atrás"
- "às %s"
- - "1 minuto atrás"
- - "%d minutos atrás"
- %2$s %1$s"em %s"
- - "ontem"
- - "%d dias atrás"
-
- - "em 1 minuto"
- - "em %d minutos"
-
- - "em 1 hora"
- - "em %d horas"
-
- - "amanhã"
- - "em %d dias"
-
- - "em 1 segundo"
- - "em %d segundos"
-
- - "1 hora atrás"
- - "%d horas atrás"
-
- - "Um segundo"
- - "%d segundos"
-
- - "ontem"
- - "%d dias atrás"
-
- - "1 segundo atrás"
- - "%d segundos atrás"
- "%1$s, %2$s"
- - "1 hora atrás"
- - "%d horas atrás"
-
- - "há 1 min"
- - "Há %d min"
-
- - "1 segundo"
- - "%d segundos"
-
- - "amanhã"
- - "daqui a %d dias"
-
- - "daqui a 1 hora"
- - "em %d horas"
- %2$s %1$s
- - "daqui a 1 hora"
- - "daqui a %d horas"
-
- - "1 minuto"
- - "%d minutos"
-
- - "ontem"
- - "Há %d dias"
-
- - "daqui a 1 seg"
- - "daqui a %d seg"
-
- - "Há 1 hora"
- - "Há %d horas"
-
- - "Há 1 seg"
- - "Há %d seg"
-
- - "daqui a 1 segundo"
- - "daqui a %d segundos"
-
- - "daqui a 1 min"
- - "daqui a %d min"
-
- - "amanhã"
- - "daqui a %d dias"
- "a %s"
- - "ontem"
- - "Há %d dias"
-
- - "Há 1 hora"
- - "Há %d horas"
- "às %s"
- - "daqui a 1 minuto"
- - "daqui a %d minutos"
-
- - "Há 1 segundo"
- - "Há %d segundos"
-
- - "1 hora"
- - "%d horas"
- "%1$s, %2$s"
- - "Há 1 minuto"
- - "Há %d minutos"
-
- - "en 1 minuta"
- - "en %d minutas"
- "il(s) %s"
- - "en 1 ura"
- - "en %d uras"
- "\"%1$s, %2$s\""
- - "avant 1 ura"
- - "Avant %d uras"
-
- - "en 1 secunda"
- - "en %d secundas"
-
- - "ier"
- - "Avant %d dis"
-
- - "en 1 minuta"
- - "en %d minutas"
- "las %s"
- - "avant 1 minuta"
- - "avant %d minutas"
-
- - "Avant 1 minuta"
- - "Avant %d minutas"
-
- - "en 1 secunda"
- - "en %d secundas"
-
- - "Avant 1 secunda"
- - "Avant %d secundas"
-
- - "Avant 1 ura"
- - "Avant %d uras"
-
- - "damaun"
- - "en %d dis"
-
- - "en 1 ura"
- - "en %d uras"
-
- - "avant 1 secunda"
- - "avant %d secundas"
-
- - "ier"
- - "Avant %d dis"
-
- - "damaun"
- - "en %d dis"
- %1$s, %2$s
- - "ieri"
- - "cu %d (de) zile în urmă"
-
- - "cu 1 oră în urmă"
- - "cu %d (de) ore în urmă"
-
- - "în 1 oră"
- - "în %d (de) ore"
-
- - "ieri"
- - "cu %d (de) zile în urmă"
- %2$s, %1$s
- - "în 1 sec."
- - "în %d (de) sec."
-
- - "cu 1 sec. în urmă"
- - "cu %d (de) secunde în urmă"
- "%1$s, %2$s""la %s"
- - "cu 1 min. în urmă"
- - "cu %d (de) min. în urmă"
-
- - "în 1 oră"
- - "în %d (de) ore"
-
- - "cu 1 secundă în urmă"
- - "cu %d (de) secunde în urmă"
- "pe %s"
- - "mâine"
- - "în %d (de) zile"
-
- - "într-o secundă"
- - "în %d (de) secunde"
-
- - "O oră"
- - "%d (de) ore"
-
- - "în 1 min."
- - "în %d (de) min."
-
- - "cu 1 oră în urmă"
- - "cu %d (de) ore în urmă"
-
- - "cu 1 minut în urmă"
- - "cu %d (de) minute în urmă"
-
- - "mâine"
- - "în %d (de) zile"
-
- - "în 1 minut"
- - "în %d (de) minute"
-
- - "O secundă"
- - "%d (de) secunde"
-
- - "Un minut"
- - "%d (de) minute"
- %2$s, %1$s"%s"
- - "через 1 минуту"
- - "через %d мин."
- %2$s, %1$s
- - "вчера"
- - "%d дн. назад"
-
- - "завтра"
- - "через %d дн."
-
- - "1 минуту назад"
- - "%d мин. назад"
-
- - "через 1 мин."
- - "через %d мин."
-
- - "1 сек. назад"
- - "%d сек. назад"
-
- - "1 секунду назад"
- - "%d с. назад"
-
- - "через 1 секунду"
- - "через %d с."
-
- - "1 час назад"
- - "%d ч. назад"
-
- - "1 мин. назад"
- - "%d мин. назад"
- "%1$s, %2$s"
- - "1 сек."
- - "%d сек."
-
- - "через 1 час"
- - "через %d ч."
-
- - "вчера"
- - "%d дн. назад"
-
- - "1 час назад"
- - "%d ч. назад"
-
- - "через 1 с."
- - "через %d с."
-
- - "через 1 час"
- - "через %d ч."
-
- - "1 ч."
- - "%d ч."
- "в %s"
- - "завтра"
- - "через %d дн."
-
- - "1 мин."
- - "%d мин."
-
- - "පැය 1 කට පෙර"
- - "පැය %d කට පෙර"
-
- - "තත්පර 1 කින්"
- - "තත්පර %d කදී"
-
- - "තත්පර 1 ක් තුළ"
- - "තත්පර %d ක් තුළ"
-
- - "හෙට"
- - "දින %d ක් තුළ"
-
- - "මිනිත්තු 1 කට පෙර"
- - "මිනිත්තු %d ට පෙර"
-
- - "තත්පර 1"
- - "තත්පර %d"
-
- - "මිනිත්තු 1"
- - "මිනිත්තු %d"
-
- - "හෙට"
- - "දින %d ක් තුළ"
-
- - "තත්පර 1 කට පෙර"
- - "තත්පර %d ට පෙර"
-
- - "ඊයේ"
- - "දින %d ට පෙර"
-
- - "පැය 1 ක් තුළ"
- - "පැය %d ක් තුළ"
-
- - "මිනිත්තු 1 ට පෙර"
- - "මිනිත්තු %d කට පෙර"
-
- - "ඊයේ"
- - "දින %d කට පෙර"
- "%s වන දා"
- - "මිනිත්තු 1 ක් තුළ"
- - "මිනිත්තු %d ක් තුළ"
-
- - "තත්පර 1 කට පෙර"
- - "තත්පර %d කට පෙර"
-
- - "පැය 1 ක් තුළ"
- - "පැය %d ක් තුළ"
- "%1$s, %2$s"
- - "මිනිත්තු 1 කදී"
- - "මිනිත්තු %d ක් තුළ"
-
- - "පැය 1 කට පෙර"
- - "පැය %d ට පෙර"
- "%s ට"
- - "පැය 1"
- - "පැය %d ක්"
-
- - "තත්පර 1 කට පෙර"
- - "තත්පර %d ට පෙර"
-
- - "මිනිත්තු 1 කට පෙර"
- - "මිනිත්තු %d ට පෙර"
-
- - "තත්පර 1 කට පෙර"
- - "තත්පර %d කට පෙර"
-
- - "පැය 1"
- - "පැය %d ක්"
-
- - "පැය 1 ක් තුළ"
- - "පැය %d ක් තුළ"
-
- - "තත්පර 1 ක් තුළ"
- - "තත්පර %d ක් තුළ"
- "%s ට"
- - "පැය 1 කට පෙර"
- - "පැය %d ට පෙර"
- "%s වන දා"
- - "පැය 1 කට පෙර"
- - "පැය %d කට පෙර"
-
- - "මිනිත්තු 1 ට පෙර"
- - "මිනිත්තු %d කට පෙර"
-
- - "ඊයේ"
- - "දින %d ට පෙර"
-
- - "මිනිත්තු 1"
- - "මිනිත්තු %d"
-
- - "හෙට"
- - "දින %d ක් තුළ"
-
- - "හෙට"
- - "දින %d ක් තුළ"
-
- - "පැය 1 ක් තුළ"
- - "පැය %d ක් තුළ"
- "%1$s, %2$s"
- - "තත්පර 1 කින්"
- - "තත්පර %d කදී"
-
- - "ඊයේ"
- - "දින %d කට පෙර"
-
- - "මිනිත්තු 1 කදී"
- - "මිනිත්තු %d ක් තුළ"
-
- - "මිනිත්තු 1 ක් තුළ"
- - "මිනිත්තු %d ක් තුළ"
-
- - "තත්පර 1"
- - "තත්පර %d"
-
- - "o 1 min."
- - "o %d min."
-
- - "pred 1 min."
- - "pred %d min."
- "%1$s, %2$s"
- - "včera"
- - "pred %d dňami"
-
- - "zajtra"
- - "o %d dní"
-
- - "Pred minútou"
- - "pred %d minútami"
-
- - "o 1 minútu"
- - "o %d minút"
-
- - "pred 1 hodinou"
- - "pred %d hodinami"
-
- - "pred 1 s"
- - "pred %d s"
-
- - "1 s"
- - "%d s"
-
- - "o 1 hodinu"
- - "o %d hodín"
- "dňa %s"
- - "1 hod."
- - "%d hod."
-
- - "o 1 sekundu"
- - "o %d s"
- %2$s %1$s
- - "o 1 hodinu"
- - "o %d hodín"
-
- - "zajtra"
- - "o %d dní"
-
- - "1 min."
- - "%d min."
-
- - "včera"
- - "pred %d dňami"
- "o %s"
- - "pred 1 sekundou"
- - "pred %d s"
-
- - "pred 1 hodinou"
- - "pred %d hodinami"
-
- - "o 1 s"
- - "o %d s"
- %2$s %1$s
- - "1 sekunda"
- - "%d s"
-
- - "1 minuta"
- - "%d min"
-
- - "čez 1 min"
- - "čez %d minut"
-
- - "Pred 1 sekundo"
- - "pred toliko sekundami: %d"
-
- - "čez 1 uro"
- - "čez %d ur"
- "%1$s, %2$s"%2$s %1$s
- - "pred 1 minuto"
- - "Pred %d minutami"
-
- - "pred 1 uro"
- - "Pred %d urami"
-
- - "včeraj"
- - "Pred %d dnevi"
-
- - "včeraj"
- - "Pred %d dnevi"
-
- - "pred 1 uro"
- - "Pred %d urami"
-
- - "čez 1 sekundo"
- - "Čez %d sekund"
-
- - "jutri"
- - "čez %d dni"
-
- - "pred 1 sekundo"
- - "Pred toliko sekundami: %d"
-
- - "jutri"
- - "čez %d dni"
- "vsak %s""ob %s"
- - "čez 1 sekundo"
- - "čez toliko sekund: %d"
-
- - "čez 1 minuto"
- - "Čez toliko minut: %d."
-
- - "1 ura"
- - "%d h"
-
- - "čez 1 uro"
- - "čez %d ur"
-
- - "pred 1 minuto"
- - "Pred %d minutami"
- %2$s, %1$s%2$s %1$s
- - "за 1 секунду"
- - "за %d секунде(и)"
-
- - "за 1 мин"
- - "за %d мин"
-
- - "Пре 1 секунде"
- - "пре %d секунде(и)"
-
- - "јуче"
- - "пре %d дана"
-
- - "Пре једног минута"
- - "пре %d минута"
-
- - "за 1 сат"
- - "за %d сата(и)"
- "дана %s"
- - "Пре један мин"
- - "пре %d мин"
-
- - "за 1 сек"
- - "за %d сек"
- "%1$s, %2$s"
- - "1 секунда"
- - "Секунди: %d"
- "у %s"
- - "сутра"
- - "за %d дана"
-
- - "Пре сат времена"
- - "пре %d сата(и)"
-
- - "за 1 минут"
- - "за %d минута"
-
- - "за 1 сат"
- - "за %d сата(и)"
-
- - "Пре сат времена"
- - "пре %d сата(и)"
-
- - "1 минут"
- - "%d минута"
-
- - "сутра"
- - "за %d дана"
-
- - "јуче"
- - "пре %d дана"
-
- - "1 сат"
- - "Сати: %d"
-
- - "Пре једне сек"
- - "пре %d сек"
- %2$s %1$s"%1$s, %2$s"
- - "om 1 timme"
- - "om %d timmar"
-
- - "om 1 minut"
- - "om %d minuter"
-
- - "för 1 timme sedan"
- - "för %d timmar sedan"
- "kl. %s"
- - "för 1 sek sedan"
- - "för %d sekunder sedan"
-
- - "för 1 sekund sedan"
- - "för %d sekunder sedan"
-
- - "om 1 minut"
- - "om %d minuter"
-
- - "om 1 sekund"
- - "om %d sekunder"
-
- - "1 timme"
- - "%d timmar"
- "den %s"
- - "för 1 minut sedan"
- - "för %d minuter sedan"
-
- - "om 1 sekund"
- - "om %d sek"
- %2$s %1$s
- - "för 1 timme sedan"
- - "för %d timmar sedan"
-
- - "imorgon"
- - "om %d dagar"
-
- - "1 minut"
- - "%d minuter"
-
- - "för 1 minut sedan"
- - "för %d minuter sedan"
-
- - "igår"
- - "%d dagar sedan"
-
- - "1 sekund"
- - "%d sekunder"
-
- - "om 1 timme"
- - "om %d timmar"
-
- - "igår"
- - "för %d dagar sedan"
-
- - "imorgon"
- - "om %d dagar"
-
- - "kesho"
- - "katika siku %d"
-
- - "jana"
- - "siku %d zilizopita"
-
- - "kesho"
- - "kati ya siku %d"
- "Saa %s"
- - "kati ya sekunde 1"
- - "kati ya sekunde %d"
-
- - "jana"
- - "siku %d zilizopita"
-
- - "Saa 1"
- - "Saa %d"
- %2$s %1$s
- - "kati ya saa 1"
- - "kati ya saa %d"
-
- - "kati ya sekunde 1"
- - "kati ya sekunde %d"
-
- - "Sekunde 1 iliyopita"
- - "Sekunde %d zilizopita"
- "tarehe %s"
- - "baada ya dakika 1"
- - "kati ya dakika%d"
-
- - "Dakika 1"
- - "Dakika %d"
- "%1$s, %2$s"
- - "Sekunde 1 iliopita"
- - "sekunde %d zilizopita"
-
- - "Saa 1 iliyopita"
- - "Saa %d zilizopita"
-
- - "kati ya dakika 1"
- - "katika dakika %d"
-
- - "Dakika 1 iliyopita"
- - "Dakika %d zilizopita"
-
- - "Dakika 1 iliyopita"
- - "Dakika %d zilizopita"
-
- - "Saa 1 iliyopita"
- - "Saa %d zilizopita"
-
- - "kati ya saa 1"
- - "katika saa %d"
-
- - "Sekunde 1"
- - "Sekunde %d"
-
- - "1 นาทีที่ผ่านมา"
- - "%d นาทีที่ผ่านมา"
-
- - "ใน 1 วินาที"
- - "ใน %d วินาที"
- %2$s, %1$s
- - "1 วินาที"
- - "%d วินาที"
-
- - "พรุ่งนี้"
- - "ใน %d วัน"
-
- - "1 ชั่วโมงที่ผ่านมา"
- - "%d ชั่วโมงที่ผ่านมา"
-
- - "1 วินาทีที่แล้ว"
- - "%d วินาทีที่ผ่านมา"
-
- - "ใน 1 นาที"
- - "ใน %d นาที"
-
- - "ใน 1 นาที"
- - "ใน %d นาที"
-
- - "ใน 1 ชั่วโมง"
- - "ใน %d ชั่วโมง"
- "ในวันที่ %s"
- - "ใน 1 ชั่วโมง"
- - "ใน %d ชั่วโมง"
- "ที่ %s""%1$s, %2$s"
- - "1 ชั่วโมงที่ผ่านมา"
- - "%d ชั่วโมงที่ผ่านมา"
-
- - "1 นาทีที่ผ่านมา"
- - "%d นาทีที่ผ่านมา"
-
- - "พรุ่งนี้"
- - "ใน %d วัน"
-
- - "1 นาที"
- - "%d นาที"
-
- - "ใน 1 วินาที"
- - "ใน %d วินาที"
-
- - "1 ชั่วโมง"
- - "%d ชั่วโมง"
-
- - "เมื่อวาน"
- - "%d วันที่ผ่านมา"
-
- - "เมื่อวาน"
- - "%d วันที่ผ่านมา"
-
- - "1 วินาทีที่แล้ว"
- - "%d วินาทีที่แล้ว"
- %2$s, %1$s"%1$s, %2$s"
- - "1 segundo ang nakakalipas"
- - "%d (na) segundo ang nakalipas"
- %2$s %1$s
- - "bukas"
- - "sa %d (na) araw"
- "sa %s"
- - "1 minuto ang nakalipas"
- - "%d (na) minuto ang nakalipas"
-
- - "sa 1 min"
- - "sa %d (na) minuto"
-
- - "1 minuto"
- - "%d (na) minuto"
-
- - "kahapon"
- - "%d (na) araw ang nakalipas"
-
- - "kahapon"
- - "%d (na) araw ang nakalipas"
-
- - "bukas"
- - "sa %d (na) araw"
- "nang %s"
- - "1 segundo ang nakalipas"
- - "%d (na) segundo ang nakalipas"
-
- - "1 segundo"
- - "%d (na) segundo"
-
- - "1 oras ang nakalipas"
- - "%d (na) oras ang nakalipas"
-
- - "sa 1 oras"
- - "sa %d (na) oras"
-
- - "1 minuto ang nakalipas"
- - "%d (na) minuto ang nakalipas"
-
- - "sa 1 minuto"
- - "sa %d (na) minuto"
-
- - "sa 1 oras"
- - "sa %d (na) oras"
-
- - "sa 1 seg"
- - "sa %d (na) segundo"
-
- - "1 oras ang nakalipas"
- - "%d (na) oras ang nakalipas"
-
- - "1 oras"
- - "%d (na) oras"
-
- - "sa 1 segundo"
- - "sa %d (na) segundo"
-
- - "1 saniye içinde"
- - "%d saniye içinde"
-
- - "1 dakika"
- - "%d dakika"
-
- - "1 saat önce"
- - "%d saat önce"
- "%s tarihinde"
- - "1 saniye önce"
- - "%d saniye önce"
-
- - "1 san. içinde"
- - "%d saniye içinde"
-
- - "1 dakika içinde"
- - "%d dakika içinde"
- "%s saatinde"
- - "dün"
- - "%d gün önce"
-
- - "yarın"
- - "%d gün içinde"
-
- - "1 saat içinde"
- - "%d saat içinde"
-
- - "1 saniye önce"
- - "%d saniye önce"
-
- - "1 saat"
- - "%d saat"
-
- - "1 dak. önce"
- - "%d dakika önce"
-
- - "1 saniye"
- - "%d saniye"
-
- - "dün"
- - "%d gün önce"
-
- - "yarın"
- - "%d gün içinde"
-
- - "1 dak. içinde"
- - "%d dakika içinde"
-
- - "1 saat içinde"
- - "%d saat içinde"
- "%1$s, %2$s"
- - "1 saat önce"
- - "%d saat önce"
- %1$s %2$s
- - "1 dakika önce"
- - "%d dakika önce"
-
- - "через 1 с."
- - "через %d сек."
- %2$s %1$s
- - "через 1 год."
- - "через %d год."
-
- - "1 хвилину тому"
- - "%d хв. тому"
-
- - "через 1 хв."
- - "через %d хв."
- "%1$s, %2$s"
- - "учора"
- - "%d дн. тому"
-
- - "через 1 хв."
- - "через %d хв."
-
- - "через 1 сек."
- - "через %d сек."
-
- - "1 годину тому"
- - "%d год. тому"
-
- - "через 1 год."
- - "через %d год."
- "%s"
- - "завтра"
- - "через %d дн."
-
- - "завтра"
- - "через %d дн."
-
- - "1 с"
- - "%d с"
- "о %s"
- - "1 сек. тому"
- - "%d сек. тому"
-
- - "1 год"
- - "%d год"
-
- - "1 год. тому"
- - "%d год. тому"
-
- - "1 хв"
- - "%d хв"
-
- - "1 хв. тому"
- - "%d хв. тому"
-
- - "1 сек. тому"
- - "%d сек. тому"
-
- - "учора"
- - "%d дн. тому"
- %1$s, %2$s
- - "ngày mai"
- - "trong %d ngày"
- "%1$s, %2$s"
- - "ngày mai"
- - "trong %d ngày"
- %1$s %2$s"vào lúc %s"
- - "1 giờ trước"
- - "%d giờ trước"
-
- - "1 phút trước"
- - "%d phút trước"
-
- - "1 giây trước"
- - "%d giây trước"
-
- - "trong 1 phút"
- - "trong %d phút"
-
- - "trong 1 giây"
- - "trong %d giây"
-
- - "1 phút trước"
- - "%d phút trước"
-
- - "trong 1 giờ"
- - "trong %d giờ"
-
- - "1 giây"
- - "%d giây"
-
- - "1 giờ trước"
- - "%d giờ trước"
-
- - "trong 1 giờ"
- - "trong %d giờ"
- "vào %s"
- - "1 phút"
- - "%d phút"
-
- - "hôm qua"
- - "%d ngày trước"
-
- - "hôm qua"
- - "%d ngày trước"
-
- - "trong 1 giây"
- - "trong %d giây"
-
- - "1 giây trước"
- - "%d giây trước"
-
- - "trong 1 phút"
- - "trong %d phút"
-
- - "1 giờ"
- - "%d giờ"
- %1$s %2$s
- - "1 秒后"
- - "%d 秒后"
-
- - "1 分钟后"
- - "%d 分钟后"
-
- - "昨天"
- - "%d 天前"
-
- - "明天"
- - "%d 天后"
-
- - "1 小时"
- - "%d 小时"
-
- - "1 秒前"
- - "%d 秒前"
- "%1$s,%2$s"
- - "1 小时前"
- - "%d 小时前"
-
- - "1 秒前"
- - "%d 秒前"
-
- - "昨天"
- - "%d 天前"
- %1$s %2$s
- - "1 秒"
- - "%d 秒"
-
- - "1 小时后"
- - "%d 小时后"
-
- - "1 分钟前"
- - "%d 分钟前"
-
- - "1 小时后"
- - "%d 小时后"
- "时间:%s"
- - "1 分钟后"
- - "%d 分钟后"
-
- - "1 分钟前"
- - "%d 分钟前"
-
- - "1 小时前"
- - "%d 小时前"
-
- - "1 秒后"
- - "%d 秒后"
- "日期:%s"
- - "明天"
- - "%d 天后"
-
- - "1 分钟"
- - "%d 分钟"
-
- - "1 分鐘後"
- - "%d 分鐘後"
-
- - "1 秒前"
- - "%d 秒前"
-
- - "1 小時後"
- - "%d 小時後"
-
- - "1 小時"
- - "%d 小時"
- "在 %s"
- - "1 秒前"
- - "%d 秒前"
-
- - "昨天"
- - "%d 天前"
-
- - "1 秒後"
- - "%d 秒後"
-
- - "1 分鐘"
- - "%d 分鐘"
-
- - "1 秒後"
- - "%d 秒後"
-
- - "1 小時前"
- - "%d 小時前"
-
- - "明天"
- - "%d 天後"
-
- - "1 分鐘前"
- - "%d 分鐘前"
- "%1$s, %2$s"
- - "1 小時後"
- - "%d 小時後"
-
- - "1 分鐘前"
- - "%d 分鐘前"
-
- - "昨天"
- - "%d 天前"
-
- - "明天"
- - "%d 天後"
- "於 %s"
- - "1 秒"
- - "%d 秒"
-
- - "1 分鐘後"
- - "%d 分鐘後"
-
- - "1 小時前"
- - "%d 小時前"
-
- - "明天"
- - "%d 天內"
-
- - "昨天"
- - "%d 天前"
-
- - "明天"
- - "%d 天內"
-
- - "1 分鐘內"
- - "在 %d 分鐘內"
-
- - "1 小時內"
- - "%d 小時內"
-
- - "1 小時以前"
- - "%d 小時前"
- "%1$s,%2$s""於 %s"%1$s %2$s
- - "1 秒以前"
- - "%d 秒前"
-
- - "1 小時以前"
- - "%d 小時前"
-
- - "1 分鐘以前"
- - "%d 分鐘以前"
-
- - "1 分鐘以前"
- - "%d 分鐘前"
-
- - "1 小時"
- - "%d 小時"
-
- - "1 分鐘"
- - "%d 分鐘"
-
- - "昨天"
- - "%d 天前"
-
- - "1 秒內"
- - "%d 秒內"
-
- - "1 秒"
- - "%d 秒"
-
- - "1 秒內"
- - "在 %d 秒內"
- "於%s"
- - "1 小時內"
- - "%d 小時內"
-
- - "1 分鐘內"
- - "%d 分鐘內"
-
- - "1 秒以前"
- - "%d 秒以前"
-
- - "1 ihora eledlule"
- - "%d amahora adlule"
-
- - "1 iminithi eledlule"
- - "%d amaminithi adlule"
-
- - "1 isekhondi edlule"
- - "amasekhondi angu-%d edlule"
-
- - "1 ihora eledlule"
- - "%d amahora adlule"
-
- - "1 isekhondi eledlule"
- - "%d amasekhondi adlule"
-
- - "1 iminithi elidlule"
- - "%d amaminithi adlule.."
-
- - "eminithini engu-1"
- - "emaminithini angu-%d"
-
- - "ehoreni elingu-1"
- - "emahoreni angu- %d"
-
- - "eminithini engu-1"
- - "emaminithini angu-%d"
-
- - "Izolo"
- - "%d izinsuku ezedlule"
-
- - "Kusasa"
- - "ezinsukwini ezing-%d"
-
- - "Kusasa"
- - "ezinsukwini ezingu-%d"
-
- - "1 ihora"
- - "%d amahora"
-
- - "1 isekhondi"
- - "%d amasekhondi"
- "e-%s"
- - "esekhondini elingu-1"
- - "emasekhondini angu-%d"
-
- - "esekhondini elingu-1"
- - "emasekhondini angu-%d"
-
- - "ehoreni elingu-1"
- - "emahoreni angu-%d"
-
- - "Izolo"
- - "%d izinsuku ezedlule"
- %2$s %1$s"%1$s, %2$s""ngo-%s"
- - "1 iminithi"
- - "%d amaminithi"
- NONEspark-android-app-1234d34db33f164e458fdb8daffe48b4ffe9d34db33fhttps://api.particle.io16dp16dpSettingsBluz GatewayHello world!128dp
\ No newline at end of file
diff --git a/app/build/intermediates/manifests/androidTest/debug/AndroidManifest.xml b/app/build/intermediates/manifests/androidTest/debug/AndroidManifest.xml
deleted file mode 100644
index 5eb5561..0000000
--- a/app/build/intermediates/manifests/androidTest/debug/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/build/intermediates/manifests/full/debug/AndroidManifest.xml b/app/build/intermediates/manifests/full/debug/AndroidManifest.xml
index 73985b9..372bb74 100644
--- a/app/build/intermediates/manifests/full/debug/AndroidManifest.xml
+++ b/app/build/intermediates/manifests/full/debug/AndroidManifest.xml
@@ -6,41 +6,109 @@
+ android:targetSdkVersion="23" />
+
+
+
+
+
+ android:theme="@style/AppTheme.NoActionBar" >
+
-
-
-
+
-
+ android:name="io.particle.android.sdk.devicesetup.ui.DiscoverDeviceActivity"
+ android:label="@string/title_activity_discover_device"
+ android:screenOrientation="portrait"
+ android:theme="@style/ParticleSetupTheme.NoActionBar"
+ android:windowSoftInputMode="stateHidden" />
-
+ android:name="io.particle.android.sdk.devicesetup.ui.SelectNetworkActivity"
+ android:label="@string/title_activity_select_network"
+ android:screenOrientation="portrait"
+ android:theme="@style/ParticleSetupTheme.NoActionBar"
+ android:windowSoftInputMode="stateHidden" />
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build/intermediates/res/debug/drawable-hdpi/arrow_right.png b/app/build/intermediates/res/debug/drawable-hdpi/arrow_right.png
deleted file mode 100644
index 9f88344..0000000
Binary files a/app/build/intermediates/res/debug/drawable-hdpi/arrow_right.png and /dev/null differ
diff --git a/app/build/intermediates/res/debug/drawable-hdpi/bluz_icon.png b/app/build/intermediates/res/debug/drawable-hdpi/bluz_icon.png
deleted file mode 100644
index 179aae1..0000000
Binary files a/app/build/intermediates/res/debug/drawable-hdpi/bluz_icon.png and /dev/null differ
diff --git a/app/build/intermediates/res/debug/drawable-hdpi/gradient_bg.xml b/app/build/intermediates/res/debug/drawable-hdpi/gradient_bg.xml
deleted file mode 100644
index 62c0f07..0000000
--- a/app/build/intermediates/res/debug/drawable-hdpi/gradient_bg.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/app/build/intermediates/res/debug/drawable-hdpi/gradient_bg_hover.xml b/app/build/intermediates/res/debug/drawable-hdpi/gradient_bg_hover.xml
deleted file mode 100644
index 36d1c05..0000000
--- a/app/build/intermediates/res/debug/drawable-hdpi/gradient_bg_hover.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/app/build/intermediates/res/debug/drawable-hdpi/ic_launcher.png b/app/build/intermediates/res/debug/drawable-hdpi/ic_launcher.png
deleted file mode 100644
index 46486b6..0000000
Binary files a/app/build/intermediates/res/debug/drawable-hdpi/ic_launcher.png and /dev/null differ
diff --git a/app/build/intermediates/res/debug/drawable-hdpi/image_bg.xml b/app/build/intermediates/res/debug/drawable-hdpi/image_bg.xml
deleted file mode 100644
index c36ef04..0000000
--- a/app/build/intermediates/res/debug/drawable-hdpi/image_bg.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
- -
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/build/intermediates/res/debug/drawable-hdpi/list_selector.xml b/app/build/intermediates/res/debug/drawable-hdpi/list_selector.xml
deleted file mode 100644
index f413627..0000000
--- a/app/build/intermediates/res/debug/drawable-hdpi/list_selector.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/build/intermediates/res/debug/drawable-mdpi/bluz_icon.png b/app/build/intermediates/res/debug/drawable-mdpi/bluz_icon.png
deleted file mode 100644
index e870365..0000000
Binary files a/app/build/intermediates/res/debug/drawable-mdpi/bluz_icon.png and /dev/null differ
diff --git a/app/build/intermediates/res/debug/drawable-mdpi/ic_launcher.png b/app/build/intermediates/res/debug/drawable-mdpi/ic_launcher.png
deleted file mode 100644
index 3f766b3..0000000
Binary files a/app/build/intermediates/res/debug/drawable-mdpi/ic_launcher.png and /dev/null differ
diff --git a/app/build/intermediates/res/debug/drawable-xhdpi/bluz_icon.png b/app/build/intermediates/res/debug/drawable-xhdpi/bluz_icon.png
deleted file mode 100644
index 3740b45..0000000
Binary files a/app/build/intermediates/res/debug/drawable-xhdpi/bluz_icon.png and /dev/null differ
diff --git a/app/build/intermediates/res/debug/drawable-xhdpi/ic_launcher.png b/app/build/intermediates/res/debug/drawable-xhdpi/ic_launcher.png
deleted file mode 100644
index c8db86a..0000000
Binary files a/app/build/intermediates/res/debug/drawable-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/app/build/intermediates/res/debug/drawable-xxhdpi/bluz_icon.png b/app/build/intermediates/res/debug/drawable-xxhdpi/bluz_icon.png
deleted file mode 100644
index 01e254b..0000000
Binary files a/app/build/intermediates/res/debug/drawable-xxhdpi/bluz_icon.png and /dev/null differ
diff --git a/app/build/intermediates/res/debug/drawable-xxhdpi/ic_launcher.png b/app/build/intermediates/res/debug/drawable-xxhdpi/ic_launcher.png
deleted file mode 100644
index b806117..0000000
Binary files a/app/build/intermediates/res/debug/drawable-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/app/build/intermediates/res/debug/layout/activity_glove_display.xml b/app/build/intermediates/res/debug/layout/activity_glove_display.xml
deleted file mode 100644
index f219666..0000000
--- a/app/build/intermediates/res/debug/layout/activity_glove_display.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/build/intermediates/res/debug/layout/list_row.xml b/app/build/intermediates/res/debug/layout/list_row.xml
deleted file mode 100644
index 9da9abc..0000000
--- a/app/build/intermediates/res/debug/layout/list_row.xml
+++ /dev/null
@@ -1,118 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/build/intermediates/res/debug/menu/main.xml b/app/build/intermediates/res/debug/menu/main.xml
deleted file mode 100644
index 3bdb3cf..0000000
--- a/app/build/intermediates/res/debug/menu/main.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
\ No newline at end of file
diff --git a/app/build/intermediates/res/debug/values-sw720dp-land/values-sw720dp-land.xml b/app/build/intermediates/res/debug/values-sw720dp-land/values-sw720dp-land.xml
deleted file mode 100644
index 6689fed..0000000
--- a/app/build/intermediates/res/debug/values-sw720dp-land/values-sw720dp-land.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
- 128dp
-
\ No newline at end of file
diff --git a/app/build/intermediates/res/debug/values-v11/values-v11.xml b/app/build/intermediates/res/debug/values-v11/values-v11.xml
deleted file mode 100644
index c874d1b..0000000
--- a/app/build/intermediates/res/debug/values-v11/values-v11.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/build/intermediates/res/debug/values-v14/values-v14.xml b/app/build/intermediates/res/debug/values-v14/values-v14.xml
deleted file mode 100644
index 25f5372..0000000
--- a/app/build/intermediates/res/debug/values-v14/values-v14.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/build/intermediates/res/debug/values/values.xml b/app/build/intermediates/res/debug/values/values.xml
deleted file mode 100644
index 3cfab73..0000000
--- a/app/build/intermediates/res/debug/values/values.xml
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
- 16dp
- 16dp
-
-
-
- - tomorrow
- - in %d days
-
-
- - in 1 hour
- - in %d hours
-
-
- - in 1 min
- - in %d mins
-
-
- - in 1 sec
- - in %d secs
-
-
- - yesterday
- - %d days ago
-
-
- - 1 hour ago
- - %d hours ago
-
-
- - 1 min ago
- - %d mins ago
-
-
- - 1 sec ago
- - %d secs ago
-
-
- - 1 hour
- - %d hours
-
-
- - 1 minute
- - %d minutes
-
-
- - 1 second
- - %d seconds
-
-
- - tomorrow
- - in %d days
-
-
- - in 1 hour
- - in %d hours
-
-
- - in 1 minute
- - in %d minutes
-
-
- - in 1 second
- - in %d seconds
-
-
- - yesterday
- - %d days ago
-
-
- - 1 hour ago
- - %d hours ago
-
-
- - 1 minute ago
- - %d minutes ago
-
-
- - 1 second ago
- - %d seconds ago
-
-
-
- Settings
-
-
- https://api.particle.io
-
-
- Bluz Gateway
- Hello world!
-
-
- NONE
-
-
- %1$s, %2$s
- on %s
- at %s
- "%1$s, %2$s"
-
-
- spark-android-app-1234
- d34db33f164e458fdb8daffe48b4ffe9d34db33f
-
-
-
-
-
\ No newline at end of file
diff --git a/app/build/intermediates/resources/resources-debug-androidTest.ap_ b/app/build/intermediates/resources/resources-debug-androidTest.ap_
deleted file mode 100644
index 076a3bd..0000000
Binary files a/app/build/intermediates/resources/resources-debug-androidTest.ap_ and /dev/null differ
diff --git a/app/build/intermediates/resources/resources-debug.ap_ b/app/build/intermediates/resources/resources-debug.ap_
deleted file mode 100644
index f0746f6..0000000
Binary files a/app/build/intermediates/resources/resources-debug.ap_ and /dev/null differ
diff --git a/app/build/outputs/apk/app-debug-unaligned.apk b/app/build/outputs/apk/app-debug-unaligned.apk
index 782bbf9..8c6f2ed 100644
Binary files a/app/build/outputs/apk/app-debug-unaligned.apk and b/app/build/outputs/apk/app-debug-unaligned.apk differ
diff --git a/app/build/outputs/apk/app-debug.apk b/app/build/outputs/apk/app-debug.apk
index c3d20b9..d08be22 100644
Binary files a/app/build/outputs/apk/app-debug.apk and b/app/build/outputs/apk/app-debug.apk differ
diff --git a/app/build/outputs/logs/manifest-merger-debug-report.txt b/app/build/outputs/logs/manifest-merger-debug-report.txt
index 712c2b3..aa9ec36 100644
--- a/app/build/outputs/logs/manifest-merger-debug-report.txt
+++ b/app/build/outputs/logs/manifest-merger-debug-report.txt
@@ -1,92 +1,261 @@
-- Merging decision tree log ---
manifest
-ADDED from AndroidManifest.xml:2:1
+ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:2:1-101:12
xmlns:android
- ADDED from AndroidManifest.xml:2:11
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:2:11-69
package
- ADDED from AndroidManifest.xml:3:5
- INJECTED from AndroidManifest.xml:0:0
- INJECTED from AndroidManifest.xml:0:0
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:3:5-31
+ INJECTED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml
+ INJECTED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml
android:versionName
- ADDED from AndroidManifest.xml:5:5
+ INJECTED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml
+ INJECTED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml
android:versionCode
- ADDED from AndroidManifest.xml:4:5
- INJECTED from AndroidManifest.xml:0:0
- INJECTED from AndroidManifest.xml:0:0
-uses-sdk
-ADDED from AndroidManifest.xml:7:5
-MERGED from com.android.support:support-v4:23.1.1:20:5
-MERGED from io.particle:cloudsdk:0.3.4:7:5
-MERGED from com.android.support:support-v4:23.1.1:20:5
-MERGED from net.danlew:android.joda:2.9.0:6:5
- android:targetSdkVersion
- ADDED from AndroidManifest.xml:9:9
- INJECTED from AndroidManifest.xml:0:0
- INJECTED from AndroidManifest.xml:0:0
- android:minSdkVersion
- ADDED from AndroidManifest.xml:8:9
- INJECTED from AndroidManifest.xml:0:0
- INJECTED from AndroidManifest.xml:0:0
+ INJECTED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml
+ INJECTED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml
uses-permission#android.permission.BLUETOOTH
-ADDED from AndroidManifest.xml:11:5
+ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:5:5-68
android:name
- ADDED from AndroidManifest.xml:11:22
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:5:22-65
uses-permission#android.permission.BLUETOOTH_ADMIN
-ADDED from AndroidManifest.xml:12:5
+ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:6:5-74
android:name
- ADDED from AndroidManifest.xml:12:22
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:6:22-71
uses-permission#android.permission.INTERNET
-ADDED from AndroidManifest.xml:13:5
-MERGED from io.particle:cloudsdk:0.3.4:11:5
+ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:7:5-66
+MERGED from [io.particle:cloudsdk:0.3.4] /home/paul/git/android-app/app/build/intermediates/exploded-aar/io.particle/cloudsdk/0.3.4/AndroidManifest.xml:11:5-67
+MERGED from [io.particle:devicesetup:0.3.4] /home/paul/git/android-app/app/build/intermediates/exploded-aar/io.particle/devicesetup/0.3.4/AndroidManifest.xml:11:5-67
+MERGED from [io.particle:cloudsdk:0.3.4] /home/paul/git/android-app/app/build/intermediates/exploded-aar/io.particle/cloudsdk/0.3.4/AndroidManifest.xml:11:5-67
android:name
- ADDED from AndroidManifest.xml:13:22
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:7:22-64
application
-ADDED from AndroidManifest.xml:15:5
-MERGED from com.android.support:support-v4:23.1.1:22:5
-MERGED from com.android.support:support-v4:23.1.1:22:5
+ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:9:5-99:19
+MERGED from [com.android.support:appcompat-v7:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.1.1/AndroidManifest.xml:22:5-20
+MERGED from [com.android.support:support-v4:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/AndroidManifest.xml:22:5-20
+MERGED from [com.android.support:design:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/design/23.1.1/AndroidManifest.xml:22:5-20
+MERGED from [com.android.support:appcompat-v7:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.1.1/AndroidManifest.xml:22:5-20
+MERGED from [com.android.support:support-v4:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/AndroidManifest.xml:22:5-20
+MERGED from [com.android.support:support-v4:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/AndroidManifest.xml:22:5-20
+MERGED from [com.android.support:support-v4:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/AndroidManifest.xml:22:5-20
+MERGED from [com.android.support:support-v4:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/AndroidManifest.xml:22:5-20
+MERGED from [uk.co.chrisjenx:calligraphy:2.1.0] /home/paul/git/android-app/app/build/intermediates/exploded-aar/uk.co.chrisjenx/calligraphy/2.1.0/AndroidManifest.xml:11:5-20
+MERGED from [com.android.support:appcompat-v7:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.1.1/AndroidManifest.xml:22:5-20
+MERGED from [com.android.support:support-v4:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/AndroidManifest.xml:22:5-20
+MERGED from [com.android.support:appcompat-v7:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.1.1/AndroidManifest.xml:22:5-20
+MERGED from [com.android.support:support-v4:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/AndroidManifest.xml:22:5-20
+MERGED from [com.android.support:support-v4:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/AndroidManifest.xml:22:5-20
+MERGED from [com.android.support:support-v4:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/AndroidManifest.xml:22:5-20
+MERGED from [com.android.support:support-v4:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/AndroidManifest.xml:22:5-20
+ android:supportsRtl
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:13:9-35
android:label
- ADDED from AndroidManifest.xml:18:9
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:12:9-41
android:allowBackup
- ADDED from AndroidManifest.xml:16:9
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:10:9-35
android:icon
- ADDED from AndroidManifest.xml:17:9
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:11:9-43
android:theme
- ADDED from AndroidManifest.xml:19:9
-activity#com.banc.sparkle_gateway.BLESelection
-ADDED from AndroidManifest.xml:20:9
- android:screenOrientation
- ADDED from AndroidManifest.xml:23:13
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:14:9-40
+activity#gateway.BLESelection
+ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:15:9-24:20
android:label
- ADDED from AndroidManifest.xml:22:13
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:17:13-45
+ android:theme
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:18:13-56
android:name
- ADDED from AndroidManifest.xml:21:13
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:16:13-48
intent-filter#android.intent.action.MAIN+android.intent.category.LAUNCHER
-ADDED from AndroidManifest.xml:24:13
+ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:19:13-23:29
action#android.intent.action.MAIN
-ADDED from AndroidManifest.xml:25:17
+ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:20:17-69
android:name
- ADDED from AndroidManifest.xml:25:25
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:20:25-66
category#android.intent.category.LAUNCHER
-ADDED from AndroidManifest.xml:27:17
+ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:22:17-77
+ android:name
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:22:27-74
+activity#gateway.ParticleLoginDisplay
+ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:25:9-27:60
+ android:label
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:27:13-57
+ android:name
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:26:13-56
+activity#io.particle.android.sdk.devicesetup.ui.DiscoverDeviceActivity
+ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:30:9-35:57
+ android:windowSoftInputMode
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:35:13-54
+ android:screenOrientation
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:33:13-49
+ android:label
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:32:13-67
+ android:theme
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:34:13-66
+ android:name
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:31:13-89
+activity#io.particle.android.sdk.devicesetup.ui.SelectNetworkActivity
+ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:36:9-41:57
+ android:windowSoftInputMode
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:41:13-54
+ android:screenOrientation
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:39:13-49
+ android:label
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:38:13-66
+ android:theme
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:40:13-66
+ android:name
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:37:13-88
+activity#io.particle.android.sdk.devicesetup.ui.PasswordEntryActivity
+ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:42:9-47:71
+ android:windowSoftInputMode
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:47:13-68
+ android:screenOrientation
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:45:13-49
+ android:label
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:44:13-66
+ android:theme
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:46:13-66
+ android:name
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:43:13-88
+activity#io.particle.android.sdk.devicesetup.ui.ConnectingActivity
+ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:48:9-53:57
+ android:windowSoftInputMode
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:53:13-54
+ android:screenOrientation
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:51:13-49
+ android:label
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:50:13-62
+ android:theme
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:52:13-66
+ android:name
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:49:13-85
+activity#io.particle.android.sdk.devicesetup.ui.SuccessActivity
+ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:54:9-59:57
+ android:windowSoftInputMode
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:59:13-54
+ android:screenOrientation
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:57:13-49
+ android:label
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:56:13-59
+ android:theme
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:58:13-66
+ android:name
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:55:13-82
+activity#io.particle.android.sdk.utils.ui.WebViewActivity
+ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:60:9-64:69
+ android:screenOrientation
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:63:13-49
+ android:label
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:62:13-60
+ android:theme
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:64:13-66
+ android:name
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:61:13-76
+activity#io.particle.android.sdk.devicesetup.ui.GetReadyActivity
+ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:65:9-69:69
+ android:screenOrientation
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:68:13-49
+ android:label
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:67:13-61
+ android:theme
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:69:13-66
+ android:name
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:66:13-83
+activity#io.particle.android.sdk.devicesetup.ui.ManualNetworkEntryActivity
+ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:70:9-75:71
+ android:windowSoftInputMode
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:75:13-68
+ android:screenOrientation
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:73:13-49
+ android:label
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:72:13-72
+ android:theme
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:74:13-66
android:name
- ADDED from AndroidManifest.xml:27:27
-service#com.banc.sparkle_gateway.BLEService
-ADDED from AndroidManifest.xml:31:9
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:71:13-93
+activity#io.particle.android.sdk.accountsetup.CreateAccountActivity
+ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:76:9-81:70
+ android:windowSoftInputMode
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:81:13-67
+ android:screenOrientation
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:79:13-49
+ android:label
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:78:13-66
+ android:theme
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:80:13-66
android:name
- ADDED from AndroidManifest.xml:31:18
-activity#com.banc.sparkle_gateway.BLEDisplay
-ADDED from AndroidManifest.xml:34:9
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:77:13-86
+activity#io.particle.android.sdk.accountsetup.LoginActivity
+ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:82:9-87:70
+ android:windowSoftInputMode
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:87:13-67
android:screenOrientation
- ADDED from AndroidManifest.xml:37:13
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:85:13-49
android:label
- ADDED from AndroidManifest.xml:36:13
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:84:13-57
+ android:theme
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:86:13-66
android:name
- ADDED from AndroidManifest.xml:35:13
-activity#com.banc.sparkle_gateway.ParticleLoginDisplay
-ADDED from AndroidManifest.xml:40:9
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:83:13-78
+activity#io.particle.android.sdk.accountsetup.PasswordResetActivity
+ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:88:9-93:71
+ android:windowSoftInputMode
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:93:13-68
android:screenOrientation
- ADDED from AndroidManifest.xml:43:13
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:91:13-49
android:label
- ADDED from AndroidManifest.xml:42:13
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:90:13-66
+ android:theme
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:92:13-66
+ android:name
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:89:13-86
+service#gateway.BLEService
+ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:96:9-97:19
+ android:name
+ ADDED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml:96:18-51
+uses-sdk
+INJECTED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml reason: use-sdk injection requested
+MERGED from [com.android.support:appcompat-v7:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.1.1/AndroidManifest.xml:20:5-43
+MERGED from [com.android.support:support-v4:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/AndroidManifest.xml:20:5-43
+MERGED from [com.android.support:design:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/design/23.1.1/AndroidManifest.xml:20:5-43
+MERGED from [com.android.support:appcompat-v7:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.1.1/AndroidManifest.xml:20:5-43
+MERGED from [com.android.support:support-v4:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/AndroidManifest.xml:20:5-43
+MERGED from [com.android.support:recyclerview-v7:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/recyclerview-v7/23.1.1/AndroidManifest.xml:20:5-43
+MERGED from [com.android.support:support-v4:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/AndroidManifest.xml:20:5-43
+MERGED from [com.android.support:support-v4:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/AndroidManifest.xml:20:5-43
+MERGED from [io.particle:cloudsdk:0.3.4] /home/paul/git/android-app/app/build/intermediates/exploded-aar/io.particle/cloudsdk/0.3.4/AndroidManifest.xml:7:5-9:41
+MERGED from [com.android.support:support-v4:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/AndroidManifest.xml:20:5-43
+MERGED from [net.danlew:android.joda:2.9.0] /home/paul/git/android-app/app/build/intermediates/exploded-aar/net.danlew/android.joda/2.9.0/AndroidManifest.xml:6:5-43
+MERGED from [io.particle:devicesetup:0.3.4] /home/paul/git/android-app/app/build/intermediates/exploded-aar/io.particle/devicesetup/0.3.4/AndroidManifest.xml:7:5-9:41
+MERGED from [uk.co.chrisjenx:calligraphy:2.1.0] /home/paul/git/android-app/app/build/intermediates/exploded-aar/uk.co.chrisjenx/calligraphy/2.1.0/AndroidManifest.xml:7:5-9:41
+MERGED from [com.android.support:appcompat-v7:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.1.1/AndroidManifest.xml:20:5-43
+MERGED from [com.android.support:support-v4:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/AndroidManifest.xml:20:5-43
+MERGED from [com.android.support:appcompat-v7:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.1.1/AndroidManifest.xml:20:5-43
+MERGED from [com.android.support:support-v4:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/AndroidManifest.xml:20:5-43
+MERGED from [com.android.support:support-v4:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/AndroidManifest.xml:20:5-43
+MERGED from [com.android.support:recyclerview-v7:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/recyclerview-v7/23.1.1/AndroidManifest.xml:20:5-43
+MERGED from [com.android.support:support-v4:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/AndroidManifest.xml:20:5-43
+MERGED from [io.particle:cloudsdk:0.3.4] /home/paul/git/android-app/app/build/intermediates/exploded-aar/io.particle/cloudsdk/0.3.4/AndroidManifest.xml:7:5-9:41
+MERGED from [com.android.support:support-v4:23.1.1] /home/paul/git/android-app/app/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/AndroidManifest.xml:20:5-43
+MERGED from [net.danlew:android.joda:2.9.0] /home/paul/git/android-app/app/build/intermediates/exploded-aar/net.danlew/android.joda/2.9.0/AndroidManifest.xml:6:5-43
+ android:targetSdkVersion
+ INJECTED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml
+ INJECTED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml
+ android:minSdkVersion
+ INJECTED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml
+ INJECTED from /home/paul/git/android-app/app/src/main/AndroidManifest.xml
+uses-permission#android.permission.ACCESS_WIFI_STATE
+ADDED from [io.particle:devicesetup:0.3.4] /home/paul/git/android-app/app/build/intermediates/exploded-aar/io.particle/devicesetup/0.3.4/AndroidManifest.xml:12:5-76
+ android:name
+ ADDED from [io.particle:devicesetup:0.3.4] /home/paul/git/android-app/app/build/intermediates/exploded-aar/io.particle/devicesetup/0.3.4/AndroidManifest.xml:12:22-73
+uses-permission#android.permission.ACCESS_NETWORK_STATE
+ADDED from [io.particle:devicesetup:0.3.4] /home/paul/git/android-app/app/build/intermediates/exploded-aar/io.particle/devicesetup/0.3.4/AndroidManifest.xml:13:5-79
+ android:name
+ ADDED from [io.particle:devicesetup:0.3.4] /home/paul/git/android-app/app/build/intermediates/exploded-aar/io.particle/devicesetup/0.3.4/AndroidManifest.xml:13:22-76
+uses-permission#android.permission.CHANGE_WIFI_STATE
+ADDED from [io.particle:devicesetup:0.3.4] /home/paul/git/android-app/app/build/intermediates/exploded-aar/io.particle/devicesetup/0.3.4/AndroidManifest.xml:14:5-76
+ android:name
+ ADDED from [io.particle:devicesetup:0.3.4] /home/paul/git/android-app/app/build/intermediates/exploded-aar/io.particle/devicesetup/0.3.4/AndroidManifest.xml:14:22-73
+uses-permission#android.permission.ACCESS_COARSE_LOCATION
+ADDED from [io.particle:devicesetup:0.3.4] /home/paul/git/android-app/app/build/intermediates/exploded-aar/io.particle/devicesetup/0.3.4/AndroidManifest.xml:19:5-81
android:name
- ADDED from AndroidManifest.xml:41:13
+ ADDED from [io.particle:devicesetup:0.3.4] /home/paul/git/android-app/app/build/intermediates/exploded-aar/io.particle/devicesetup/0.3.4/AndroidManifest.xml:19:22-78
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 98c9450..e2468e9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,13 +1,7 @@
+ package="com.banc.gateway">
-
-
@@ -16,33 +10,92 @@
android:allowBackup="true"
android:icon="@drawable/bluz_icon"
android:label="@string/app_name"
- android:theme="@style/AppTheme" >
+ android:supportsRtl="true"
+ android:theme="@style/AppTheme">
+ android:theme="@style/AppTheme.NoActionBar">
-
-
-
-
-
+ android:name="gateway.ParticleLoginDisplay"
+ android:label="Log in to the Particle Cloud" />
+
-
+ android:name="io.particle.android.sdk.devicesetup.ui.DiscoverDeviceActivity"
+ android:label="@string/title_activity_discover_device"
+ android:screenOrientation="portrait"
+ android:theme="@style/ParticleSetupTheme.NoActionBar"
+ android:windowSoftInputMode="stateHidden" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
\ No newline at end of file
diff --git a/app/src/main/java/BLEManagement/BLEDeviceInfo.java b/app/src/main/java/BLEManagement/BLEDeviceInfo.java
new file mode 100644
index 0000000..a55d87a
--- /dev/null
+++ b/app/src/main/java/BLEManagement/BLEDeviceInfo.java
@@ -0,0 +1,215 @@
+package BLEManagement;
+
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothGatt;
+import android.bluetooth.BluetoothGattService;
+
+import java.io.IOException;
+
+import gateway.BLEService;
+import gateway.ParticleSocket;
+import io.particle.android.sdk.cloud.ParticleCloud;
+import io.particle.android.sdk.cloud.ParticleCloudException;
+import io.particle.android.sdk.cloud.ParticleCloudSDK;
+import io.particle.android.sdk.utils.Async;
+
+public class BLEDeviceInfo implements Runnable {
+ final public static int STATE_BLUETOOTH_OFF = 1;
+ final public static int STATE_DISCONNECTED = 2;
+ final public static int STATE_CONNECTING = 3;
+ final public static int STATE_CONNECTED = 4;
+
+ public int State;
+ public ParticleSocket particleSocket;
+ public BluetoothGatt mBluetoothGatt;
+ public BluetoothGattService mBluetoothGattService;
+
+ private BluetoothDevice bleDevice;
+ private int rssi;
+ private String cloudName;
+ private String cloudId;
+ private Boolean isClaimed;
+
+
+ public BLEDeviceInfo(BluetoothDevice device, final int rssi)
+ {
+ this.bleDevice = device;
+ this.rssi = rssi;
+ cloudName = "";
+ cloudId = "";
+ isClaimed = false;
+ particleSocket = new ParticleSocket();
+ ulBuffer = new byte[512];
+ ulBufferLength = 0;
+ }
+
+ public void UpdateRSSI(int newRSSI)
+ {
+ rssi = newRSSI;
+ }
+
+ public int GetRSSI() { return rssi; }
+ public String GetName() { return bleDevice.getName(); }
+ public String GetMAC() { return bleDevice.getAddress(); }
+ public String GetCloudID() { return cloudId; }
+ public String GetCloudName() { return cloudName; }
+ public boolean IsClaimed() {return isClaimed; }
+ public void SetClaimed(boolean claimed) {isClaimed = claimed; }
+
+ //buffers for data
+ byte[] dlBuffer, ulBuffer;
+ int ulBufferLength;
+
+ //internal flags so the manager can keep track of successful transmissions
+ boolean transmissionDone = false;
+
+ //internal var to keep track of last service
+ byte lastService = 0x00;
+
+ public boolean Running = false;
+ @Override
+ public void run() {
+ Running = true;
+ // TODO Auto-generated method stub
+ while (Running) {
+
+ if (particleSocket.Connected()) {
+ try {
+ int bytesAvailable = particleSocket.Available();
+// // Log.d("BLEService", "Connected: " + Boolean.toString(sparkSocket.Connected()) + " Bytes Available: " + bytesAvailable);
+ if (bytesAvailable > 0) {
+ dlBuffer = particleSocket.Read();
+// // Log.d("BLEService", "We read some bytes from SPark Cloud: " + dlBuffer.length);
+ byte[] header = {0x01, 0x00};
+ BLEManager.send(this, dlBuffer, header);
+ }
+ try {
+ Thread.sleep(10);
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+
+ public void stop()
+ {
+ Running = false;
+ }
+
+ public void disconnect() {
+ stop();
+ try {
+ Thread.sleep(10);
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ try {
+ particleSocket.Disconnect();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ mBluetoothGatt.close();
+
+ mBluetoothGatt = null;
+ mBluetoothGattService = null;
+ }
+
+ //Called when the SparkLE transmits data to us
+ public synchronized void processData(byte[] data) {
+ StringBuilder sb = new StringBuilder();
+ for (byte b : data) {
+ sb.append(String.format("%02X ", b));
+ }
+// // Log.d("BLEService", "Processing Data: " + sb.toString());
+
+ if (data[0] == 0x03 && data[1] == 0x04) {
+ if (lastService == 0x01) {
+ try {
+ if (particleSocket.Connected()) {
+ // Log.d("BLEService", "Got a full buffer, attempting to send it up");
+ byte[] tmpBuffer = new byte[ulBufferLength];
+ System.arraycopy(ulBuffer, 0, tmpBuffer, 0, ulBufferLength);
+// // Log.d("BLEService", "About to write this many bytes " + tmpBuffer.length);
+ particleSocket.Write(tmpBuffer);
+// // Log.d("BLEManager", "Received this many bytes from BLE: " + tmpBuffer.length);
+ } else {
+ try {
+ // Log.d("SparkLEService", "Not Connected. Attempting to connect to cloud");
+ particleSocket.Connect();
+ Thread rThread = new Thread(this);
+ //rThread.setUncaughtExceptionHandler(new ExceptionHandler());
+ rThread.start();
+ ulBuffer = new byte[512];
+ ulBufferLength = 0;
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ } else if (lastService == 0x02) {
+ final StringBuilder id = new StringBuilder();
+ for (int i = 0; i < ulBufferLength; i++) {
+ id.append(String.format("%02x", ulBuffer[i]));
+ }
+ // Log.d("Device ID", id.toString());
+ this.cloudId = id.toString();
+ Async.executeAsync(ParticleCloudSDK.getCloud(), new Async.ApiWork() {
+ @Override
+ public Object callApi(ParticleCloud sparkCloud) throws ParticleCloudException, IOException {
+ return ParticleCloudSDK.getCloud().getDevice(id.toString()).getName();
+ }
+
+ @Override
+ public void onSuccess(Object value) {
+ // Log.d("Device Name Retreieved", (String)value);
+ cloudName = (String)value;
+ isClaimed = true;
+ BLEService.DeviceInfoChanged();
+ }
+
+ @Override
+ public void onFailure(ParticleCloudException e) {
+ // Log.d("Device is not claimed","");
+ isClaimed = false;
+ BLEService.DeviceInfoChanged();
+ }
+ });
+
+ }
+ ulBuffer = new byte[512];
+ ulBufferLength = 0;
+ } else {
+
+ if (ulBufferLength == 0) {
+ lastService = data[0];
+ int headerBytes = 1;
+ if (lastService == 0x01) {
+ headerBytes = 2;
+ }
+ //this is the first packaet in the stream. check the header
+ System.arraycopy(data, headerBytes, ulBuffer, ulBufferLength, data.length-headerBytes);
+ ulBufferLength += (data.length-headerBytes);
+ } else {
+ System.arraycopy(data, 0, ulBuffer, ulBufferLength, data.length);
+ ulBufferLength += (data.length);
+ }
+ }
+ //bleManager.send(new byte[]{0x55});
+
+ //TO DO: Handle BLE messages
+ }
+
+ public void PollParticleId() {
+ byte[] requestIdBuffer = {0x02, 0x00};
+ BLEManager.send(this, requestIdBuffer, null);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/BLEManagement/BLEDeviceInfoList.java b/app/src/main/java/BLEManagement/BLEDeviceInfoList.java
new file mode 100644
index 0000000..9b590e9
--- /dev/null
+++ b/app/src/main/java/BLEManagement/BLEDeviceInfoList.java
@@ -0,0 +1,93 @@
+package BLEManagement;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+public class BLEDeviceInfoList {
+
+ private List bleDevices;
+
+ public BLEDeviceInfoList()
+ {
+ bleDevices = new ArrayList();
+ }
+
+ public void InsertOrUpdate(BLEDeviceInfo bleDevice)
+ {
+ Iterator deviceIter = bleDevices.iterator();
+ boolean found = false;
+ while(deviceIter.hasNext()){
+ BLEDeviceInfo existingBleDevice = deviceIter.next();
+ if (existingBleDevice.GetMAC().equalsIgnoreCase(bleDevice.GetMAC()))
+ {
+ found = true;
+ existingBleDevice.UpdateRSSI(bleDevice.GetRSSI());
+ break;
+ }
+ }
+ if (!found)
+ {
+ bleDevices.add(bleDevice);
+ }
+ }
+ public BLEDeviceInfo GetBLEDeviceInfo(int index)
+ {
+ return bleDevices.get(index);
+ }
+ public BLEDeviceInfo GetBLEDeviceInfoByAddress(String address)
+ {
+ for (BLEDeviceInfo b : bleDevices) {
+ if (b.GetMAC() == address) {
+ return b;
+ }
+ }
+ return null;
+ }
+
+ public int GetCount()
+ {
+ return bleDevices.size();
+ }
+
+ public BLEDeviceInfoList MergeAndTakeUnique(BLEDeviceInfoList newDevices)
+ {
+ BLEDeviceInfoList mergedOverDevice = new BLEDeviceInfoList();
+
+ Iterator deviceIter = newDevices.bleDevices.iterator();
+ boolean found = false;
+ while(deviceIter.hasNext()) {
+ BLEDeviceInfo newBleDevice = deviceIter.next();
+ if (!this.ContainsByAddress(newBleDevice))
+ {
+ mergedOverDevice.bleDevices.add(newBleDevice);
+ }
+ }
+
+ return mergedOverDevice;
+ }
+
+ private boolean ContainsByAddress(BLEDeviceInfo bleDevice)
+ {
+ Iterator deviceIter = bleDevices.iterator();
+ boolean found = false;
+ while(deviceIter.hasNext()) {
+ BLEDeviceInfo existingBleDevice = deviceIter.next();
+ if (existingBleDevice.GetMAC().equalsIgnoreCase(bleDevice.GetMAC()))
+ {
+ found = true;
+ break;
+ }
+ }
+ return found;
+ }
+
+ public void clearNonConnected() {
+ Iterator iter = bleDevices.listIterator();
+ while (iter.hasNext()) {
+ if (iter.next().State != BLEDeviceInfo.STATE_CONNECTED) {
+ iter.remove();
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/banc/BLEManagement/BLEEvent.java b/app/src/main/java/BLEManagement/BLEEvent.java
similarity index 80%
rename from app/src/main/java/com/banc/BLEManagement/BLEEvent.java
rename to app/src/main/java/BLEManagement/BLEEvent.java
index 70283d0..096227c 100644
--- a/app/src/main/java/com/banc/BLEManagement/BLEEvent.java
+++ b/app/src/main/java/BLEManagement/BLEEvent.java
@@ -1,7 +1,7 @@
-package com.banc.BLEManagement;
+package BLEManagement;
public class BLEEvent {
- final public static int EVENT_DEVICE_DISCOVERED = 1;
+ final public static int EVENT_DEVICE_DISCOVERED = 1;
final public static int EVENT_DEVICE_LOST = 2;
final public static int EVENT_UPDATE = 3;
final public static int EVENT_RX_DATA = 4;
diff --git a/app/src/main/java/com/banc/BLEManagement/BLEManager.java b/app/src/main/java/BLEManagement/BLEManager.java
similarity index 75%
rename from app/src/main/java/com/banc/BLEManagement/BLEManager.java
rename to app/src/main/java/BLEManagement/BLEManager.java
index c7a994b..7c41720 100644
--- a/app/src/main/java/com/banc/BLEManagement/BLEManager.java
+++ b/app/src/main/java/BLEManagement/BLEManager.java
@@ -1,11 +1,4 @@
-package com.banc.BLEManagement;
-
-import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.Observer;
-import java.util.Observable;
-import java.util.UUID;
+package BLEManagement;
import android.Manifest;
import android.bluetooth.BluetoothAdapter;
@@ -23,19 +16,26 @@
import android.content.IntentFilter;
import android.util.Log;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.Observable;
+import java.util.Observer;
+import java.util.UUID;
+
public class BLEManager extends Observable implements Observer {
-
+
//flags for keeping track of scanning state
private boolean scanStarted;
private boolean scanning;
-
+
//bluetooth variables
private BluetoothAdapter bluetoothAdapter;
private BluetoothDevice bluetoothDevice;
-
- private BluetoothManager mBluetoothManager;
+
+ private BluetoothManager mBluetoothManager;
private BluetoothAdapter mBluetoothAdapter;
-
+
public final static String ACTION_CONNECTED =
"com.banc.ACTION_CONNECTED";
public final static String ACTION_DISCONNECTED =
@@ -45,60 +45,60 @@ public class BLEManager extends Observable implements Observer {
public final static String EXTRA_DATA =
"com.banc.EXTRA_DATA";
-// public final static UUID UUID_SERVICE = BluetoothHelper.sixteenBitUuid(0x2220);
+ // public final static UUID UUID_SERVICE = BluetoothHelper.sixteenBitUuid(0x2220);
public final static UUID UUID_SERVICE = BluetoothHelper.sixteenBitUuid(0x0223);
public final static UUID UUID_RECEIVE = BluetoothHelper.sixteenBitUuid(0x0224);
public final static UUID UUID_SEND = BluetoothHelper.sixteenBitUuid(0x0225);
//public final static UUID UUID_DISCONNECT = BluetoothHelper.sixteenBitUuid(0x2223);
public final static UUID UUID_CLIENT_CONFIGURATION = BluetoothHelper.sixteenBitUuidOld(0x2902);
- private static final String TAG = "SparkLE BLE Manager";
-
- public BLEDeviceInfoList bleDevices;
- static BLEScanner scanner;
-
- private Context context;
-
- public BLEManager(Context context) {
- this.context = context;
-
- bleDevices = new BLEDeviceInfoList();
-
- initialize();
-
- //set up the bluetooth registers and start scanning
- context.registerReceiver(scanModeReceiver, new IntentFilter(BluetoothAdapter.ACTION_SCAN_MODE_CHANGED));
+ private static final String TAG = "SparkLE BLE Manager";
+
+ public BLEDeviceInfoList bleDevices;
+ static BLEScanner scanner;
+
+ private Context context;
+
+ public BLEManager(Context context) {
+ this.context = context;
+
+ bleDevices = new BLEDeviceInfoList();
+
+ initialize();
+
+ //set up the bluetooth registers and start scanning
+ context.registerReceiver(scanModeReceiver, new IntentFilter(BluetoothAdapter.ACTION_SCAN_MODE_CHANGED));
context.registerReceiver(bluetoothStateReceiver, new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED));
// context.registerReceiver(sparkleReceiver, getIntentFilter());
-
- Log.d("DEBUG", "Bluetooth Registers Setup!");
+
+ // Log.d("DEBUG", "Bluetooth Registers Setup!");
// bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
// updateState(bluetoothAdapter.isEnabled() ? STATE_DISCONNECTED : STATE_BLUETOOTH_OFF);
-
+
scanner = new BLEScanner();
- }
+ }
static public BLEDeviceInfoList GetList() {return scanner.newDevices;}
public BLEDeviceInfo GetBLEDeviceInfoByAddress(String address)
{
return scanner.newDevices.GetBLEDeviceInfoByAddress(address);
}
-
- public void start() {
+
+ public void start() {
/*bluetoothAdapter.startLeScan(
new UUID[]{ this.UUID_SERVICE },
this);
- Log.d("DEBUG", "BLE Scan Started");*/
- scanner.addObserver(this);
- Thread scannerThread = new Thread(scanner);
- scannerThread.start();
- }
-
- public void stop() {
+ // Log.d("DEBUG", "BLE Scan Started");*/
+ scanner.addObserver(this);
+ Thread scannerThread = new Thread(scanner);
+ scannerThread.start();
+ }
+
+ public void stop() {
/*bluetoothAdapter.stopLeScan(this);*/
- scanner.deleteObserver(this);
- scanner.stop();
- }
-
+ scanner.deleteObserver(this);
+ scanner.stop();
+ }
+
// private void upgradeState(int newState) {
// if (newState > state) {
// updateState(newState);
@@ -114,16 +114,16 @@ private void updateState(BLEDeviceInfo devInfo, int newState) {
devInfo.State = newState;
//TO DO
//Send a BLEEvent with the new state
- Log.d(TAG, "Changing state to " + newState);
+ // Log.d(TAG, "Changing state to " + newState);
BLEEvent e = new BLEEvent();
- e.BLEEventType = BLEEvent.EVENT_DEVICE_STATE_CHANGE;
+ e.BLEEventType = BLEEvent.EVENT_DEVICE_STATE_CHANGE;
e.State = newState;
e.Contents = scanner.newDevices;
e.DeviceInfo = devInfo;
- SendEvent(e);
+ SendEvent(e);
}
-
- private final BroadcastReceiver bluetoothStateReceiver = new BroadcastReceiver() {
+
+ private final BroadcastReceiver bluetoothStateReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, 0);
@@ -144,8 +144,8 @@ public void onReceive(Context context, Intent intent) {
scanning = (bluetoothAdapter == null || bluetoothAdapter.getScanMode() != BluetoothAdapter.SCAN_MODE_NONE);
scanStarted &= scanning;
}
- //TO DO
- //Send a BLEEvent with the new state
+ //TO DO
+ //Send a BLEEvent with the new state
// BLEEvent e = new BLEEvent();
// e.Type = "State Changed";
// SendEvent(e);
@@ -156,10 +156,10 @@ public void onReceive(Context context, Intent intent) {
//Old code from before we created the BLEScanner class
// @Override
// public void onLeScan(BluetoothDevice device, final int rssi, final byte[] scanRecord) {
-// Log.d("DEBUG", "Got scanrecord " + scanRecord);
-// Log.d("DEBUG", "Got results from scan, device " + device.getName());
+// // Log.d("DEBUG", "Got scanrecord " + scanRecord);
+// // Log.d("DEBUG", "Got results from scan, device " + device.getName());
// bluetoothDevice = device;
-//
+//
// BLEDeviceInfo bleDevice = new BLEDeviceInfo(bluetoothDevice, rssi);
// bleDevices.InsertOrUpdate(bleDevice);
// BLEEvent e = new BLEEvent();
@@ -167,24 +167,24 @@ public void onReceive(Context context, Intent intent) {
// e.Contents = bleDevices;
// SendEvent(e);
// }
-
+
private void SendEvent(BLEEvent e)
{
-// Log.d("DEBUG", "Sending event up");
- setChanged();
- notifyObservers(e);
+// // Log.d("DEBUG", "Sending event up");
+ setChanged();
+ notifyObservers(e);
+ }
+
+ @Override
+ public void update(Observable observable, Object data) {
+ //// Log.d("DEBUG", "Received event from BLEScanner");
+ BLEEvent e = new BLEEvent();
+ e.BLEEventType = BLEEvent.EVENT_UPDATE;
+ e.Contents = (BLEDeviceInfoList)data;
+ SendEvent(e);
}
-
- @Override
- public void update(Observable observable, Object data) {
- Log.d("DEBUG", "Received event from BLEScanner");
- BLEEvent e = new BLEEvent();
- e.BLEEventType = BLEEvent.EVENT_UPDATE;
- e.Contents = (BLEDeviceInfoList)data;
- SendEvent(e);
- }
-
- // Implements callback methods for GATT events that the app cares about. For example,
+
+ // Implements callback methods for GATT events that the app cares about. For example,
// connection change and services discovered.
private final BluetoothGattCallback mGattCallback = new BluetoothGattCallback() {
@Override
@@ -204,19 +204,19 @@ public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
BLEDeviceInfo devInfo = GetBLEDeviceInfoByAddress(gatt.getDevice().getAddress());
- Log.d("BLEManager", "Found status " + status);
+ //// Log.d("BLEManager", "Found status " + status);
if (status == BluetoothGatt.GATT_SUCCESS) {
devInfo.mBluetoothGattService = gatt.getService(UUID_SERVICE);
- Log.d("BLEManager", "Looking for service " + UUID_SERVICE);
-
+ // Log.d("BLEManager", "Looking for service " + UUID_SERVICE);
+
ArrayList services = (ArrayList) gatt.getServices();
Iterator it = services.iterator();
while(it.hasNext())
{
- BluetoothGattService obj = it.next();
- Log.d("BLEManager", "Found GATT service " + obj.getUuid());
+ BluetoothGattService obj = it.next();
+ // Log.d("BLEManager", "Found GATT service " + obj.getUuid());
}
-
+
if (devInfo.mBluetoothGattService == null) {
Log.e(TAG, "Sparkle GATT service not found!");
return;
@@ -224,39 +224,39 @@ public void onServicesDiscovered(BluetoothGatt gatt, int status) {
BluetoothGattCharacteristic receiveCharacteristic =
devInfo. mBluetoothGattService.getCharacteristic(UUID_RECEIVE);
-
+
ArrayList characteristics = (ArrayList) devInfo.mBluetoothGattService.getCharacteristics();
Iterator iter = characteristics.iterator();
while(iter.hasNext())
{
- BluetoothGattCharacteristic obj = iter.next();
- Log.d("BLEManager", "Found GATT characteristic " + obj.getUuid());
+ BluetoothGattCharacteristic obj = iter.next();
+ // Log.d("BLEManager", "Found GATT characteristic " + obj.getUuid());
BluetoothGattDescriptor descr =
- obj.getDescriptor(obj.getUuid());
+ obj.getDescriptor(obj.getUuid());
if (descr != null) {
- Log.d("BLEManager", "GATT characteristic has descriptor" + descr.toString());
+ // Log.d("BLEManager", "GATT characteristic has descriptor" + descr.toString());
} else {
- Log.d("BLEManager", "GATT characteristic has no descriptor");
+ // Log.d("BLEManager", "GATT characteristic has no descriptor");
}
}
-
-
+
+
if (receiveCharacteristic != null) {
- ArrayList descriptors = (ArrayList) receiveCharacteristic.getDescriptors();
+ ArrayList descriptors = (ArrayList) receiveCharacteristic.getDescriptors();
Iterator dIter = descriptors.iterator();
while(dIter.hasNext())
{
- BluetoothGattDescriptor obj = dIter.next();
- Log.d("BLEManager", "Found GATT descriptor " + obj.getUuid());
+ BluetoothGattDescriptor obj = dIter.next();
+ // Log.d("BLEManager", "Found GATT descriptor " + obj.getUuid());
}
BluetoothGattDescriptor receiveConfigDescriptor =
receiveCharacteristic.getDescriptor(UUID_CLIENT_CONFIGURATION);
if (receiveConfigDescriptor != null) {
- gatt.setCharacteristicNotification(receiveCharacteristic, true);
- receiveConfigDescriptor.setValue(
- BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
- gatt.writeDescriptor(receiveConfigDescriptor);
- Log.d("BLEManager", "Descriptr Notified");
+ gatt.setCharacteristicNotification(receiveCharacteristic, true);
+ receiveConfigDescriptor.setValue(
+ BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
+ gatt.writeDescriptor(receiveConfigDescriptor);
+ // Log.d("BLEManager", "Descriptr Notified");
} else {
Log.e(TAG, "Sparkle receive config descriptor not found!");
}
@@ -276,25 +276,25 @@ public void onServicesDiscovered(BluetoothGatt gatt, int status) {
public void onCharacteristicRead(BluetoothGatt gatt,
BluetoothGattCharacteristic characteristic,
int status) {
-// Log.d("BLEManager", "Characteristic Read");
+// // Log.d("BLEManager", "Characteristic Read");
if (status == BluetoothGatt.GATT_SUCCESS) {
-// Log.d("DEBUG", "Data available");
+// // Log.d("DEBUG", "Data available");
BLEDeviceInfo devInfo = GetBLEDeviceInfoByAddress(gatt.getDevice().getAddress());
// broadcastUpdate(ACTION_DATA_AVAILABLE, characteristic);
BLEEvent event = new BLEEvent();
- event.BLEEventType = BLEEvent.EVENT_RX_DATA;
+ event.BLEEventType = BLEEvent.EVENT_RX_DATA;
event.State = devInfo.State;
event.DeviceInfo = devInfo;
- event.Contents = characteristic.getValue();
- Log.d(TAG, "onCharacteristicRead Data read is of size: " + ((byte[])(event.Contents)).length);
- SendEvent(event);
+ event.Contents = characteristic.getValue();
+ // Log.d(TAG, "onCharacteristicRead Data read is of size: " + ((byte[])(event.Contents)).length);
+ SendEvent(event);
}
}
@Override
public void onCharacteristicChanged(BluetoothGatt gatt,
BluetoothGattCharacteristic characteristic) {
-// Log.d("BLEManager", "Characteristic Read");
+// // Log.d("BLEManager", "Characteristic Read");
BLEDeviceInfo devInfo = GetBLEDeviceInfoByAddress(gatt.getDevice().getAddress());
// broadcastUpdate(ACTION_DATA_AVAILABLE, characteristic);
BLEEvent event = new BLEEvent();
@@ -302,26 +302,26 @@ public void onCharacteristicChanged(BluetoothGatt gatt,
event.State = devInfo.State;
event.DeviceInfo = devInfo;
event.Contents = characteristic.getValue();
- Log.d(TAG, "onCharacteristicChanged Data read is of size: " + ((byte[])(event.Contents)).length);
+ // Log.d(TAG, "onCharacteristicChanged Data read is of size: " + ((byte[])(event.Contents)).length);
SendEvent(event);
}
-
+
@Override
- public void onCharacteristicWrite (BluetoothGatt gatt,
- BluetoothGattCharacteristic characteristic,
- int status) {
+ public void onCharacteristicWrite (BluetoothGatt gatt,
+ BluetoothGattCharacteristic characteristic,
+ int status) {
BLEDeviceInfo devInfo = GetBLEDeviceInfoByAddress(gatt.getDevice().getAddress());
-// android.util.Log.d("BLEManager ", " Millisecinds on event " + System.currentTimeMillis());
- BluetoothGattCharacteristic writeChar =
+// android.util.// Log.d("BLEManager ", " Millisecinds on event " + System.currentTimeMillis());
+ BluetoothGattCharacteristic writeChar =
devInfo.mBluetoothGattService.getCharacteristic(UUID_SEND);
- if (writeChar == characteristic) {
-// android.util.Log.d("BLEManager ", " Millisecinds success " + System.currentTimeMillis());
+ if (writeChar == characteristic) {
+// android.util.// Log.d("BLEManager ", " Millisecinds success " + System.currentTimeMillis());
devInfo.transmissionDone = true;
- }
-
+ }
+
}
};
-
+
// private final BroadcastReceiver sparkleReceiver = new BroadcastReceiver() {
// @Override
// public void onReceive(Context context, Intent intent) {
@@ -339,7 +339,7 @@ public void onCharacteristicWrite (BluetoothGatt gatt,
// }
// }
// };
-
+
private void broadcastUpdate(final String action) {
final Intent intent = new Intent(action);
context.sendBroadcast(intent, Manifest.permission.BLUETOOTH);
@@ -349,24 +349,24 @@ private void broadcastUpdate(final String action,
final BluetoothGattCharacteristic characteristic) {
if (UUID_RECEIVE.equals(characteristic.getUuid())) {
final Intent intent = new Intent(action);
-// Log.d("BLEManager", "Got back ");
-
+// // Log.d("BLEManager", "Got back ");
+
byte[] data = characteristic.getValue();
-
-// Log.d("BLEManager", "Length of data: " + data.length);
+
+// // Log.d("BLEManager", "Length of data: " + data.length);
String str;
- try {
- str = new String(data, "UTF-8");
-// Log.d("BLEManager", str);
- } catch (UnsupportedEncodingException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
+ try {
+ str = new String(data, "UTF-8");
+// // Log.d("BLEManager", str);
+ } catch (UnsupportedEncodingException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
intent.putExtra(EXTRA_DATA, characteristic.getValue());
context.sendBroadcast(intent, Manifest.permission.BLUETOOTH);
}
}
-//
+ //
// public class LocalBinder extends Binder {
// GloveService getService() {
// return GloveService.this;
@@ -426,7 +426,7 @@ private boolean initialize() {
*/
public boolean connect(final String address) {
BLEDeviceInfo devInfo = GetBLEDeviceInfoByAddress(address);
-
+
if (mBluetoothAdapter == null || address == null) {
Log.w(TAG, "BluetoothAdapter not initialized or unspecified address.");
return false;
@@ -435,7 +435,7 @@ public boolean connect(final String address) {
// Previously connected device. Try to reconnect.
// if (mBluetoothDeviceAddress != null && address.equals(mBluetoothDeviceAddress)
// && mBluetoothGatt != null) {
-// Log.d(TAG, "Trying to use an existing mBluetoothGatt for connection.");
+// // Log.d(TAG, "Trying to use an existing mBluetoothGatt for connection.");
// return mBluetoothGatt.connect();
// }
@@ -443,7 +443,7 @@ public boolean connect(final String address) {
// We want to directly connect to the device, so we are setting the autoConnect
// parameter to false.
devInfo.mBluetoothGatt = device.connectGatt(context, false, mGattCallback);
- Log.d(TAG, "Trying to create a new connection.");
+ // Log.d(TAG, "Trying to create a new connection.");
return true;
}
@@ -462,7 +462,7 @@ public void disconnect(String address) {
devInfo.mBluetoothGatt.disconnect();
}
-// /**
+ // /**
// * After using a given BLE device, the app must call this method to ensure resources are
// * released properly.
// */
@@ -488,13 +488,13 @@ public void disconnect(String address) {
//
public boolean isInitialized(String address) {
BLEDeviceInfo devInfo = GetBLEDeviceInfoByAddress(address);
- if (devInfo.mBluetoothGatt == null || devInfo.mBluetoothGattService == null) {
- return false;
- } else {
- return true;
- }
+ if (devInfo.mBluetoothGatt == null || devInfo.mBluetoothGattService == null) {
+ return false;
+ } else {
+ return true;
+ }
}
-
+
static public boolean send(BLEDeviceInfo devInfo, byte[] data, byte[] header) {
if (devInfo.mBluetoothGatt == null || devInfo.mBluetoothGattService == null) {
Log.w(TAG, "BluetoothGatt not initialized");
@@ -520,11 +520,11 @@ static public boolean send(BLEDeviceInfo devInfo, byte[] data, byte[] header) {
characteristic.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_NO_RESPONSE);
devInfo.transmissionDone = false;
-// android.util.Log.d("BLEManager ", " Millisecinds before send " + System.currentTimeMillis());
+// android.util.// Log.d("BLEManager ", " Millisecinds before send " + System.currentTimeMillis());
devInfo.mBluetoothGatt.writeCharacteristic(characteristic);
while (!devInfo.transmissionDone) {
}
- android.util.Log.d("BLEManager ", "Sent Header");
+ // android.util.Log.d("BLEManager ", "Sent Header");
}
byte[] buffer = new byte[20];
@@ -536,34 +536,32 @@ static public boolean send(BLEDeviceInfo devInfo, byte[] data, byte[] header) {
tmpBuffer[originalIndex] = data[chunkPointer+j];
originalIndex++;
}
-// Log.d("BLEManager", "Sending down this many bytes on BLE: " + tmpBuffer.length);
+// // Log.d("BLEManager", "Sending down this many bytes on BLE: " + tmpBuffer.length);
StringBuilder sb = new StringBuilder();
for (byte b : tmpBuffer) {
sb.append(String.format("%02X ", b));
}
-// Log.d("BLEManager", "Sending Down: " + sb.toString());
+// // Log.d("BLEManager", "Sending Down: " + sb.toString());
characteristic.setValue(tmpBuffer);
characteristic.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_NO_RESPONSE);
devInfo.transmissionDone = false;
-// android.util.Log.d("BLEManager ", " Millisecinds before send " + System.currentTimeMillis());
+// android.util.// Log.d("BLEManager ", " Millisecinds before send " + System.currentTimeMillis());
success = devInfo.mBluetoothGatt.writeCharacteristic(characteristic);
while (!devInfo.transmissionDone) {
}
-// Log.d("BLEManager", "Success of send: " + success);
+// // Log.d("BLEManager", "Success of send: " + success);
}
byte[] eosBuffer = {0x03, 0x04};
characteristic.setValue(eosBuffer);
characteristic.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_NO_RESPONSE);
devInfo.transmissionDone = false;
-// android.util.Log.d("BLEManager ", " Millisecinds before send " + System.currentTimeMillis());
+// android.util.// Log.d("BLEManager ", " Millisecinds before send " + System.currentTimeMillis());
success = devInfo.mBluetoothGatt.writeCharacteristic(characteristic);
while (!devInfo.transmissionDone) {}
- android.util.Log.d("BLEManager ", "Sent EOS" );
- android.util.Log.d("BLEManager ", Integer.toString(chunkPointer) + " bytes have gone down so far" );
}
return success;
}
@@ -575,4 +573,4 @@ private static IntentFilter getIntentFilter() {
filter.addAction(ACTION_DATA_AVAILABLE);
return filter;
}
-}
+}
\ No newline at end of file
diff --git a/app/src/main/java/BLEManagement/BLEScanner.java b/app/src/main/java/BLEManagement/BLEScanner.java
new file mode 100644
index 0000000..ae19842
--- /dev/null
+++ b/app/src/main/java/BLEManagement/BLEScanner.java
@@ -0,0 +1,57 @@
+package BLEManagement;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.util.Log;
+
+import java.util.Observable;
+
+public class BLEScanner extends Observable implements Runnable, BluetoothAdapter.LeScanCallback {
+
+ private boolean runScanner = false;
+ BLEDeviceInfoList newDevices;
+
+ public BLEScanner()
+ {
+ newDevices = new BLEDeviceInfoList();
+ }
+
+ @Override
+ public void run() {
+ runScanner = true;
+ BLEDeviceInfoList devices = new BLEDeviceInfoList();
+
+ //// Log.d("BLEScanner", "Running Scan!");
+ newDevices.clearNonConnected();
+ BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
+ bluetoothAdapter.startLeScan(
+ //new UUID[]{ BLEManager.UUID_SERVICE },
+ this);
+ //// Log.d("DEBUG", "BLE Scan Started");
+ while (runScanner)
+ {
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ bluetoothAdapter.stopLeScan(this);
+ }
+
+ public void stop()
+ {
+ runScanner = false;
+ }
+
+ @Override
+ public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
+ // Log.d("BLEScanner", "Found device " + device.getName());
+ BLEDeviceInfo bleDevice = new BLEDeviceInfo(device, rssi);
+ newDevices.InsertOrUpdate(bleDevice);
+ setChanged();
+ notifyObservers(newDevices);
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/banc/BLEManagement/BluetoothHelper.java b/app/src/main/java/BLEManagement/BluetoothHelper.java
similarity index 96%
rename from app/src/main/java/com/banc/BLEManagement/BluetoothHelper.java
rename to app/src/main/java/BLEManagement/BluetoothHelper.java
index 71b38aa..5429c22 100644
--- a/app/src/main/java/com/banc/BLEManagement/BluetoothHelper.java
+++ b/app/src/main/java/BLEManagement/BluetoothHelper.java
@@ -1,10 +1,11 @@
-package com.banc.BLEManagement;
+package BLEManagement;
import android.bluetooth.BluetoothDevice;
import java.util.UUID;
-import com.banc.sparkle_gateway.HexAsciiHelper;
+import gateway.HexAsciiHelper;
+
public class BluetoothHelper {
public static String shortUuidFormat = "871e%04X-38ff-77b1-ed41-9fb3aa142db2";
@@ -14,7 +15,7 @@ public static UUID sixteenBitUuid(long shortUuid) {
assert shortUuid >= 0 && shortUuid <= 0xFFFF;
return UUID.fromString(String.format(shortUuidFormat, shortUuid & 0xFFFF));
}
-
+
public static UUID sixteenBitUuidOld(long shortUuid) {
assert shortUuid >= 0 && shortUuid <= 0xFFFF;
return UUID.fromString(String.format(oldUuidFormat, shortUuid & 0xFFFF));
@@ -55,4 +56,4 @@ private static String parseScanRecord(byte[] scanRecord) {
}
return output.toString();
}
-}
+}
\ No newline at end of file
diff --git a/app/src/main/java/BLEManagement/Utilities.java b/app/src/main/java/BLEManagement/Utilities.java
new file mode 100644
index 0000000..42dbc97
--- /dev/null
+++ b/app/src/main/java/BLEManagement/Utilities.java
@@ -0,0 +1,30 @@
+package BLEManagement;
+
+import android.bluetooth.BluetoothAdapter;
+import android.util.Log;
+
+/**
+ * Created by pscot on 2/24/2016.
+ */
+public class Utilities {
+
+ private static final String TAG = "BluzUtils";
+
+ public Utilities() {
+ }
+
+ public boolean checkForBluetooth() {
+ BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
+ if (mBluetoothAdapter == null) {
+ Log.e(TAG, "BLE not supported");
+ return false;
+ } else if (!mBluetoothAdapter.isEnabled()) {
+ Log.e(TAG, "BLE not switched on...");
+ return false;
+ } else {
+
+ return true;
+ }
+ }
+
+}
diff --git a/app/src/main/java/com/banc/BLEManagement/BLEDeviceInfo.java b/app/src/main/java/com/banc/BLEManagement/BLEDeviceInfo.java
deleted file mode 100644
index 666ac1c..0000000
--- a/app/src/main/java/com/banc/BLEManagement/BLEDeviceInfo.java
+++ /dev/null
@@ -1,221 +0,0 @@
-package com.banc.BLEManagement;
-
-import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothGatt;
-import android.bluetooth.BluetoothGattService;
-import android.util.Log;
-
-import com.banc.sparkle_gateway.BLEService;
-import com.banc.sparkle_gateway.ParticleSocket;
-
-import java.io.IOException;
-
-import io.particle.android.sdk.cloud.ParticleCloud;
-import io.particle.android.sdk.cloud.ParticleCloudException;
-import io.particle.android.sdk.cloud.ParticleCloudSDK;
-import io.particle.android.sdk.utils.Async;
-import io.particle.android.sdk.utils.Toaster;
-
-public class BLEDeviceInfo implements Runnable {
- final public static int STATE_BLUETOOTH_OFF = 1;
- final public static int STATE_DISCONNECTED = 2;
- final public static int STATE_CONNECTING = 3;
- final public static int STATE_CONNECTED = 4;
-
- public int State;
- public ParticleSocket particleSocket;
- public BluetoothGatt mBluetoothGatt;
- public BluetoothGattService mBluetoothGattService;
-
- private BluetoothDevice bleDevice;
- private int rssi;
- private String cloudName;
- private String cloudId;
- private Boolean isClaimed;
-
-
- public BLEDeviceInfo(BluetoothDevice device, final int rssi)
- {
- this.bleDevice = device;
- this.rssi = rssi;
- cloudName = "";
- cloudId = "";
- isClaimed = false;
- particleSocket = new ParticleSocket();
- ulBuffer = new byte[512];
- ulBufferLength = 0;
- }
-
- public void UpdateRSSI(int newRSSI)
- {
- rssi = newRSSI;
- }
-
- public int GetRSSI() { return rssi; }
- public String GetName() { return bleDevice.getName(); }
- public String GetMAC() { return bleDevice.getAddress(); }
- public String GetCloudID() { return cloudId; }
- public String GetCloudName() { return cloudName; }
- public boolean IsClaimed() {return isClaimed; }
- public void SetClaimed(boolean claimed) {isClaimed = claimed; }
-
- //buffers for data
- byte[] dlBuffer, ulBuffer;
- int ulBufferLength;
-
- //internal flags so the manager can keep track of successful transmissions
- boolean transmissionDone = false;
-
- //internal var to keep track of last service
- byte lastService = 0x00;
-
- public boolean Running = false;
- @Override
- public void run() {
- Running = true;
- // TODO Auto-generated method stub
- while (Running) {
-
- if (particleSocket.Connected()) {
- try {
- int bytesAvailable = particleSocket.Available();
-// Log.d("BLEService", "Connected: " + Boolean.toString(sparkSocket.Connected()) + " Bytes Available: " + bytesAvailable);
- if (bytesAvailable > 0) {
- dlBuffer = particleSocket.Read();
-// Log.d("BLEService", "We read some bytes from SPark Cloud: " + dlBuffer.length);
- byte[] header = {0x01, 0x00};
- BLEManager.send(this, dlBuffer, header);
- }
- try {
- Thread.sleep(10);
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- }
-
- public void stop()
- {
- Running = false;
- }
-
- public void disconnect() {
- stop();
- try {
- Thread.sleep(10);
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- try {
- particleSocket.Disconnect();
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- mBluetoothGatt.close();
-
- mBluetoothGatt = null;
- mBluetoothGattService = null;
- }
-
- //Called when the SparkLE transmits data to us
- public synchronized void processData(byte[] data) {
- Log.d("BLEService", "Got data of length " + data.length);
- Log.d("BLEService", "Last Service " + Byte.toString(lastService));
-
- StringBuilder sb = new StringBuilder();
- for (byte b : data) {
- sb.append(String.format("%02X ", b));
- }
-// Log.d("BLEService", "Processing Data: " + sb.toString());
-
- if (data[0] == 0x03 && data[1] == 0x04) {
- if (lastService == 0x01) {
- try {
- if (particleSocket.Connected()) {
- Log.d("BLEService", "Got a full buffer, attempting to send it up");
- byte[] tmpBuffer = new byte[ulBufferLength];
- System.arraycopy(ulBuffer, 0, tmpBuffer, 0, ulBufferLength);
-// Log.d("BLEService", "About to write this many bytes " + tmpBuffer.length);
- particleSocket.Write(tmpBuffer);
-// Log.d("BLEManager", "Received this many bytes from BLE: " + tmpBuffer.length);
- } else {
- try {
- Log.d("SparkLEService", "Not Connected. Attempting to connect to cloud");
- particleSocket.Connect();
- Thread rThread = new Thread(this);
- //rThread.setUncaughtExceptionHandler(new ExceptionHandler());
- rThread.start();
- ulBuffer = new byte[512];
- ulBufferLength = 0;
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- } else if (lastService == 0x02) {
- final StringBuilder id = new StringBuilder();
- for (int i = 0; i < ulBufferLength; i++) {
- id.append(String.format("%02x", ulBuffer[i]));
- }
- Log.d("Device ID", id.toString());
- this.cloudId = id.toString();
- Async.executeAsync(ParticleCloudSDK.getCloud(), new Async.ApiWork() {
- @Override
- public Object callApi(ParticleCloud sparkCloud) throws ParticleCloudException, IOException {
- return ParticleCloudSDK.getCloud().getDevice(id.toString()).getName();
- }
-
- @Override
- public void onSuccess(Object value) {
- Log.d("Device Name Retreieved", (String)value);
- cloudName = (String)value;
- isClaimed = true;
- BLEService.DeviceInfoChanged();
- }
-
- @Override
- public void onFailure(ParticleCloudException e) {
- Log.d("Device is not claimed","");
- isClaimed = false;
- BLEService.DeviceInfoChanged();
- }
- });
-
- }
- ulBuffer = new byte[512];
- ulBufferLength = 0;
- } else {
-
- if (ulBufferLength == 0) {
- lastService = data[0];
- int headerBytes = 1;
- if (lastService == 0x01) {
- headerBytes = 2;
- }
- //this is the first packaet in the stream. check the header
- System.arraycopy(data, headerBytes, ulBuffer, ulBufferLength, data.length-headerBytes);
- ulBufferLength += (data.length-headerBytes);
- } else {
- System.arraycopy(data, 0, ulBuffer, ulBufferLength, data.length);
- ulBufferLength += (data.length);
- }
- }
- //bleManager.send(new byte[]{0x55});
-
- //TO DO: Handle BLE messages
- }
-
- public void PollParticleId() {
- byte[] requestIdBuffer = {0x02, 0x00};
- BLEManager.send(this, requestIdBuffer, null);
- }
-}
diff --git a/app/src/main/java/com/banc/BLEManagement/BLEDeviceInfoList.java b/app/src/main/java/com/banc/BLEManagement/BLEDeviceInfoList.java
deleted file mode 100644
index ffce73c..0000000
--- a/app/src/main/java/com/banc/BLEManagement/BLEDeviceInfoList.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package com.banc.BLEManagement;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-
-public class BLEDeviceInfoList {
-
- private List bleDevices;
-
- public BLEDeviceInfoList()
- {
- bleDevices = new ArrayList();
- }
-
- public void InsertOrUpdate(BLEDeviceInfo bleDevice)
- {
- Iterator deviceIter = bleDevices.iterator();
- boolean found = false;
- while(deviceIter.hasNext()){
- BLEDeviceInfo existingBleDevice = deviceIter.next();
- if (existingBleDevice.GetMAC().equalsIgnoreCase(bleDevice.GetMAC()))
- {
- found = true;
- existingBleDevice.UpdateRSSI(bleDevice.GetRSSI());
- break;
- }
- }
- if (!found)
- {
- bleDevices.add(bleDevice);
- }
- }
- public BLEDeviceInfo GetBLEDeviceInfo(int index)
- {
- return bleDevices.get(index);
- }
- public BLEDeviceInfo GetBLEDeviceInfoByAddress(String address)
- {
- for (BLEDeviceInfo b : bleDevices) {
- if (b.GetMAC() == address) {
- return b;
- }
- }
- return null;
- }
-
- public int GetCount()
- {
- return bleDevices.size();
- }
-
- public BLEDeviceInfoList MergeAndTakeUnique(BLEDeviceInfoList newDevices)
- {
- BLEDeviceInfoList mergedOverDevice = new BLEDeviceInfoList();
-
- Iterator deviceIter = newDevices.bleDevices.iterator();
- boolean found = false;
- while(deviceIter.hasNext()) {
- BLEDeviceInfo newBleDevice = deviceIter.next();
- if (!this.ContainsByAddress(newBleDevice))
- {
- mergedOverDevice.bleDevices.add(newBleDevice);
- }
- }
-
- return mergedOverDevice;
- }
-
- private boolean ContainsByAddress(BLEDeviceInfo bleDevice)
- {
- Iterator deviceIter = bleDevices.iterator();
- boolean found = false;
- while(deviceIter.hasNext()) {
- BLEDeviceInfo existingBleDevice = deviceIter.next();
- if (existingBleDevice.GetMAC().equalsIgnoreCase(bleDevice.GetMAC()))
- {
- found = true;
- break;
- }
- }
- return found;
- }
-
- public void clearNonConnected() {
- Iterator iter = bleDevices.listIterator();
- while (iter.hasNext()) {
- if (iter.next().State != BLEDeviceInfo.STATE_CONNECTED) {
- iter.remove();
- }
- }
- }
-}
diff --git a/app/src/main/java/com/banc/BLEManagement/BLEScanner.java b/app/src/main/java/com/banc/BLEManagement/BLEScanner.java
deleted file mode 100644
index 62a58b6..0000000
--- a/app/src/main/java/com/banc/BLEManagement/BLEScanner.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package com.banc.BLEManagement;
-
-import java.util.Observable;
-import java.util.UUID;
-
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.BluetoothDevice;
-import android.util.Log;
-
-public class BLEScanner extends Observable implements Runnable, BluetoothAdapter.LeScanCallback {
-
- private boolean runScanner = false;
- BLEDeviceInfoList newDevices;
-
- public BLEScanner()
- {
- newDevices = new BLEDeviceInfoList();
- }
-
- @Override
- public void run() {
- runScanner = true;
- BLEDeviceInfoList devices = new BLEDeviceInfoList();
-
- Log.d("BLEScanner", "Running Scan!");
- newDevices.clearNonConnected();
- BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
- bluetoothAdapter.startLeScan(
- //new UUID[]{ BLEManager.UUID_SERVICE },
- this);
- Log.d("DEBUG", "BLE Scan Started");
- while (runScanner)
- {
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- bluetoothAdapter.stopLeScan(this);
- }
-
- public void stop()
- {
- runScanner = false;
- }
-
- @Override
- public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
- Log.d("BLEScanner", "Found device " + device.getName());
- BLEDeviceInfo bleDevice = new BLEDeviceInfo(device, rssi);
- newDevices.InsertOrUpdate(bleDevice);
- setChanged();
- notifyObservers(newDevices);
- }
-
-}
diff --git a/app/src/main/java/com/banc/sparkle_gateway/BLEDisplay.java b/app/src/main/java/com/banc/sparkle_gateway/BLEDisplay.java
deleted file mode 100644
index 57512c9..0000000
--- a/app/src/main/java/com/banc/sparkle_gateway/BLEDisplay.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package com.banc.sparkle_gateway;
-
-import com.banc.BLEManagement.BLEDeviceInfo;
-import com.banc.BLEManagement.BLEDeviceInfoList;
-import com.banc.BLEManagement.BLEEvent;
-import com.banc.BLEManagement.BLEManager;
-
-import android.graphics.Color;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.os.RemoteException;
-import android.app.Activity;
-import android.content.Intent;
-import android.util.Log;
-import android.view.Menu;
-import android.widget.TextView;
-import android.graphics.Typeface;
-
-public class BLEDisplay extends Activity {
-
- private ServiceManager sManager;
- private String address;
- TextView mainTitle;
- String name;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_glove_display);
-
- Intent intent = getIntent();
- name = intent.getStringExtra(BLESelection.DEVICE_MESSAGE);
-
- mainTitle = (TextView)this.findViewById(R.id.textView1);
- mainTitle.setTextColor(Color.GREEN);
- mainTitle.setText("You are connected to: " + name);
- mainTitle.setTypeface(null, Typeface.BOLD);
-
- this.sManager = new ServiceManager(this, BLEService.class, new HandlerExtension());
- }
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.main, menu);
- return true;
- }
- @Override
- protected void onDestroy() {
- super.onDestroy(); // Always call the superclass method first
-
- Log.d("GloveDisplay", "Disconnecting from BLE device " + address);
- Message msg = new Message();
- Bundle b = new Bundle();
- b.putInt("info", BLEService.DISCONNECT);
- b.putString("address", address);
- msg.setData(b);
- try {
- sManager.send(msg);
- } catch (RemoteException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- sManager.unbind();
- }
-
- private class HandlerExtension extends Handler {
-
- @Override
- public void handleMessage(Message msg) {
- Log.d("DEBUG", "Received Message in UI");
- int type = msg.getData().getInt("BLEEventType", -1);
-
- if (type != -1) {
- Log.d("BLEDisplay", "Received BLEEvent in UI");
- //this means it is a BLEEvent from the service
- BLEEvent event = (BLEEvent) msg.obj;
- if (event.BLEEventType == BLEEvent.EVENT_DEVICE_STATE_CHANGE) {
- int newState = event.State;
- if (newState == BLEDeviceInfo.STATE_DISCONNECTED)
- {
- mainTitle.setTextColor(Color.RED);
- mainTitle.setText("You are disconnected from: " + name);
- }
- }
- }
- msg.recycle();
- }
- }
-
-}
diff --git a/app/src/main/java/com/banc/sparkle_gateway/BLESelection.java b/app/src/main/java/com/banc/sparkle_gateway/BLESelection.java
deleted file mode 100644
index 082c235..0000000
--- a/app/src/main/java/com/banc/sparkle_gateway/BLESelection.java
+++ /dev/null
@@ -1,303 +0,0 @@
-package com.banc.sparkle_gateway;
-
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.os.RemoteException;
-import android.app.ActionBar.LayoutParams;
-import android.app.Activity;
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.BluetoothGatt;
-import android.bluetooth.BluetoothGattService;
-import android.bluetooth.BluetoothManager;
-import android.content.Intent;
-import android.graphics.Color;
-import android.util.Log;
-import android.view.Menu;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemClickListener;
-import android.widget.AdapterView.OnItemSelectedListener;
-import android.widget.EditText;
-import android.widget.ListView;
-import android.widget.Button;
-import android.widget.TableLayout;
-import android.widget.TableRow;
-import android.widget.TextView;
-
-import io.particle.android.sdk.cloud.ParticleCloud;
-import io.particle.android.sdk.cloud.ParticleCloudException;
-import io.particle.android.sdk.cloud.ParticleCloudSDK;
-import io.particle.android.sdk.utils.Async;
-import io.particle.android.sdk.utils.Toaster;
-
-import java.io.IOException;
-import java.util.UUID;
-
-import com.banc.BLEManagement.BLEDeviceInfo;
-import com.banc.BLEManagement.BLEDeviceInfoList;
-import com.banc.BLEManagement.BLEEvent;
-
-public class BLESelection extends Activity {
-
- public final static String DEVICE_MESSAGE = "com.banclabs.gloveapp.DeviceAddress";
-
- static private ServiceManager sManager;
- static BLEDeviceInfoList currentDevices;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- Log.d("GloveSelection", "Creating Glove Selection");
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_ble_list);
-
- ParticleCloudSDK.init(this);
-
- this.sManager = new ServiceManager(this, BLEService.class, new HandlerExtension());
- if (!sManager.isRunning()) {
- Log.d("GloveSelection", "Service is not running. Starting!");
- sManager.start();
- }
- }
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.main, menu);
- return true;
- }
-
- @Override
- protected void onStart() {
- Log.d("GloveSelection", "Starting Glove Selection");
- //always do this first
- super.onStart();
-
- Button loginButton = (Button)findViewById(R.id.loginButton);
- Button scanButton = (Button)findViewById(R.id.scanButton);
-
- if (ParticleCloudSDK.getCloud().isLoggedIn()) {
- loginButton.setText("Logout");
- }
-
- sManager.bind();
- //tell the service to stop discovery
- Message msg = new Message();
- Bundle b = new Bundle();
- b.putInt("info", BLEService.START_DISCOVERY);
- msg.setData(b);
- try {
- sManager.send(msg);
- } catch (RemoteException e) {
- e.printStackTrace();
- }
-
- intent = new Intent(this, BLEDisplay.class);
- }
-
- @Override
- protected void onStop() {
- Log.d("GloveSelection", "Stopping Glove Selection");
- //always do this first
- super.onStop();
-
- //tell the service to stop discovery
- Message msg = new Message();
- Bundle b = new Bundle();
- b.putInt("info", BLEService.STOP_DISCOVERY);
- msg.setData(b);
- try {
- sManager.send(msg);
- } catch (RemoteException e) {
- e.printStackTrace();
- }
- }
-
- @Override
- protected void onDestroy() {
- Log.d("GloveSelection", "Destroying Glove Selection");
- super.onDestroy(); // Always call the superclass method first
-
- sManager.stop();
- sManager.unbind();
- }
-
- public void loginButtonPressed(View view) {
- // Do something in response to button
- Log.d("Clicked", "Clicked");
- if (ParticleCloudSDK.getCloud().isLoggedIn()) {
- ParticleCloudSDK.getCloud().logOut();
- Button loginButton = (Button)findViewById(R.id.loginButton);
- loginButton.setText("Login");
- } else {
- Intent intent = new Intent(this, ParticleLoginDisplay.class);
- startActivity(intent);
- }
- }
-
- public void scanButtonPressed(View view) {
- // Do something in response to button
- Log.d("Clicked", "Clicked");
- Button scanButton = (Button)findViewById(R.id.scanButton);
-
- if (scanButton.getText() == "Stop") {
- Message msg = new Message();
- Bundle b = new Bundle();
- b.putInt("info", BLEService.STOP_DISCOVERY);
- msg.setData(b);
- try {
- sManager.send(msg);
- } catch (RemoteException e) {
- e.printStackTrace();
- }
- scanButton.setText("Scan");
- } else {
- Message msg = new Message();
- Bundle b = new Bundle();
- b.putInt("info", BLEService.START_DISCOVERY);
- msg.setData(b);
- try {
- sManager.send(msg);
- } catch (RemoteException e) {
- e.printStackTrace();
- }
- scanButton.setText("Stop");
- }
-
- }
-
- Intent intent;
- private void updateTable(BLEDeviceInfoList devices)
- {
-
- currentDevices = devices;
- ListView list = (ListView)findViewById(R.id.listView1);
- // Getting adapter by passing xml data ArrayList
- DeviceAdapter adapter=new DeviceAdapter(this, devices);
- list.setAdapter(adapter);
-
-
- // Click event for single list row
-// list.setOnItemClickListener(new OnItemClickListener() {
-//
-// @Override
-// public void onItemClick(AdapterView> parent, View view,
-// int position, long id) {
-// android.widget.RelativeLayout item = (android.widget.RelativeLayout)view;
-//// TextView addressTextView = (TextView)item.findViewById(R.id.deviceAddress);
-// TextView nameTextView = (TextView)item.findViewById(R.id.deviceName);
-//// String address = addressTextView.getText().toString();
-// BLEDeviceInfo devInfo = currentDevices.GetBLEDeviceInfo(position);
-// String address = devInfo.GetMAC();
-// String deviceName = nameTextView.getText().toString();
-// Log.d("DEBUG", "User selected " + address);
-// Message msg = new Message();
-// Bundle b = new Bundle();
-// b.putInt("info", BLEService.CONNECT);
-// b.putString("address", address);
-// msg.setData(b);
-// try {
-// sManager.send(msg);
-// } catch (RemoteException e) {
-// e.printStackTrace();
-// }
-// sManager.unbind();
-// intent.putExtra(DEVICE_MESSAGE, deviceName);
-// startActivity(intent);
-// }
-//
-// });
- }
-
- private class HandlerExtension extends Handler {
-
- @Override
- public void handleMessage(Message msg) {
- int type = msg.getData().getInt("BLEEventType", -1);
-
- if (type != -1)
- {
- //this means it is a BLEEvent from the service
- BLEEvent event = (BLEEvent)msg.obj;
- if (event.BLEEventType == BLEEvent.EVENT_UPDATE || event.BLEEventType == BLEEvent.EVENT_DEVICE_STATE_CHANGE)
- {
- BLEDeviceInfoList devices = (BLEDeviceInfoList)event.Contents;
- updateTable(devices);
- }
- } else {
- //otherwise, it is a message from the ServiceManager
- type = msg.getData().getInt("info", -1);
- if (type == ServiceManager.SERVICE_BOUND)
- {
- Message discoverMessage = new Message();
- Bundle b = new Bundle();
- b.putInt("info", BLEService.START_DISCOVERY);
- discoverMessage.setData(b);
- try {
- sManager.send(discoverMessage);
- } catch (RemoteException e) {
- e.printStackTrace();
- }
- }
- }
- msg.recycle();
- }
- }
-
- public OnClickListener connectButtonClicked = new OnClickListener() {
- @Override
- public void onClick(View v) {
- int position = (Integer) v.getTag();
- Log.d("DEBUG","Clicked Connect Button at Position: " + position);
- BLEDeviceInfo devInfo = currentDevices.GetBLEDeviceInfo(position);
- String address = devInfo.GetMAC();
- Log.d("DEBUG", "User selected " + address);
- Message msg = new Message();
- Bundle b = new Bundle();
- if (devInfo.State == BLEDeviceInfo.STATE_CONNECTED) {
- b.putInt("info", BLEService.DISCONNECT);
- } else {
- b.putInt("info", BLEService.CONNECT);
- }
- b.putString("address", address);
- msg.setData(b);
- try {
- sManager.send(msg);
- } catch (RemoteException e) {
- e.printStackTrace();
- }
- }
- };
-
- public OnClickListener claimButtonClicked = new OnClickListener() {
- @Override
- public void onClick(View v) {
- int position = (Integer) v.getTag();
- Log.d("DEBUG","Clicked Claim Button at Position: " + position);
- final BLEDeviceInfo devInfo = currentDevices.GetBLEDeviceInfo(position);
- Async.executeAsync(ParticleCloudSDK.getCloud(), new Async.ApiWork() {
- @Override
- public Object callApi(ParticleCloud sparkCloud) throws ParticleCloudException, IOException {
- ParticleCloudSDK.getCloud().claimDevice(devInfo.GetCloudID());
- return 1;
- }
-
- @Override
- public void onSuccess(Object value) {
- Log.d("Device Claimed", "");
- devInfo.SetClaimed(true);
- Toaster.s(BLESelection.this, "Claimed!");
- updateTable(currentDevices);
- }
-
- @Override
- public void onFailure(ParticleCloudException e) {
- Log.d("Device Not Claimed", "");
- Toaster.s(BLESelection.this, "Error Claiming Device!");
- }
- });
- }
- };
-
-}
diff --git a/app/src/main/java/com/banc/sparkle_gateway/BLEService.java b/app/src/main/java/com/banc/sparkle_gateway/BLEService.java
deleted file mode 100644
index 2313aff..0000000
--- a/app/src/main/java/com/banc/sparkle_gateway/BLEService.java
+++ /dev/null
@@ -1,174 +0,0 @@
-package com.banc.sparkle_gateway;
-
-import java.io.IOException;
-import java.util.Observable;
-import java.util.Observer;
-
-import com.banc.BLEManagement.BLEDeviceInfo;
-import com.banc.BLEManagement.BLEEvent;
-import com.banc.BLEManagement.BLEManager;
-
-import android.media.AudioManager;
-import android.nfc.Tag;
-import android.os.Bundle;
-import android.os.Handler;
-import android.content.Intent;
-import android.os.Message;
-import android.os.Looper;
-import android.util.Log;
-
-public class BLEService extends AbstractService implements Observer {
- private BLEManager bleManager;
-
- final public static int CONNECT = 2;
- final public static int DISCONNECT = 3;
- final public static int START_DISCOVERY = 4;
- final public static int STOP_DISCOVERY = 5;
-
- private int MY_DATA_CHECK_CODE = 0;
-
- private boolean askedSMS = false;
- private boolean commandMode = false;
-
- AudioManager audio;
-
- @Override
- public void onStartService() {
- bleManager = new BLEManager(this.GetContext());
- bleManager.addObserver(this);
- }
-
- @Override
- public void onStopService() {
- bleManager.deleteObserver(this);
- bleManager.stop();
- }
-
- @Override
- public void onReceiveMessage(Message msg) {
- // TODO Auto-generated method stub
- Log.d("SparkLEService", "Received message");
- String address;
- try {
- int info = msg.getData().getInt("info");
- Log.d("SparkLEService", "Received message: " + info);
- switch (info)
- {
-// case GET_INFO:
-// BLEEvent event = new BLEEvent();
-// event.BLEEventType = BLEEvent.EVENT_UPDATE;
-// event.Contents = bleManager.bleDevices;
-// updateUI(event);
-// break;
- case CONNECT:
- address = msg.getData().getString("address");
- bleManager.connect(address);
- while (!bleManager.isInitialized(address)) {
- Thread.sleep(100);
- }
- Log.d("BLEService", "We are now connected and initialized!");
-// Thread.sleep(2000);
-// Log.d("BLEService", "Done Waiting 2 seconds");
-// sparkSocket.Connect();
- //bleManager.send(new byte[]{0x55});
-// readerThread = new ReaderThread();
-// Thread rThread = new Thread(readerThread);
-// //rThread.setUncaughtExceptionHandler(new ExceptionHandler());
-// rThread.start();
-// ulBuffer = new byte[512];
-// ulBufferLength = 0;
- break;
- case DISCONNECT:
- //String address = msg.getData().getString("address");
- Log.d("SparkLEService", "Disconnecting BLE");
- address = msg.getData().getString("address");
- BLEDeviceInfo devInfo = bleManager.GetBLEDeviceInfoByAddress(address);
- bleManager.disconnect(address);
- break;
- case START_DISCOVERY:
- Log.d("SparkLEService", "Starting Discovery");
- bleManager.start();
- break;
- case STOP_DISCOVERY:
- Log.d("SparkLEService", "Stopping Discovery");
- bleManager.stop();
- break;
-
- }
- }
- catch (Exception ex)
- {
- ex.printStackTrace();
- }
- }
-
- @Override
- public void update(Observable observable, Object data) {
- // TODO Auto-generated method stub
-// Log.d("SparkLEServices", "Received event from BLEManager");
- BLEEvent event = (BLEEvent)data;
- if (event.DeviceInfo == null) {
- Log.d("WTF!!!", "devInfo is null!");
- }
- switch (event.BLEEventType)
- {
- case BLEEvent.EVENT_UPDATE:
- updateUI(event);
- break;
- case BLEEvent.EVENT_DEVICE_STATE_CHANGE:
- handleNewState(event.DeviceInfo, event.State);
- updateUI(event);
- break;
- case BLEEvent.EVENT_RX_DATA:
- Log.d("BLEService", "Calling devInfo processData");
- event.DeviceInfo.processData((byte[]) event.Contents);
- break;
- }
- }
-
- private void handleNewState(final BLEDeviceInfo devInfo, int newState)
- {
- switch (newState)
- {
- case BLEDeviceInfo.STATE_DISCONNECTED:
- Log.d("BLEService", "Handling BLE disconnection");
- devInfo.disconnect();
- break;
- case BLEDeviceInfo.STATE_CONNECTED:
- Log.d("BLEService", "Starting timer for Get ID!!");
- Handler handler = new Handler(Looper.getMainLooper());
- handler.postDelayed(new Runnable() {
-
- public void run() {
- Log.d("BLEService", "Running Get ID!!");
- devInfo.PollParticleId();
- }
- }, 22000);
- break;
- }
- }
-
- private void updateUI(BLEEvent event) {
- Message msg = Message.obtain(null, 2);
- Bundle b = new Bundle();
- b.putInt("BLEEventType", event.BLEEventType);
- msg.setData(b);
- msg.obj = event;
- send(msg);
- }
-
- static public void DeviceInfoChanged() {
- BLEEvent event = new BLEEvent();
- event.Contents = BLEManager.GetList();
- event.BLEEventType = BLEEvent.EVENT_DEVICE_STATE_CHANGE;
- event.State = 0;
- event.DeviceInfo = null;
- Message msg = Message.obtain(null, 2);
- Bundle b = new Bundle();
- b.putInt("BLEEventType", event.BLEEventType);
- msg.setData(b);
- msg.obj = event;
- send(msg);
- }
-
-}
diff --git a/app/src/main/java/com/banc/sparkle_gateway/DeviceAdapter.java b/app/src/main/java/com/banc/sparkle_gateway/DeviceAdapter.java
deleted file mode 100644
index ab6511c..0000000
--- a/app/src/main/java/com/banc/sparkle_gateway/DeviceAdapter.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package com.banc.sparkle_gateway;
-
-import com.banc.BLEManagement.BLEDeviceInfo;
-import com.banc.BLEManagement.BLEDeviceInfoList;
-
-import android.app.Activity;
-import android.content.Context;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.Button;
-import android.widget.TextView;
-
-public class DeviceAdapter extends BaseAdapter {
-
- private BLEDeviceInfoList devices;
- private static LayoutInflater inflater=null;
- BLESelection parentActivity;
-
- public DeviceAdapter(Activity activity, BLEDeviceInfoList d) {
- devices = d;
- inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- parentActivity = (BLESelection)activity;
- }
-
- @Override
- public int getCount() {
- return devices.GetCount();
- }
-
- @Override
- public Object getItem(int position) {
- return devices.GetBLEDeviceInfo(position);
- }
-
- @Override
- public long getItemId(int position) {
- return devices.GetBLEDeviceInfo(position).hashCode();
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- View vi=convertView;
- if(convertView==null)
- vi = inflater.inflate(R.layout.list_row, null);
-
- TextView name = (TextView)vi.findViewById(R.id.deviceName); // title
-// TextView address = (TextView)vi.findViewById(R.id.deviceAddress); // artist name
- TextView rssi = (TextView)vi.findViewById(R.id.deviceRssi); // duration
- TextView cloudName = (TextView)vi.findViewById(R.id.deviceCloudName); // duration
- TextView cloudId = (TextView)vi.findViewById(R.id.deviceCloudId); // duration
- Button connectButton = (Button)vi.findViewById(R.id.connectButton); // duration
- Button claimButton = (Button)vi.findViewById(R.id.claimButton); // duration
-
- connectButton.setTag(position);
- connectButton.setOnClickListener(parentActivity.connectButtonClicked);
-
- claimButton.setTag(position);
- claimButton.setOnClickListener(parentActivity.claimButtonClicked);
-
- BLEDeviceInfo device = devices.GetBLEDeviceInfo(position);
-
- connectButton.setText("Connect");
- if (device.State == BLEDeviceInfo.STATE_CONNECTED) {
- connectButton.setText("Disconnect");
- }
-
- Log.d("DEBUG", "Adding device with name " + device.GetName());
- // Setting all values in listview
- name.setText(device.GetName());
-// address.setText(device.GetMAC());
- rssi.setText(Integer.toString(device.GetRSSI()));
- cloudId.setText(device.GetCloudID());
- cloudName.setText(device.GetCloudName());
- claimButton.setVisibility(View.INVISIBLE);
- if (device.GetCloudID() != "" && !device.IsClaimed()) {
- claimButton.setVisibility(View.VISIBLE);
- }
-
- return vi;
- }
-
-}
diff --git a/app/src/main/java/com/banc/sparkle_gateway/ParticleSocket.java b/app/src/main/java/com/banc/sparkle_gateway/ParticleSocket.java
deleted file mode 100644
index 696ad4d..0000000
--- a/app/src/main/java/com/banc/sparkle_gateway/ParticleSocket.java
+++ /dev/null
@@ -1,130 +0,0 @@
-package com.banc.sparkle_gateway;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.InetAddress;
-import java.net.Socket;
-import java.net.UnknownHostException;
-
-import android.os.AsyncTask;
-import android.util.Log;
-
-public class ParticleSocket {
- //live server
- String cloudServer = "54.208.229.4";
- //staging server
-// String cloudServer = "staging-device.spark.io";
- //local server
-// String cloudServer = "10.1.10.175";
- int cloudPort = 5683;
-
- private int CloudServiceID = 1;
-
- Socket socket;
- InputStream inputStream;
- OutputStream outputStream;
-
- public ParticleSocket() {
-
- }
-
- public void Connect() throws UnknownHostException, IOException {
-
- class Retrievedata extends AsyncTask {
- @Override
- protected String doInBackground(String... params) {
- try{
- Log.d("SparkleCloudInterface", "Connecting to Spark Cloud");
- InetAddress serveraddress=InetAddress.getByName(cloudServer);
- Log.d("ParticleSocket", "Got Here!");
- Log.d("SparkleCloudInterface", "We should have the IP Address " + serveraddress);
- socket = new Socket(cloudServer, cloudPort);
- Log.d("SparkleCloudInterface", "Did we connect?");
- Log.d("SparkleCloudInterface", Boolean.toString(socket.isConnected()));
- inputStream = socket.getInputStream();
- outputStream = socket.getOutputStream();
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- return null;
- }
- }
- String params = "";
- new Retrievedata().execute(params);
- }
- public void Disconnect() throws UnknownHostException, IOException {
- if (inputStream != null) {
- inputStream.close();
- inputStream = null;
- }
- if (outputStream != null) {
- outputStream.close();
- outputStream = null;
- }
- if (socket != null) {
- socket.close();
- socket = null;
- }
- }
- public void Write(byte[] data) throws IOException {
-// Log.d("SparkleCloudInterface", "When writing, are we connected: " + Boolean.toString(socket.isConnected()));
- outputStream.write(data);
- outputStream.flush();
- StringBuilder sb = new StringBuilder();
-
- for (byte b : data) {
- sb.append(String.format("%02X ", b));
- }
-// Log.d("SparkleCloudInterface", "Sending data: " + sb.toString());
- Log.d("SparkleCloudInterface", "Sending data to Cloud of size: " + data.length);
- }
- public int Available() throws IOException {
- if (inputStream != null) {
- return inputStream.available();
- }
- return 0;
- }
- public boolean Connected() {
- if (inputStream != null) {
- return socket.isConnected();
- } else {
- return false;
- }
- }
- public byte[] Read() throws IOException {
- //need to append our service ID and socket number to the beginning of the data
- byte[] data = new byte[0];
- if (inputStream != null) {
- int bytesAvailable = inputStream.available();
-
- try {
- Thread.sleep(500);
- } catch (Exception ex) {
- ex.printStackTrace();
- }
-
- bytesAvailable = inputStream.available();
- data = new byte[bytesAvailable];
-
-// //copy the cloud data in with the service ID and socket number
- inputStream.read(data, 0, bytesAvailable);
-
-
-// byte[] data = new byte[inputStream.available()];
-// inputStream.read(data, 0, inputStream.available());
-
- StringBuilder sb = new StringBuilder();
- for (byte b : data) {
- sb.append(String.format("%02X ", b));
- }
- Log.d("SparkleCloudInterface", "Got data: " + sb.toString());
- Log.d("SparkleCloudInterface", "Got data from Cloud of size: " + data.length);
- }
-
-// System.out.println(sb.toString());
- return data;
- }
-}
diff --git a/app/src/main/java/com/banc/sparkle_gateway/AbstractService.java b/app/src/main/java/gateway/AbstractService.java
similarity index 59%
rename from app/src/main/java/com/banc/sparkle_gateway/AbstractService.java
rename to app/src/main/java/gateway/AbstractService.java
index 41dc312..858d566 100644
--- a/app/src/main/java/com/banc/sparkle_gateway/AbstractService.java
+++ b/app/src/main/java/gateway/AbstractService.java
@@ -1,111 +1,111 @@
-package com.banc.sparkle_gateway;
-
-import java.util.ArrayList;
-
-import android.app.Service;
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.IBinder;
-import android.os.Message;
-import android.os.Messenger;
-import android.os.RemoteException;
-import android.util.Log;
-
-public abstract class AbstractService extends Service {
- static final int MSG_REGISTER_CLIENT = 9991;
- static final int MSG_UNREGISTER_CLIENT = 9992;
-
- static ArrayList mClients = new ArrayList(); // Keeps track of all current registered clients.
- final Messenger mMessenger = new Messenger(new IncomingHandler()); // Target we publish for clients to send messages to IncomingHandler.
-
- private class IncomingHandler extends Handler { // Handler of incoming messages from clients.
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case MSG_REGISTER_CLIENT:
- Log.i("MyService", "Client registered: "+msg.replyTo);
- mClients.add(msg.replyTo);
- Log.i("ServiceHandler", "Sending Message to Activity that Service is bound.");
- Message startedMessage = new Message();
- Bundle b = new Bundle();
- b.putInt("info", ServiceManager.SERVICE_BOUND);
- startedMessage.setData(b);
- try {
- msg.replyTo.send(startedMessage);
- } catch (RemoteException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- break;
- case MSG_UNREGISTER_CLIENT:
- Log.i("MyService", "Client un-registered: "+msg.replyTo);
- mClients.remove(msg.replyTo);
- break;
- default:
- //super.handleMessage(msg);
- onReceiveMessage(msg);
- }
- removeMessages(0);
- }
- }
-
- @Override
- public void onCreate() {
- super.onCreate();
-
- onStartService();
-
- Log.i("MyService", "Service Started.");
- }
-
- @Override
- public int onStartCommand(Intent intent, int flags, int startId) {
- Log.i("MyService", "Received start id " + startId + ": " + intent);
- return START_STICKY; // run until explicitly stopped.
- }
-
- @Override
- public IBinder onBind(Intent intent) {
- return mMessenger.getBinder();
- }
-
- @Override
- public boolean onUnbind(Intent intent) {
- return true;
- }
-
- @Override
- public void onDestroy() {
- super.onDestroy();
-
- onStopService();
-
- Log.i("MyService", "Service Stopped.");
- }
-
- static protected void send(Message msg) {
- for (int i=mClients.size()-1; i>=0; i--) {
- try {
- //Log.i("MyService", "Sending message to clients: "+msg);
- mClients.get(i).send(msg);
- }
- catch (RemoteException e) {
- // The client is dead. Remove it from the list; we are going through the list from back to front so this is safe to do inside the loop.
- Log.e("MyService", "Client is dead. Removing from list: "+i);
- mClients.remove(i);
- }
- }
- }
-
-
- public abstract void onStartService();
- public abstract void onStopService();
- public abstract void onReceiveMessage(Message msg);
-
- public Context GetContext()
- {
- return this.getApplicationContext();
- }
+package gateway;
+
+import android.app.Service;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.Message;
+import android.os.Messenger;
+import android.os.RemoteException;
+import android.util.Log;
+
+import java.util.ArrayList;
+
+public abstract class AbstractService extends Service {
+ static final int MSG_REGISTER_CLIENT = 9991;
+ static final int MSG_UNREGISTER_CLIENT = 9992;
+
+ static ArrayList mClients = new ArrayList(); // Keeps track of all current registered clients.
+ final Messenger mMessenger = new Messenger(new IncomingHandler()); // Target we publish for clients to send messages to IncomingHandler.
+
+ private class IncomingHandler extends Handler { // Handler of incoming messages from clients.
+ @Override
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case MSG_REGISTER_CLIENT:
+ Log.i("MyService", "Client registered: "+msg.replyTo);
+ mClients.add(msg.replyTo);
+ Log.i("ServiceHandler", "Sending Message to Activity that Service is bound.");
+ Message startedMessage = new Message();
+ Bundle b = new Bundle();
+ b.putInt("info", ServiceManager.SERVICE_BOUND);
+ startedMessage.setData(b);
+ try {
+ msg.replyTo.send(startedMessage);
+ } catch (RemoteException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ break;
+ case MSG_UNREGISTER_CLIENT:
+ Log.i("MyService", "Client un-registered: "+msg.replyTo);
+ mClients.remove(msg.replyTo);
+ break;
+ default:
+ //super.handleMessage(msg);
+ onReceiveMessage(msg);
+ }
+ removeMessages(0);
+ }
+ }
+
+ @Override
+ public void onCreate() {
+ super.onCreate();
+
+ onStartService();
+
+ Log.i("MyService", "Service Started.");
+ }
+
+ @Override
+ public int onStartCommand(Intent intent, int flags, int startId) {
+ Log.i("MyService", "Received start id " + startId + ": " + intent);
+ return START_STICKY; // run until explicitly stopped.
+ }
+
+ @Override
+ public IBinder onBind(Intent intent) {
+ return mMessenger.getBinder();
+ }
+
+ @Override
+ public boolean onUnbind(Intent intent) {
+ return true;
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+
+ onStopService();
+
+ Log.i("MyService", "Service Stopped.");
+ }
+
+ static protected void send(Message msg) {
+ for (int i=mClients.size()-1; i>=0; i--) {
+ try {
+ //Log.i("MyService", "Sending message to clients: "+msg);
+ mClients.get(i).send(msg);
+ }
+ catch (RemoteException e) {
+ // The client is dead. Remove it from the list; we are going through the list from back to front so this is safe to do inside the loop.
+ Log.e("MyService", "Client is dead. Removing from list: "+i);
+ mClients.remove(i);
+ }
+ }
+ }
+
+
+ public abstract void onStartService();
+ public abstract void onStopService();
+ public abstract void onReceiveMessage(Message msg);
+
+ public Context GetContext()
+ {
+ return this.getApplicationContext();
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/gateway/BLEDisplay.java b/app/src/main/java/gateway/BLEDisplay.java
new file mode 100644
index 0000000..3ef90e3
--- /dev/null
+++ b/app/src/main/java/gateway/BLEDisplay.java
@@ -0,0 +1,92 @@
+package gateway;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.graphics.Color;
+import android.graphics.Typeface;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.os.RemoteException;
+import android.view.Menu;
+import android.widget.TextView;
+
+import com.banc.gateway.R;
+
+import BLEManagement.BLEDeviceInfo;
+import BLEManagement.BLEEvent;
+
+public class BLEDisplay extends Activity {
+
+ private ServiceManager sManager;
+ private String address;
+ TextView mainTitle;
+ String name;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_glove_display);
+
+ Intent intent = getIntent();
+ name = intent.getStringExtra(BLESelection.DEVICE_MESSAGE);
+
+ mainTitle = (TextView)this.findViewById(R.id.textView1);
+ mainTitle.setTextColor(Color.GREEN);
+ mainTitle.setText("You are connected to: " + name);
+ mainTitle.setTypeface(null, Typeface.BOLD);
+
+ this.sManager = new ServiceManager(this, BLEService.class, new HandlerExtension());
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+ @Override
+ protected void onDestroy() {
+ super.onDestroy(); // Always call the superclass method first
+
+ // Log.d("GloveDisplay", "Disconnecting from BLE device " + address);
+ Message msg = new Message();
+ Bundle b = new Bundle();
+ b.putInt("info", BLEService.DISCONNECT);
+ b.putString("address", address);
+ msg.setData(b);
+ try {
+ sManager.send(msg);
+ } catch (RemoteException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ sManager.unbind();
+ }
+
+ private class HandlerExtension extends Handler {
+
+ @Override
+ public void handleMessage(Message msg) {
+ // Log.d("DEBUG", "Received Message in UI");
+ int type = msg.getData().getInt("BLEEventType", -1);
+
+ if (type != -1) {
+ // Log.d("BLEDisplay", "Received BLEEvent in UI");
+ //this means it is a BLEEvent from the service
+ BLEEvent event = (BLEEvent) msg.obj;
+ if (event.BLEEventType == BLEEvent.EVENT_DEVICE_STATE_CHANGE) {
+ int newState = event.State;
+ if (newState == BLEDeviceInfo.STATE_DISCONNECTED)
+ {
+ mainTitle.setTextColor(Color.RED);
+ mainTitle.setText("You are disconnected from: " + name);
+ }
+ }
+ }
+ msg.recycle();
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/gateway/BLESelection.java b/app/src/main/java/gateway/BLESelection.java
new file mode 100644
index 0000000..9f68ac7
--- /dev/null
+++ b/app/src/main/java/gateway/BLESelection.java
@@ -0,0 +1,323 @@
+package gateway;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.os.RemoteException;
+import android.support.design.widget.FloatingActionButton;
+import android.support.design.widget.Snackbar;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.ListView;
+
+import com.banc.gateway.R;
+
+import java.io.IOException;
+import java.util.List;
+
+import BLEManagement.BLEDeviceInfo;
+import BLEManagement.BLEDeviceInfoList;
+import BLEManagement.BLEEvent;
+import io.particle.android.sdk.cloud.ParticleCloud;
+import io.particle.android.sdk.cloud.ParticleCloudException;
+import io.particle.android.sdk.cloud.ParticleCloudSDK;
+import io.particle.android.sdk.cloud.ParticleDevice;
+import io.particle.android.sdk.utils.Async;
+import io.particle.android.sdk.utils.Toaster;
+
+
+public class BLESelection extends Activity {
+
+ public final static String DEVICE_MESSAGE = "com.banclabs.gloveapp.DeviceAddress";
+ private static final String TAG = "BLESelection" ;
+
+ static private ServiceManager sManager;
+ static BLEDeviceInfoList currentDevices;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_ble_list);
+ LayoutInflater inflater = getLayoutInflater();
+ View view = inflater.inflate(R.layout.activity_ble_list, null);
+
+
+ ParticleCloudSDK.init(this);
+
+ this.sManager = new ServiceManager(this, BLEService.class, new HandlerExtension());
+ if (!sManager.isRunning()) {
+ sManager.start();
+ }
+
+ // user is not logged in, so automagically display login thing
+ if (!ParticleCloudSDK.getCloud().isLoggedIn()) {
+ Intent intent = new Intent(this, ParticleLoginDisplay.class);
+ startActivityForResult(intent, 1);
+ }
+ else {
+ Button loginButton = (Button)findViewById(R.id.loginButton);
+ loginButton.setText("Logout");
+ }
+
+ FloatingActionButton fab = (FloatingActionButton) view.findViewById(R.id.myFAB);
+ fab.setOnClickListener(new View.OnClickListener() {
+ public void onClick(View v) {
+ Log.e(TAG, "FAB pressed");
+ Snackbar.make(v, "FAB Clicked", Snackbar.LENGTH_LONG).show();
+ }
+ });
+
+
+
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ Button scanButton = (Button)findViewById(R.id.scanButton);
+
+ sManager.bind();
+ //tell the service to stop discovery
+ Message msg = new Message();
+ Bundle b = new Bundle();
+ b.putInt("info", BLEService.START_DISCOVERY);
+ msg.setData(b);
+ try {
+ sManager.send(msg);
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ }
+
+ intent = new Intent(this, BLEDisplay.class);
+ }
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+
+ //tell the service to stop discovery
+ Message msg = new Message();
+ Bundle b = new Bundle();
+ b.putInt("info", BLEService.STOP_DISCOVERY);
+ msg.setData(b);
+ try {
+ sManager.send(msg);
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy(); // Always call the superclass method first
+
+ sManager.stop();
+ sManager.unbind();
+ }
+
+ public void loginButtonPressed(View view) {
+ if (ParticleCloudSDK.getCloud().isLoggedIn()) {
+ ParticleCloudSDK.getCloud().logOut();
+ Button loginButton = (Button)findViewById(R.id.loginButton);
+ loginButton.setText("Login");
+ } else {
+ Intent intent = new Intent(this, ParticleLoginDisplay.class);
+ startActivityForResult(intent, 1);
+ }
+ }
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if (requestCode == 1) {
+ if (resultCode == RESULT_OK) {
+ try {
+ List devices = ParticleCloudSDK.getCloud().getDevices();
+ for (ParticleDevice device : devices) {
+ // Log.d(TAG, device.getName());
+ }
+ }
+ catch (ParticleCloudException ex) {
+ Log.e("ParticleLoginDisplay", "Received error when getting devices");
+ ex.printStackTrace();
+ }
+ }
+ }
+ }
+
+ public void scanButtonPressed(View view) {
+ Button scanButton = (Button)findViewById(R.id.scanButton);
+
+ if (scanButton.getText() == "Stop") {
+ Message msg = new Message();
+ Bundle b = new Bundle();
+ b.putInt("info", BLEService.STOP_DISCOVERY);
+ msg.setData(b);
+ try {
+ sManager.send(msg);
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ }
+ scanButton.setText("Scan");
+ } else {
+ Message msg = new Message();
+ Bundle b = new Bundle();
+ b.putInt("info", BLEService.START_DISCOVERY);
+ msg.setData(b);
+ try {
+ sManager.send(msg);
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ }
+ scanButton.setText("Stop");
+ }
+
+ }
+
+ Intent intent;
+ private void updateTable(BLEDeviceInfoList devices)
+ {
+ currentDevices = devices;
+ ListView list = (ListView)findViewById(R.id.listView1);
+ // Getting adapter by passing xml data ArrayList
+ DeviceAdapter adapter=new DeviceAdapter(this, devices);
+ list.setAdapter(adapter);
+
+
+ // Click event for single list row
+// list.setOnItemClickListener(new OnItemClickListener() {
+//
+// @Override
+// public void onItemClick(AdapterView> parent, View view,
+// int position, long id) {
+// android.widget.RelativeLayout item = (android.widget.RelativeLayout)view;
+//// TextView addressTextView = (TextView)item.findViewById(R.id.deviceAddress);
+// TextView nameTextView = (TextView)item.findViewById(R.id.deviceName);
+//// String address = addressTextView.getText().toString();
+// BLEDeviceInfo devInfo = currentDevices.GetBLEDeviceInfo(position);
+// String address = devInfo.GetMAC();
+// String deviceName = nameTextView.getText().toString();
+// // Log.d("DEBUG", "User selected " + address);
+// Message msg = new Message();
+// Bundle b = new Bundle();
+// b.putInt("info", BLEService.CONNECT);
+// b.putString("address", address);
+// msg.setData(b);
+// try {
+// sManager.send(msg);
+// } catch (RemoteException e) {
+// e.printStackTrace();
+// }
+// sManager.unbind();
+// intent.putExtra(DEVICE_MESSAGE, deviceName);
+// startActivity(intent);
+// }
+//
+// });
+ }
+
+ private class HandlerExtension extends Handler {
+
+ @Override
+ public void handleMessage(Message msg) {
+ int type = msg.getData().getInt("BLEEventType", -1);
+
+ if (type != -1)
+ {
+ //this means it is a BLEEvent from the service
+ BLEEvent event = (BLEEvent)msg.obj;
+ if (event.BLEEventType == BLEEvent.EVENT_UPDATE || event.BLEEventType == BLEEvent.EVENT_DEVICE_STATE_CHANGE)
+ {
+ BLEDeviceInfoList devices = (BLEDeviceInfoList)event.Contents;
+ updateTable(devices);
+ }
+ } else {
+ //otherwise, it is a message from the ServiceManager
+ type = msg.getData().getInt("info", -1);
+ if (type == ServiceManager.SERVICE_BOUND)
+ {
+ Message discoverMessage = new Message();
+ Bundle b = new Bundle();
+ b.putInt("info", BLEService.START_DISCOVERY);
+ discoverMessage.setData(b);
+ try {
+ sManager.send(discoverMessage);
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ //msg.recycle();
+ }
+ }
+
+ public OnClickListener connectButtonClicked = new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ int position = (Integer) v.getTag();
+ // Log.d("DEBUG","Clicked Connect Button at Position: " + position);
+ BLEDeviceInfo devInfo = currentDevices.GetBLEDeviceInfo(position);
+ String address = devInfo.GetMAC();
+ // Log.d("DEBUG", "User selected " + address);
+ Message msg = new Message();
+ Bundle b = new Bundle();
+ if (devInfo.State == BLEDeviceInfo.STATE_CONNECTED) {
+ b.putInt("info", BLEService.DISCONNECT);
+ } else {
+ b.putInt("info", BLEService.CONNECT);
+ }
+ b.putString("address", address);
+ msg.setData(b);
+ try {
+ sManager.send(msg);
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ }
+ }
+ };
+
+ public OnClickListener claimButtonClicked = new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ int position = (Integer) v.getTag();
+ // Log.d("DEBUG","Clicked Claim Button at Position: " + position);
+ final BLEDeviceInfo devInfo = currentDevices.GetBLEDeviceInfo(position);
+ Async.executeAsync(ParticleCloudSDK.getCloud(), new Async.ApiWork() {
+ @Override
+ public Object callApi(ParticleCloud sparkCloud) throws ParticleCloudException, IOException {
+ ParticleCloudSDK.getCloud().claimDevice(devInfo.GetCloudID());
+ return 1;
+ }
+
+ @Override
+ public void onSuccess(Object value) {
+ // Log.d("Device Claimed", "");
+ devInfo.SetClaimed(true);
+ Toaster.s(BLESelection.this, "Claimed!");
+ updateTable(currentDevices);
+ }
+
+ @Override
+ public void onFailure(ParticleCloudException e) {
+ // Log.d("Device Not Claimed", "");
+ Toaster.s(BLESelection.this, "Error Claiming Device!");
+ }
+ });
+ }
+ };
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/gateway/BLEService.java b/app/src/main/java/gateway/BLEService.java
new file mode 100644
index 0000000..fcac6cc
--- /dev/null
+++ b/app/src/main/java/gateway/BLEService.java
@@ -0,0 +1,170 @@
+package gateway;
+
+import android.media.AudioManager;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+
+import java.util.Observable;
+import java.util.Observer;
+
+import BLEManagement.BLEDeviceInfo;
+import BLEManagement.BLEEvent;
+import BLEManagement.BLEManager;
+
+public class BLEService extends AbstractService implements Observer {
+ private BLEManager bleManager;
+
+ final public static int CONNECT = 2;
+ final public static int DISCONNECT = 3;
+ final public static int START_DISCOVERY = 4;
+ final public static int STOP_DISCOVERY = 5;
+
+ private int MY_DATA_CHECK_CODE = 0;
+
+ private boolean askedSMS = false;
+ private boolean commandMode = false;
+
+ AudioManager audio;
+
+ @Override
+ public void onStartService() {
+ bleManager = new BLEManager(this.GetContext());
+ bleManager.addObserver(this);
+ }
+
+ @Override
+ public void onStopService() {
+ bleManager.deleteObserver(this);
+ bleManager.stop();
+ }
+
+ @Override
+ public void onReceiveMessage(Message msg) {
+ // TODO Auto-generated method stub
+ //// Log.d("SparkLEService", "Received message");
+ String address;
+ try {
+ int info = msg.getData().getInt("info");
+ //// Log.d("SparkLEService", "Received message: " + info);
+ switch (info)
+ {
+// case GET_INFO:
+// BLEEvent event = new BLEEvent();
+// event.BLEEventType = BLEEvent.EVENT_UPDATE;
+// event.Contents = bleManager.bleDevices;
+// updateUI(event);
+// break;
+ case CONNECT:
+ address = msg.getData().getString("address");
+ bleManager.connect(address);
+ while (!bleManager.isInitialized(address)) {
+ Thread.sleep(100);
+ }
+ //// Log.d("BLEService", "We are now connected and initialized!");
+// Thread.sleep(2000);
+// // Log.d("BLEService", "Done Waiting 2 seconds");
+// sparkSocket.Connect();
+ //bleManager.send(new byte[]{0x55});
+// readerThread = new ReaderThread();
+// Thread rThread = new Thread(readerThread);
+// //rThread.setUncaughtExceptionHandler(new ExceptionHandler());
+// rThread.start();
+// ulBuffer = new byte[512];
+// ulBufferLength = 0;
+ break;
+ case DISCONNECT:
+ //String address = msg.getData().getString("address");
+ //// Log.d("SparkLEService", "Disconnecting BLE");
+ address = msg.getData().getString("address");
+ BLEDeviceInfo devInfo = bleManager.GetBLEDeviceInfoByAddress(address);
+ bleManager.disconnect(address);
+ break;
+ case START_DISCOVERY:
+ //// Log.d("SparkLEService", "Starting Discovery");
+ bleManager.start();
+ break;
+ case STOP_DISCOVERY:
+ //// Log.d("SparkLEService", "Stopping Discovery");
+ bleManager.stop();
+ break;
+
+ }
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ @Override
+ public void update(Observable observable, Object data) {
+ // TODO Auto-generated method stub
+// // Log.d("SparkLEServices", "Received event from BLEManager");
+ BLEEvent event = (BLEEvent)data;
+ if (event.DeviceInfo == null) {
+ // // Log.d("WTF!!!", "devInfo is null!");
+ }
+ switch (event.BLEEventType)
+ {
+ case BLEEvent.EVENT_UPDATE:
+ updateUI(event);
+ break;
+ case BLEEvent.EVENT_DEVICE_STATE_CHANGE:
+ handleNewState(event.DeviceInfo, event.State);
+ updateUI(event);
+ break;
+ case BLEEvent.EVENT_RX_DATA:
+ //// Log.d("BLEService", "Calling devInfo processData");
+ event.DeviceInfo.processData((byte[]) event.Contents);
+ break;
+ }
+ }
+
+ private void handleNewState(final BLEDeviceInfo devInfo, int newState)
+ {
+ switch (newState)
+ {
+ case BLEDeviceInfo.STATE_DISCONNECTED:
+ //// Log.d("BLEService", "Handling BLE disconnection");
+ devInfo.disconnect();
+ break;
+ case BLEDeviceInfo.STATE_CONNECTED:
+ //// Log.d("BLEService", "Starting timer for Get ID!!");
+ Handler handler = new Handler(Looper.getMainLooper());
+ handler.postDelayed(new Runnable() {
+
+ public void run() {
+ //// Log.d("BLEService", "Running Get ID!!");
+ devInfo.PollParticleId();
+ }
+ }, 22000);
+ break;
+ }
+ }
+
+ private void updateUI(BLEEvent event) {
+ Message msg = Message.obtain(null, 2);
+ Bundle b = new Bundle();
+ b.putInt("BLEEventType", event.BLEEventType);
+ msg.setData(b);
+ msg.obj = event;
+ send(msg);
+ }
+
+ static public void DeviceInfoChanged() {
+ BLEEvent event = new BLEEvent();
+ event.Contents = BLEManager.GetList();
+ event.BLEEventType = BLEEvent.EVENT_DEVICE_STATE_CHANGE;
+ event.State = 0;
+ event.DeviceInfo = null;
+ Message msg = Message.obtain(null, 2);
+ Bundle b = new Bundle();
+ b.putInt("BLEEventType", event.BLEEventType);
+ msg.setData(b);
+ msg.obj = event;
+ send(msg);
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/gateway/DeviceAdapter.java b/app/src/main/java/gateway/DeviceAdapter.java
new file mode 100644
index 0000000..f5126ec
--- /dev/null
+++ b/app/src/main/java/gateway/DeviceAdapter.java
@@ -0,0 +1,88 @@
+package gateway;
+
+
+import android.app.Activity;
+import android.content.Context;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.Button;
+import android.widget.TextView;
+
+import com.banc.gateway.R;
+
+import BLEManagement.BLEDeviceInfo;
+import BLEManagement.BLEDeviceInfoList;
+
+public class DeviceAdapter extends BaseAdapter {
+
+ private BLEDeviceInfoList devices;
+ private static LayoutInflater inflater=null;
+ BLESelection parentActivity;
+
+ public DeviceAdapter(Activity activity, BLEDeviceInfoList d) {
+ devices = d;
+ inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ parentActivity = (BLESelection)activity;
+ }
+
+ @Override
+ public int getCount() {
+ return devices.GetCount();
+ }
+
+ @Override
+ public Object getItem(int position) {
+ return devices.GetBLEDeviceInfo(position);
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return devices.GetBLEDeviceInfo(position).hashCode();
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ View vi=convertView;
+ if(convertView==null)
+ vi = inflater.inflate(R.layout.list_row, null);
+
+ TextView name = (TextView)vi.findViewById(R.id.deviceName); // title
+// TextView address = (TextView)vi.findViewById(R.id.deviceAddress); // artist name
+ TextView rssi = (TextView)vi.findViewById(R.id.deviceRssi); // duration
+ TextView cloudName = (TextView)vi.findViewById(R.id.deviceCloudName); // duration
+ TextView cloudId = (TextView)vi.findViewById(R.id.deviceCloudId); // duration
+ Button connectButton = (Button)vi.findViewById(R.id.connectButton); // duration
+ Button claimButton = (Button)vi.findViewById(R.id.claimButton); // duration
+
+ connectButton.setTag(position);
+ connectButton.setOnClickListener(parentActivity.connectButtonClicked);
+
+ claimButton.setTag(position);
+ claimButton.setOnClickListener(parentActivity.claimButtonClicked);
+
+ BLEDeviceInfo device = devices.GetBLEDeviceInfo(position);
+
+ connectButton.setText("Connect");
+ if (device.State == BLEDeviceInfo.STATE_CONNECTED) {
+ connectButton.setText("Disconnect");
+ }
+
+ // Log.d("DEBUG", "Adding device with name " + device.GetName());
+ // Setting all values in listview
+ name.setText(device.GetName());
+// address.setText(device.GetMAC());
+ rssi.setText(Integer.toString(device.GetRSSI()));
+ cloudId.setText(device.GetCloudID());
+ cloudName.setText(device.GetCloudName());
+ claimButton.setVisibility(View.INVISIBLE);
+ if (device.GetCloudID() != "" && !device.IsClaimed()) {
+ claimButton.setVisibility(View.VISIBLE);
+ }
+
+ return vi;
+ }
+
+}
diff --git a/app/src/main/java/com/banc/sparkle_gateway/HexAsciiHelper.java b/app/src/main/java/gateway/HexAsciiHelper.java
similarity index 89%
rename from app/src/main/java/com/banc/sparkle_gateway/HexAsciiHelper.java
rename to app/src/main/java/gateway/HexAsciiHelper.java
index 1402bae..50f1a59 100644
--- a/app/src/main/java/com/banc/sparkle_gateway/HexAsciiHelper.java
+++ b/app/src/main/java/gateway/HexAsciiHelper.java
@@ -1,16 +1,7 @@
-package com.banc.sparkle_gateway;
-
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ArrayAdapter;
-import android.widget.TextView;
+package gateway;
import org.apache.http.util.ByteArrayBuffer;
-import java.util.regex.Pattern;
-
public class HexAsciiHelper {
public static int PRINTABLE_ASCII_MIN = 0x20; // ' '
public static int PRINTABLE_ASCII_MAX = 0x7E; // '~'
diff --git a/app/src/main/java/com/banc/sparkle_gateway/MainActivity.java b/app/src/main/java/gateway/MainActivity.java
similarity index 91%
rename from app/src/main/java/com/banc/sparkle_gateway/MainActivity.java
rename to app/src/main/java/gateway/MainActivity.java
index a1b3463..cdea6a1 100644
--- a/app/src/main/java/com/banc/sparkle_gateway/MainActivity.java
+++ b/app/src/main/java/gateway/MainActivity.java
@@ -1,9 +1,12 @@
-package com.banc.sparkle_gateway;
+package gateway;
-import android.os.Bundle;
import android.app.Activity;
+import android.os.Bundle;
import android.view.Menu;
+import com.banc.gateway.R;
+
+
public class MainActivity extends Activity {
@Override
@@ -19,5 +22,5 @@ public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
-
+
}
diff --git a/app/src/main/java/com/banc/sparkle_gateway/MyBroadcastReceiver.java b/app/src/main/java/gateway/MyBroadcastReceiver.java
similarity index 58%
rename from app/src/main/java/com/banc/sparkle_gateway/MyBroadcastReceiver.java
rename to app/src/main/java/gateway/MyBroadcastReceiver.java
index f32d7b6..6813fe7 100644
--- a/app/src/main/java/com/banc/sparkle_gateway/MyBroadcastReceiver.java
+++ b/app/src/main/java/gateway/MyBroadcastReceiver.java
@@ -1,17 +1,15 @@
-package com.banc.sparkle_gateway;
+package gateway;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
-import android.os.Handler;
-import android.os.Message;
import android.util.Log;
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
- Log.d("DEBUG", "Got the reboot command, starting foneRino");
- Intent startServiceIntent = new Intent(context, BLEService.class);
+ // Log.d("DEBUG", "Got the reboot command, starting foneRino");
+ Intent startServiceIntent = new Intent(context, BLEService.class);
context.startService(startServiceIntent);
}
-}
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/banc/sparkle_gateway/ParticleLoginDisplay.java b/app/src/main/java/gateway/ParticleLoginDisplay.java
similarity index 78%
rename from app/src/main/java/com/banc/sparkle_gateway/ParticleLoginDisplay.java
rename to app/src/main/java/gateway/ParticleLoginDisplay.java
index aec6d73..449cf58 100644
--- a/app/src/main/java/com/banc/sparkle_gateway/ParticleLoginDisplay.java
+++ b/app/src/main/java/gateway/ParticleLoginDisplay.java
@@ -1,29 +1,27 @@
-package com.banc.sparkle_gateway;
+package gateway;
-import java.io.IOException;
+import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
-import android.os.Message;
-import android.os.RemoteException;
-import android.util.Log;
import android.view.Menu;
-import android.app.Activity;
import android.view.View;
-import android.widget.TextView;
import android.widget.EditText;
-import io.particle.android.sdk.cloud.ParticleCloudException;
+import com.banc.gateway.R;
+
+import java.io.IOException;
+
import io.particle.android.sdk.cloud.ParticleCloud;
+import io.particle.android.sdk.cloud.ParticleCloudException;
import io.particle.android.sdk.cloud.ParticleCloudSDK;
import io.particle.android.sdk.utils.Async;
-import io.particle.android.sdk.utils.Async.ApiWork;
-import io.particle.android.sdk.utils.Async.AsyncApiWorker;
import io.particle.android.sdk.utils.Toaster;
/**
* Created by eely on 2/17/16.
*/
public class ParticleLoginDisplay extends Activity {
+ private static final String TAG = "Particle";
private String email;
private String password;
@@ -62,7 +60,7 @@ public void loginButtonPressed(View view) {
Async.executeAsync(ParticleCloudSDK.getCloud(), new Async.ApiWork() {
@Override
- public Object callApi(ParticleCloud sparkCloud) throws ParticleCloudException, IOException {
+ public Integer callApi(ParticleCloud sparkCloud) throws ParticleCloudException, IOException {
ParticleCloudSDK.getCloud().logIn(email, password);
return 1;
@@ -70,24 +68,25 @@ public Object callApi(ParticleCloud sparkCloud) throws ParticleCloudException, I
@Override
public void onSuccess(Object value) {
- Log.d("Logging in", "succeeded");
+ // Log.d("Logging in", "succeeded");
Toaster.s(ParticleLoginDisplay.this, "Logged in!");
- try {
- ParticleCloudSDK.getCloud().getDevices();
- }
- catch (Exception ex) {
- Log.d("ParticleLoginDisplay", "Received error when getting devices");
- ex.printStackTrace();
- }
+ Intent returnIntent = new Intent();
+ setResult(Activity.RESULT_OK, returnIntent);
+ finish();
}
@Override
public void onFailure(ParticleCloudException e) {
- Log.d("Logging in", "failed");
+ // Log.d("Logging in", "failed");
Toaster.s(ParticleLoginDisplay.this, "Incorrect Username/Password");
+ Intent returnIntent = new Intent();
+ setResult(Activity.RESULT_CANCELED, returnIntent);
+ finish();
}
});
+
+
// try {
//// ParticleCloudSDK.getCloud().logIn(emailTextView.getText().toString(), passwordTextView.getText().toString());
// ParticleCloudSDK.getCloud().logIn("eric.j.ely@gmail.com", "lacrosse22");
diff --git a/app/src/main/java/gateway/ParticleSocket.java b/app/src/main/java/gateway/ParticleSocket.java
new file mode 100644
index 0000000..43793f7
--- /dev/null
+++ b/app/src/main/java/gateway/ParticleSocket.java
@@ -0,0 +1,127 @@
+package gateway;
+
+import android.os.AsyncTask;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.InetAddress;
+import java.net.Socket;
+
+public class ParticleSocket {
+ //live server
+ private final String cloudServer = "54.208.229.4";
+ //staging server
+// String cloudServer = "staging-device.spark.io";
+ //local server
+// String cloudServer = "10.1.10.175";
+ private final int cloudPort = 5683;
+
+ private int CloudServiceID = 1;
+
+ private Socket socket;
+ private InputStream inputStream;
+ private OutputStream outputStream;
+
+ public ParticleSocket() {
+
+ }
+
+ public void Connect() {
+
+ class Retrievedata extends AsyncTask {
+ @Override
+ protected String doInBackground(String... params) {
+ try {
+ // Log.d("SparkleCloudInterface", "Connecting to Spark Cloud");
+ InetAddress serveraddress = InetAddress.getByName(cloudServer);
+ // Log.d("ParticleSocket", "Got Here!");
+ // Log.d("SparkleCloudInterface", "We should have the IP Address " + serveraddress);
+ socket = new Socket(cloudServer, cloudPort);
+ // Log.d("SparkleCloudInterface", "Did we connect?");
+ // Log.d("SparkleCloudInterface", Boolean.toString(socket.isConnected()));
+ inputStream = socket.getInputStream();
+ outputStream = socket.getOutputStream();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ }
+ String params = "";
+ new Retrievedata().execute(params);
+ }
+
+ public void Disconnect() throws IOException {
+ if (inputStream != null) {
+ inputStream.close();
+ inputStream = null;
+ }
+ if (outputStream != null) {
+ outputStream.close();
+ outputStream = null;
+ }
+ if (socket != null) {
+ socket.close();
+ socket = null;
+ }
+ }
+
+ public void Write(byte[] data) throws IOException {
+// // Log.d("SparkleCloudInterface", "When writing, are we connected: " + Boolean.toString(socket.isConnected()));
+ outputStream.write(data);
+ outputStream.flush();
+ StringBuilder sb = new StringBuilder();
+
+ for (byte b : data) {
+ sb.append(String.format("%02X ", b));
+ }
+// // Log.d("SparkleCloudInterface", "Sending data: " + sb.toString());
+ // Log.d("SparkleCloudInterface", "Sending data to Cloud of size: " + data.length);
+ }
+
+ public int Available() throws IOException {
+ if (inputStream != null) {
+ return inputStream.available();
+ }
+ return 0;
+ }
+
+ public boolean Connected() {
+ return inputStream != null && socket.isConnected();
+ }
+
+ public byte[] Read() throws IOException {
+ //need to append our service ID and socket number to the beginning of the data
+ byte[] data = new byte[0];
+ if (inputStream != null) {
+ int bytesAvailable = inputStream.available();
+
+ try {
+ Thread.sleep(500);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+ bytesAvailable = inputStream.available();
+ data = new byte[bytesAvailable];
+
+// //copy the cloud data in with the service ID and socket number
+ inputStream.read(data, 0, bytesAvailable);
+
+
+// byte[] data = new byte[inputStream.available()];
+// inputStream.read(data, 0, inputStream.available());
+
+ StringBuilder sb = new StringBuilder();
+ for (byte b : data) {
+ sb.append(String.format("%02X ", b));
+ }
+ // Log.d("SparkleCloudInterface", "Got data: " + sb.toString());
+ // Log.d("SparkleCloudInterface", "Got data from Cloud of size: " + data.length);
+ }
+
+// System.out.println(sb.toString());
+ return data;
+ }
+}
diff --git a/app/src/main/java/com/banc/sparkle_gateway/ServiceManager.java b/app/src/main/java/gateway/ServiceManager.java
similarity index 66%
rename from app/src/main/java/com/banc/sparkle_gateway/ServiceManager.java
rename to app/src/main/java/gateway/ServiceManager.java
index 0227ab3..a7f0825 100644
--- a/app/src/main/java/com/banc/sparkle_gateway/ServiceManager.java
+++ b/app/src/main/java/gateway/ServiceManager.java
@@ -1,143 +1,142 @@
-package com.banc.sparkle_gateway;
-
-import android.app.ActivityManager;
-import android.app.ActivityManager.RunningServiceInfo;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.ServiceConnection;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.IBinder;
-import android.os.Message;
-import android.os.Messenger;
-import android.os.RemoteException;
-import android.util.Log;
-
-public class ServiceManager {
- private Class extends AbstractService> mServiceClass;
- private Context mActivity;
- private boolean mIsBound;
- private Messenger mService = null;
- private Handler mIncomingHandler = null;
- private final Messenger mMessenger = new Messenger(new IncomingHandler());
-
- final public static int SERVICE_BOUND = 10;
-
- private class IncomingHandler extends Handler {
- @Override
- public void handleMessage(Message msg) {
- if (mIncomingHandler != null) {
- //Log.i("ServiceHandler", "Incoming message. Passing to handler: "+msg);
- mIncomingHandler.handleMessage(msg);
- }
- }
- }
-
- private ServiceConnection mConnection = new ServiceConnection() {
- public void onServiceConnected(ComponentName className, IBinder service) {
- mService = new Messenger(service);
-
- //textStatus.setText("Attached.");
- Log.i("ServiceHandler", "Attached.");
- try {
- Message msg = Message.obtain(null, AbstractService.MSG_REGISTER_CLIENT);
- msg.replyTo = mMessenger;
- mService.send(msg);
- } catch (RemoteException e) {
- // In this case the service has crashed before we could even do anything with it
- }
- }
-
- public void onServiceDisconnected(ComponentName className) {
- // This is called when the connection with the service has been unexpectedly disconnected - process crashed.
- mService = null;
- //textStatus.setText("Disconnected.");
- Log.i("ServiceHandler", "Disconnected.");
- }
- };
-
- public ServiceManager(Context context, Class extends AbstractService> serviceClass, Handler incomingHandler) {
- this.mActivity = context;
- this.mServiceClass = serviceClass;
- this.mIncomingHandler = incomingHandler;
- if (isRunning()) {
- doBindService();
- }
- }
-
- public void start() {
- doStartService();
- doBindService();
- }
-
- public void stop() {
- doUnbindService();
- doStopService();
- }
-
- /**
- * Use with caution (only in Activity.onDestroy())!
- */
- public void unbind() {
- doUnbindService();
- }
-
- public void bind() {
- doBindService();
- }
-
- public boolean isRunning() {
- ActivityManager manager = (ActivityManager) mActivity.getSystemService(Context.ACTIVITY_SERVICE);
-
- for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
- if (mServiceClass.getName().equals(service.service.getClassName())) {
- return true;
- }
- }
-
- return false;
- }
-
- public void send(Message msg) throws RemoteException {
- if (mIsBound) {
- if (mService != null) {
- mService.send(msg);
- }
- }
- }
-
- private void doStartService() {
- mActivity.startService(new Intent(mActivity, mServiceClass));
- }
-
- private void doStopService() {
- mActivity.stopService(new Intent(mActivity, mServiceClass));
- }
-
- private void doBindService() {
- mActivity.bindService(new Intent(mActivity, mServiceClass), mConnection, Context.BIND_AUTO_CREATE);
- mIsBound = true;
- }
-
- private void doUnbindService() {
- if (mIsBound) {
- // If we have received the service, and hence registered with it, then now is the time to unregister.
- if (mService != null) {
- try {
- Message msg = Message.obtain(null, AbstractService.MSG_UNREGISTER_CLIENT);
- msg.replyTo = mMessenger;
- mService.send(msg);
- } catch (RemoteException e) {
- // There is nothing special we need to do if the service has crashed.
- }
- }
-
- // Detach our existing connection.
- mActivity.unbindService(mConnection);
- mIsBound = false;
- //textStatus.setText("Unbinding.");
- Log.i("ServiceHandler", "Unbinding.");
- }
- }
+package gateway;
+
+import android.app.ActivityManager;
+import android.app.ActivityManager.RunningServiceInfo;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.Message;
+import android.os.Messenger;
+import android.os.RemoteException;
+import android.util.Log;
+
+public class ServiceManager {
+ private Class extends AbstractService> mServiceClass;
+ private Context mActivity;
+ private boolean mIsBound;
+ private Messenger mService = null;
+ private Handler mIncomingHandler = null;
+ private final Messenger mMessenger = new Messenger(new IncomingHandler());
+
+ final public static int SERVICE_BOUND = 10;
+
+ private class IncomingHandler extends Handler {
+ @Override
+ public void handleMessage(Message msg) {
+ if (mIncomingHandler != null) {
+ //Log.i("ServiceHandler", "Incoming message. Passing to handler: "+msg);
+ mIncomingHandler.handleMessage(msg);
+ }
+ }
+ }
+
+ private ServiceConnection mConnection = new ServiceConnection() {
+ public void onServiceConnected(ComponentName className, IBinder service) {
+ mService = new Messenger(service);
+
+ //textStatus.setText("Attached.");
+ Log.i("ServiceHandler", "Attached.");
+ try {
+ Message msg = Message.obtain(null, AbstractService.MSG_REGISTER_CLIENT);
+ msg.replyTo = mMessenger;
+ mService.send(msg);
+ } catch (RemoteException e) {
+ // In this case the service has crashed before we could even do anything with it
+ }
+ }
+
+ public void onServiceDisconnected(ComponentName className) {
+ // This is called when the connection with the service has been unexpectedly disconnected - process crashed.
+ mService = null;
+ //textStatus.setText("Disconnected.");
+ Log.i("ServiceHandler", "Disconnected.");
+ }
+ };
+
+ public ServiceManager(Context context, Class extends AbstractService> serviceClass, Handler incomingHandler) {
+ this.mActivity = context;
+ this.mServiceClass = serviceClass;
+ this.mIncomingHandler = incomingHandler;
+ if (isRunning()) {
+ doBindService();
+ }
+ }
+
+ public void start() {
+ doStartService();
+ doBindService();
+ }
+
+ public void stop() {
+ doUnbindService();
+ doStopService();
+ }
+
+ /**
+ * Use with caution (only in Activity.onDestroy())!
+ */
+ public void unbind() {
+ doUnbindService();
+ }
+
+ public void bind() {
+ doBindService();
+ }
+
+ public boolean isRunning() {
+ ActivityManager manager = (ActivityManager) mActivity.getSystemService(Context.ACTIVITY_SERVICE);
+
+ for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
+ if (mServiceClass.getName().equals(service.service.getClassName())) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ public void send(Message msg) throws RemoteException {
+ if (mIsBound) {
+ if (mService != null) {
+ mService.send(msg);
+ }
+ }
+ }
+
+ private void doStartService() {
+ mActivity.startService(new Intent(mActivity, mServiceClass));
+ }
+
+ private void doStopService() {
+ mActivity.stopService(new Intent(mActivity, mServiceClass));
+ }
+
+ private void doBindService() {
+ mActivity.bindService(new Intent(mActivity, mServiceClass), mConnection, Context.BIND_AUTO_CREATE);
+ mIsBound = true;
+ }
+
+ private void doUnbindService() {
+ if (mIsBound) {
+ // If we have received the service, and hence registered with it, then now is the time to unregister.
+ if (mService != null) {
+ try {
+ Message msg = Message.obtain(null, AbstractService.MSG_UNREGISTER_CLIENT);
+ msg.replyTo = mMessenger;
+ mService.send(msg);
+ } catch (RemoteException e) {
+ // There is nothing special we need to do if the service has crashed.
+ }
+ }
+
+ // Detach our existing connection.
+ mActivity.unbindService(mConnection);
+ mIsBound = false;
+ //textStatus.setText("Unbinding.");
+ Log.i("ServiceHandler", "Unbinding.");
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_ble_list.xml b/app/src/main/res/layout/activity_ble_list.xml
index 6c29bb1..9a38ebd 100644
--- a/app/src/main/res/layout/activity_ble_list.xml
+++ b/app/src/main/res/layout/activity_ble_list.xml
@@ -1,12 +1,9 @@
-
+ android:layout_height="match_parent">
+
+
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_bleselection.xml b/app/src/main/res/layout/activity_bleselection.xml
new file mode 100644
index 0000000..5127051
--- /dev/null
+++ b/app/src/main/res/layout/activity_bleselection.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/build/intermediates/res/debug/layout/activity_main.xml b/app/src/main/res/layout/content_bleselection.xml
similarity index 64%
rename from app/build/intermediates/res/debug/layout/activity_main.xml
rename to app/src/main/res/layout/content_bleselection.xml
index 6c2f795..a149b9a 100644
--- a/app/build/intermediates/res/debug/layout/activity_main.xml
+++ b/app/src/main/res/layout/content_bleselection.xml
@@ -1,4 +1,6 @@
+
+ app:layout_behavior="@string/appbar_scrolling_view_behavior"
+ tools:context="com.banc.sparkle_gateway.BLESelection"
+ tools:showIn="@layout/activity_bleselection">
-
+ android:text="Hello World!" />
-
\ No newline at end of file
diff --git a/app/src/main/res/values-v11/colors.xml b/app/src/main/res/values-v11/colors.xml
new file mode 100644
index 0000000..3ab3e9c
--- /dev/null
+++ b/app/src/main/res/values-v11/colors.xml
@@ -0,0 +1,6 @@
+
+
+ #3F51B5
+ #303F9F
+ #FF4081
+
diff --git a/app/src/main/res/values-v11/dimens.xml b/app/src/main/res/values-v11/dimens.xml
new file mode 100644
index 0000000..414ebad
--- /dev/null
+++ b/app/src/main/res/values-v11/dimens.xml
@@ -0,0 +1,8 @@
+
+
+
+ 16dp
+ 16dp
+ 16dp
+
+
diff --git a/app/src/main/res/values-v11/strings.xml b/app/src/main/res/values-v11/strings.xml
new file mode 100644
index 0000000..dcbc24c
--- /dev/null
+++ b/app/src/main/res/values-v11/strings.xml
@@ -0,0 +1,8 @@
+
+
+
+ Bluz Gateway
+ Settings
+ Hello world!
+
+
diff --git a/app/src/main/res/values-v11/styles.xml b/app/src/main/res/values-v11/styles.xml
index 3c02242..fbff114 100644
--- a/app/src/main/res/values-v11/styles.xml
+++ b/app/src/main/res/values-v11/styles.xml
@@ -1,11 +1,18 @@
-
-
+
+
+
+
+
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 6ce89c7..9a9c15f 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -1,20 +1,18 @@
-
-
-
-
-
+
+
+
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 70fd140..dd120d3 100644
--- a/build.gradle
+++ b/build.gradle
@@ -2,14 +2,31 @@
buildscript {
repositories {
jcenter()
+ maven {
+ url "https://plugins.gradle.org/m2/"
+ }
+
}
dependencies {
- classpath 'com.android.tools.build:gradle:1.2.3'
+ classpath 'com.android.tools.build:gradle:1.5.0'
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
}
+
+
+}
+plugins {
+ id "com.github.hierynomus.license" version "0.12.1"
}
allprojects {
repositories {
jcenter()
}
+}
+
+
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
}
\ No newline at end of file
diff --git a/build/intermediates/dex-cache/cache.xml b/build/intermediates/dex-cache/cache.xml
index 2ff781f..7d1014b 100644
--- a/build/intermediates/dex-cache/cache.xml
+++ b/build/intermediates/dex-cache/cache.xml
@@ -2,95 +2,144 @@
-
-
+ revision="23.0.2"
+ sha1="bd8290532ba9682731eeffff7f257f5a4940b19f">
+
-
-
+ revision="23.0.2"
+ sha1="2233eb91f0ca8ed6f81f62217d0e1ea9796e5f99">
+
-
-
+ revision="23.0.2"
+ sha1="db8dd9d75280b1d1d9587ed0d39b4108d0e655e9">
+
-
-
+ revision="23.0.2"
+ sha1="379471b2bd17d9737c050345c08e8c7d16589784">
+
-
-
+ revision="23.0.2"
+ sha1="5c5699834e9722f1c288fea2de82725d078ba127">
+
-
-
+ revision="23.0.2"
+ sha1="a78bed8f8575f1cdb6490e8f335319ce2b5617d5">
+
+
+ -
+
-
-
+
+
+ -
+
-
+
+
+ -
+
+
+ -
-
+
+
+ -
+
-
+
+
+ -
-
+
-
-
+ revision="23.0.2"
+ sha1="a4de9c81ae239414e1ed0f86441b02abaf29bca9">
+
-
-
+ revision="23.0.2"
+ sha1="e653e15e62e8a59ddd76cc7f827bf8bce38ae7bb">
+
-
-
+ revision="23.0.2"
+ sha1="90a3822c38ec8c996e84c16a3477ef632cbc87a3">
+
-
-
+
+
+ -
+
diff --git a/build/intermediates/gradle_project_sync_data.bin b/build/intermediates/gradle_project_sync_data.bin
deleted file mode 100644
index d06b3fd..0000000
Binary files a/build/intermediates/gradle_project_sync_data.bin and /dev/null differ
diff --git a/local.properties b/local.properties
index 0d3c19c..ce0ec06 100644
--- a/local.properties
+++ b/local.properties
@@ -1,7 +1,12 @@
-## This file must *NOT* be checked into Version Control Systems,
+## This file is automatically generated by Android Studio.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
-#
-#Tue Jun 16 23:02:40 EDT 2015
-sdk.dir=/Users/eely/android-sdks
+# For customization when using a Version Control System, please read the
+# header note.
+#Thu Feb 25 07:47:23 SAST 2016
+ndk.dir=/opt/android-sdks/ndk-bundle
+sdk.dir=/opt/android-sdks