From 7e3105adc3a32132d3adbcde0bc46808a6de34e9 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Sun, 18 Jan 2015 14:33:44 +0100 Subject: BtPromise: Letting the finally know if the promise was a success or failure. SM: adding a toast callback so the activity can show a toast message. Needed to make sure the toast comes from the correct thread. Can be called from the BT callback thread. --- .../soilmoisture/DefaultSoilMoistureService.java | 21 +++++++++++++++++---- .../java/io/trygvis/soilmoisture/MainActivity.java | 8 ++++++++ .../trygvis/soilmoisture/SoilMoistureService.java | 3 +++ 3 files changed, 28 insertions(+), 4 deletions(-) (limited to 'app/src/main/java/io/trygvis/soilmoisture') diff --git a/app/src/main/java/io/trygvis/soilmoisture/DefaultSoilMoistureService.java b/app/src/main/java/io/trygvis/soilmoisture/DefaultSoilMoistureService.java index 25dac5c..86a1917 100644 --- a/app/src/main/java/io/trygvis/soilmoisture/DefaultSoilMoistureService.java +++ b/app/src/main/java/io/trygvis/soilmoisture/DefaultSoilMoistureService.java @@ -169,7 +169,7 @@ public class DefaultSoilMoistureService extends Service implements SoilMoistureS return stop(); }). - onFinally(() -> { + onFinally(success -> { if (smDevice.getIsUseful() == null) { smDevice.setIsUseful(false); } @@ -344,9 +344,10 @@ public class DefaultSoilMoistureService extends Service implements SoilMoistureS return stop(); }). - onFinally(() -> { - Toast.makeText(context, R.string.error_could_not_read_value, Toast.LENGTH_SHORT). - show(); + onFinally(success -> { + if (!success) { + sendBroadcast(createToast(R.string.error_could_not_read_value, Toast.LENGTH_SHORT)); + } }); sensor.getDevice().getBtDevice().withConnection(promise); @@ -356,6 +357,13 @@ public class DefaultSoilMoistureService extends Service implements SoilMoistureS // Event creation and dispatching // ----------------------------------------------------------------------- + private Intent createToast(int id, int length) { + return new Intent(SoilMoistureListener.INTENT_NAME). + putExtra("event", "toast"). + putExtra("id", id). + putExtra("length", length); + } + private Intent createReady(boolean success) { return new Intent(SoilMoistureListener.INTENT_NAME). putExtra("event", "ready"). @@ -389,6 +397,11 @@ public class DefaultSoilMoistureService extends Service implements SoilMoistureS String event = intent.getStringExtra("event"); Log.i(TAG, "Dispatching event " + intent.getAction() + "/" + event); switch (event) { + case "toast": + listener.onToast( + intent.getIntExtra("id", 0), + intent.getIntExtra("length", 0)); + break; case "ready": listener.onReady( intent.getBooleanExtra("success", false)); diff --git a/app/src/main/java/io/trygvis/soilmoisture/MainActivity.java b/app/src/main/java/io/trygvis/soilmoisture/MainActivity.java index c6293c6..79b09c4 100644 --- a/app/src/main/java/io/trygvis/soilmoisture/MainActivity.java +++ b/app/src/main/java/io/trygvis/soilmoisture/MainActivity.java @@ -583,6 +583,14 @@ public class MainActivity extends ListActivity { } private class MySoilMoistureListener extends SoilMoistureListener { + @Override + public void onToast(int id, int length) { + CharSequence text = getText(id); + + Log.i(TAG, "Toast: " + text); + Toast.makeText(context, text, length).show(); + } + @Override public void onReady(boolean ok) { if (!ok) { diff --git a/app/src/main/java/io/trygvis/soilmoisture/SoilMoistureService.java b/app/src/main/java/io/trygvis/soilmoisture/SoilMoistureService.java index 5e3ddbb..b7f2060 100644 --- a/app/src/main/java/io/trygvis/soilmoisture/SoilMoistureService.java +++ b/app/src/main/java/io/trygvis/soilmoisture/SoilMoistureService.java @@ -35,6 +35,9 @@ public interface SoilMoistureService { DefaultSoilMoistureService.dispatchEvent(intent, this); } + public void onToast(int id, int length) { + } + public void onReady(boolean ok) { } -- cgit v1.2.3