From 9af67a8d65cad1c9d6ff13ce00ffc5fdd84302ec Mon Sep 17 00:00:00 2001 From: Ruben van de Ven Date: Mon, 22 Oct 2018 20:46:03 +0200 Subject: [PATCH] Version that doesn't live long --- app/build.gradle | 3 + app/src/main/AndroidManifest.xml | 2 + .../Activity_HeartRateDisplayBase.java | 106 +++++++++++++----- .../main/res/layout/activity_heart_rate.xml | 23 ++++ 4 files changed, 107 insertions(+), 27 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 9c99446..ef75d28 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -28,4 +28,7 @@ dependencies { implementation files("libs/antpluginlib_3-6-0.jar") implementation files("libs/fit_16.00.jar") + + implementation 'com.koushikdutta.async:androidasync:2.+' + } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a13aa5a..948b1d1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -3,6 +3,8 @@ package="com.rubenvandeven.heartbeatstreamer"> + + fws = AsyncHttpClient.getDefaultInstance().websocket("ws://heartbeat.rubenvandeven.com:8888/ws", "my-protocol", new AsyncHttpClient.WebSocketConnectCallback() { @Override - public void onNewHeartRateData(final long estTimestamp, EnumSet eventFlags, - final int computedHeartRate, final long heartBeatCount, - final BigDecimal heartBeatEventTime, final DataState dataState) - { - // Mark heart rate with asterisk if zero detected - final String textHeartRate = String.valueOf(computedHeartRate) - + ((DataState.ZERO_DETECTED.equals(dataState)) ? "*" : ""); + public void onCompleted(Exception ex, final WebSocket webSocket) { + if (ex != null) { + ex.printStackTrace(); + // TODO: retry + return; + } - // Mark heart beat count and heart beat event time with asterisk if initial value - final String textHeartBeatCount = String.valueOf(heartBeatCount) - + ((DataState.INITIAL_VALUE.equals(dataState)) ? "*" : ""); - final String textHeartBeatEventTime = String.valueOf(heartBeatEventTime) - + ((DataState.INITIAL_VALUE.equals(dataState)) ? "*" : ""); - - runOnUiThread(new Runnable() - { + webSocket.send("Connect!"); + webSocket.setClosedCallback(new CompletedCallback() { @Override - public void run() - { - tv_estTimestamp.setText(String.valueOf(estTimestamp)); - - tv_computedHeartRate.setText(textHeartRate); - tv_heartBeatCounter.setText(textHeartBeatCount); - tv_heartBeatEventTime.setText(textHeartBeatEventTime); - - tv_dataStatus.setText(dataState.toString()); + public void onCompleted(Exception ex) { + //unsubscribe before triggering resubscription + hrPcc.subscribeHeartRateDataEvent(null); + subscribeToHrEvents(); } }); + + hrPcc.subscribeHeartRateDataEvent(new IHeartRateDataReceiver() + { + @Override + public void onNewHeartRateData(final long estTimestamp, EnumSet eventFlags, + final int computedHeartRate, final long heartBeatCount, + final BigDecimal heartBeatEventTime, final DataState dataState) + { + // Mark heart rate with asterisk if zero detected + final String textHeartRate = String.valueOf(computedHeartRate) + + ((DataState.ZERO_DETECTED.equals(dataState)) ? "*" : ""); + + + // Mark heart beat count and heart beat event time with asterisk if initial value + final String textHeartBeatCount = String.valueOf(heartBeatCount) + + ((DataState.INITIAL_VALUE.equals(dataState)) ? "*" : ""); + final String textHeartBeatEventTime = String.valueOf(heartBeatEventTime) + + ((DataState.INITIAL_VALUE.equals(dataState)) ? "*" : ""); + + final String msg = String.format("{\"rate\":\"%s\", \"count\":\"%s\", \"time\":\"%s\"}", textHeartRate, textHeartBeatCount, textHeartBeatEventTime); + + if(msg == lastMsg) { + Log.i("HeartRate", "Skip duplicate"); + return; + } + lastMsg = msg; + + webSocket.send(msg); + Log.i("HeartRate", "Sent: " + msg); + + runOnUiThread(new Runnable() + { + @Override + public void run() + { + tv_estTimestamp.setText(String.valueOf(estTimestamp)); + + tv_computedHeartRate.setText(textHeartRate); + tv_heartBeatCounter.setText(textHeartBeatCount); + tv_heartBeatEventTime.setText(textHeartBeatEventTime); + + tv_dataStatus.setText(dataState.toString()); + + tv_ws.setText(lastMsg); + } + }); + } + }); + } }); + hrPcc.subscribePage4AddtDataEvent(new IPage4AddtDataReceiver() { @Override diff --git a/app/src/main/res/layout/activity_heart_rate.xml b/app/src/main/res/layout/activity_heart_rate.xml index 9c283e2..642695c 100644 --- a/app/src/main/res/layout/activity_heart_rate.xml +++ b/app/src/main/res/layout/activity_heart_rate.xml @@ -394,6 +394,29 @@ + + + + + + + +