diff --git a/android_app/app/src/main/AndroidManifest.xml b/android_app/app/src/main/AndroidManifest.xml index 9278d37d..d0903303 100644 --- a/android_app/app/src/main/AndroidManifest.xml +++ b/android_app/app/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ diff --git a/android_app/app/src/main/java/com/health/openscale/core/BluetoothCommunication.java b/android_app/app/src/main/java/com/health/openscale/core/BluetoothCommunication.java index a2255fb2..0b802105 100644 --- a/android_app/app/src/main/java/com/health/openscale/core/BluetoothCommunication.java +++ b/android_app/app/src/main/java/com/health/openscale/core/BluetoothCommunication.java @@ -92,7 +92,18 @@ public class BluetoothCommunication extends Thread { } } - + + public boolean sendBtData(String data){ + if (btSocket.isConnected()) { + BluetoothConnectedThread btConnectThread = new BluetoothConnectedThread(btSocket, btHandler); + btConnectThread.write(data.getBytes()); + + return true; + } + + return false; + } + public void cancel() { try { btSocket.close(); diff --git a/android_app/app/src/main/java/com/health/openscale/core/BluetoothConnectedThread.java b/android_app/app/src/main/java/com/health/openscale/core/BluetoothConnectedThread.java index 903f1e97..ab7364e9 100644 --- a/android_app/app/src/main/java/com/health/openscale/core/BluetoothConnectedThread.java +++ b/android_app/app/src/main/java/com/health/openscale/core/BluetoothConnectedThread.java @@ -15,14 +15,14 @@ */ package com.health.openscale.core; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; - import android.bluetooth.BluetoothSocket; import android.os.Handler; import android.util.Log; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + public class BluetoothConnectedThread extends Thread { private BluetoothSocket btSocket; private InputStream btInStream; @@ -70,7 +70,9 @@ public class BluetoothConnectedThread extends Thread { public void write(byte[] bytes) { try { btOutStream.write(bytes); - } catch (IOException e) { } + } catch (IOException e) { + Log.e("BluetoothConnectedThread", "Error while writing to bluetooth socket " + e.getMessage()); + } } public void cancel() { diff --git a/android_app/app/src/main/java/com/health/openscale/core/OpenScale.java b/android_app/app/src/main/java/com/health/openscale/core/OpenScale.java index e866f78a..b237d1b5 100644 --- a/android_app/app/src/main/java/com/health/openscale/core/OpenScale.java +++ b/android_app/app/src/main/java/com/health/openscale/core/OpenScale.java @@ -235,6 +235,13 @@ public class OpenScale { updateScaleData(); } + public boolean clearBtScaleData() { + if (btCom != null) + return false; + + return btCom.sendBtData("9"); + } + public int[] getCountsOfMonth(int year) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); int selectedUserId = prefs.getInt("selectedUserId", -1); diff --git a/android_app/app/src/main/java/com/health/openscale/gui/SettingsActivity.java b/android_app/app/src/main/java/com/health/openscale/gui/SettingsActivity.java index 458f3fef..60e8f6e7 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/SettingsActivity.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/SettingsActivity.java @@ -27,6 +27,7 @@ import android.preference.PreferenceActivity; import android.preference.PreferenceCategory; import android.preference.PreferenceGroup; import android.preference.PreferenceManager; +import android.widget.Toast; import com.health.openscale.R; import com.health.openscale.core.OpenScale; @@ -42,6 +43,9 @@ protected void onCreate(Bundle savedInstanceState) { addPreferencesFromResource(R.xml.preferences); initSummary(getPreferenceScreen()); + Preference prefClearBtData = (Preference) findPreference("btClearData"); + prefClearBtData.setOnPreferenceClickListener(new onClickListenerClearBtData()); + updateUserPreferences(); } @@ -151,8 +155,10 @@ private void updatePrefSummary(Preference p) { if(prefs.getBoolean("btEnable", true)) { findPreference("btDeviceName").setEnabled(true); + findPreference("btClearData").setEnabled(true); } else { findPreference("btDeviceName").setEnabled(false); + findPreference("btClearData").setEnabled(false); } } @Override @@ -195,4 +201,18 @@ private void updatePrefSummary(Preference p) { } } + private class onClickListenerClearBtData implements Preference.OnPreferenceClickListener { + @Override + public boolean onPreferenceClick(Preference preference) { + + if (OpenScale.getInstance(getApplicationContext()).clearBtScaleData()) { + Toast.makeText(preference.getContext(), getResources().getString(R.string.info_delete_bluetooth_data_success), Toast.LENGTH_SHORT).show(); + } else { + Toast.makeText(preference.getContext(), getResources().getString(R.string.info_bluetooth_not_established), Toast.LENGTH_SHORT).show(); + } + + return false; + } + } + } diff --git a/android_app/app/src/main/res/values/strings.xml b/android_app/app/src/main/res/values/strings.xml index b751a81c..ac565c2c 100644 --- a/android_app/app/src/main/res/values/strings.xml +++ b/android_app/app/src/main/res/values/strings.xml @@ -64,6 +64,9 @@ Is not visible Searching for Bluetooth bathroom scale is enabled Searching for Bluetooth bathroom scale is disabled + Clear Bluetooth data + Bluetooth data was successful cleared + Bluetooth connection not established Enter your height in cm Enter your name No user exist! Please create a new user in the settings diff --git a/android_app/app/src/main/res/xml/preferences.xml b/android_app/app/src/main/res/xml/preferences.xml index 7d457fd6..dbace69f 100644 --- a/android_app/app/src/main/res/xml/preferences.xml +++ b/android_app/app/src/main/res/xml/preferences.xml @@ -7,6 +7,7 @@ +