Galaxy Watch Features - ECG / BP

Search This thread

wasser79

Member
Sep 26, 2020
35
4
8
I installed the APK on my Xiaomi Mi9T pro. When I open the App, my language is correctly identify by the app, but i got the info, that there is no compatible watch available even though my Watch Active 2 is connected to my phone. Do i have to install more than just the APK? Thanks for your help!

Tizen Version 5.5.0.2 is installed on the watch.
Is SHM installed on the watch?
 

ruszok

Member
Jan 5, 2010
39
3
28
For everyone who have preinstalled BP and can't sideload modded BP - there is solution:
:fingers-crossed:

Ok, so anybody who need: current working BP.tpk you can download here https://drive.google.com/file/d/1TDvDCkruVFWE-h2Ysr4Hc_CXIhkop7dq/view
Upon new updates for BP app here is instruction how to fix it:

1) Unpack content of tpk(regular zip archive) to some folder.
2) Go to this folder and find all files in which include bundle id: com.samsung.health.samd.bp... (I used AstroGrep to find all occurrences). Not only xml, but also binary files (bin folder)!
3) Replace all occurrences you found with some different id by changing of 1 character(etc to com.samsung.health.samd.bb).
4) Go bin folder and rename correspondently to your renaming name of the files.
For example:
health-samd-bp-home -> health-samd-bb-home,
health-samd-bp-service->health-samd-bb-service,
health-samd-bp-widget->health-samd-bb-widget
5) Go to root folder again and find all occurrences of health-samd-bp... inside of all files. Replace it with health-samd-bb....
6) Pack all modified files back
7) Sign and install.
 

Gary02468

Senior Member
Jul 25, 2011
1,184
218
83
For everyone who have preinstalled BP and can't sideload modded BP - there is solution:
Thanks! Which version is this? The included tizen-manifest.xml says 1.0.72. Is that correct?
 

adfree

Senior Member
Jun 14, 2008
9,090
5,367
243
Samsung released Tizen 5.5 Firmware for GWA1 and old GW...

So I can do some stupid own tests with my SM-R500 and Blood Oxygen...

I am still on my rooted DSL1 Firmware... so need some time to jump to rooted Tizen 5.5...

Best Regards
 

l0nax

Member
Jan 12, 2018
17
14
13
Hey everyone,

The last few days I've sad down reversed engineered and patched the Applications.
I toked my a while, but I got ECG and BP working with the latest SHM-Version.

Some facts about the Hardware & Software I used/have:
  • Samsung Galaxy Watch 3
    • Model: SM-R840
    • Tizen Version: 5.5.0.2
    • Software-Version: R840XXU1BUA8
  • Google Pixel 3 (Android 11)
  • Location: Germany
Samsung Health Monitor Versions:
  • Android: 1.1.0.183
  • Galaxy Watch: 1.1.0037

Please note that at this time I do not have the device to calibrate the Blood Pressure feature.
But this evening I will have access to a BP Device, I will update this post after calibrating the watch.

Screenshots

Screenshot_20210226-130853.pngScreenshot_20210226-130850.pngScreenshot_20210226-144144.png
PXL_20210226_120932126.MP.jpgPXL_20210226_120924324.MP.jpgPXL_20210226_120915266.MP.jpg
Screen__20210226_144651.pngScreen_20210226_144551.png

Files
Steps to Install
  1. Sign the com_samsung_health_samd_bp.patched.tpk file
  2. Sign the monitor.apk file
  3. Install the Samsung Health Monitor App on your phone: adb install ./monitor.apk
  4. Install the tpk on your Watch: sdb install ./com_samsung_health_samd_bp.patched.tpk
  5. Now everything should work

Changes made to the TPK:
  • Renamed package from com.samsung.health.samd.bp to com.samsung.health.samd.bb

Changes made to the APK:
  • Removed Samsung Device Restriction
  • Reduced required Age

Diff:
diff --color -u -p -r /tmp/tmp.t6S5vOlrqk/AndroidManifest.xml /tmp/tmp.LHSTmyPfrE/AndroidManifest.xml
--- /tmp/tmp.t6S5vOlrqk/AndroidManifest.xml    2021-02-26 13:43:54.945122180 +0100
+++ /tmp/tmp.LHSTmyPfrE/AndroidManifest.xml    2021-02-24 13:35:18.979000000 +0100
@@ -10,7 +10,7 @@
     <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
     <uses-permission android:name="android.permission.WAKE_LOCK"/>
     <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
-    <application android:allowBackup="false" android:allowTaskReparenting="true" android:appComponentFactory="androidx.core.app.CoreComponentFactory" android:extractNativeLibs="false" android:icon="@drawable/group_2" android:label="@string/shealthmonitor_app_name" android:largeHeap="true" android:name="com.samsung.android.shealthmonitor.SHealthMonitorApplication" android:requestLegacyExternalStorage="true" android:roundIcon="@drawable/group_2" android:supportsRtl="true" android:theme="@style/AppTheme">
+    <application android:allowBackup="false" android:allowTaskReparenting="true" android:appComponentFactory="androidx.core.app.CoreComponentFactory" android:extractNativeLibs="true" android:icon="@drawable/group_2" android:label="@string/shealthmonitor_app_name" android:largeHeap="true" android:name="com.samsung.android.shealthmonitor.SHealthMonitorApplication" android:requestLegacyExternalStorage="true" android:roundIcon="@drawable/group_2" android:supportsRtl="true" android:theme="@style/AppTheme">
         <meta-data android:name="com.samsung.android.health.permission.write" android:value="com.samsung.health.blood_pressure;com.samsung.health.ecg"/>
         <meta-data android:name="com.samsung.android.health.permission.read" android:value="com.samsung.health.user_profile"/>
         <activity android:configChanges="keyboardHidden|orientation|screenSize" android:exported="false" android:hardwareAccelerated="true" android:label="@string/shealthmonitor_app_name" android:launchMode="singleTask" android:name="com.samsung.android.shealthmonitor.home.ui.activity.SHealthMonitorMainActivity" android:screenOrientation="portrait" android:theme="@style/ProMainAppCompat"/>
@@ -180,4 +180,4 @@
         <meta-data android:name="SPDE.build.signature" android:value="unknown/unofficial/release/none"/>
         <meta-data android:name="SPDE.env.version" android:value="4.0.0/L30.1.18/0.9.17"/>
     </application>
-</manifest>
\ No newline at end of file
+</manifest>
Only in /tmp/tmp.LHSTmyPfrE: build
diff --color -u -p -r /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/sdk/SsdkVendorCheck.smali /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/sdk/SsdkVendorCheck.smali
--- /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/sdk/SsdkVendorCheck.smali    2021-02-26 13:43:56.570128395 +0100
+++ /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/sdk/SsdkVendorCheck.smali    2021-02-26 14:10:08.629140988 +0100
@@ -41,7 +41,7 @@
     .line 24
     sget-object v0, Lcom/samsung/android/sdk/SsdkVendorCheck;->strBrand:Ljava/lang/String;

-    const/4 v1, 0x0
+    const/4 v1, 0x1

     if-eqz v0, :cond_2

@@ -52,7 +52,7 @@
     goto :goto_0

     :cond_0
-    const-string v2, "Samsung"
+    const-string v2, "Google"

     .line 26
     invoke-virtual {v0, v2}, Ljava/lang/String;->compareToIgnoreCase(Ljava/lang/String;)I
diff --color -u -p -r /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/shealthmonitor/bp/ui/card/SHealthMonitorBpCard.smali /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/shealthmonitor/bp/ui/card/SHealthMonitorBpCard.smali
--- /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/shealthmonitor/bp/ui/card/SHealthMonitorBpCard.smali    2021-02-26 13:43:56.646128686 +0100
+++ /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/shealthmonitor/bp/ui/card/SHealthMonitorBpCard.smali    2021-02-24 16:41:43.047126075 +0100
@@ -914,7 +914,7 @@

     sub-int/2addr v1, v0

-    const/16 v0, 0x16
+    const/16 v0, 0x11

     if-le v0, v1, :cond_0

diff --color -u -p -r /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/shealthmonitor/util/CSCUtils.smali /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/shealthmonitor/util/CSCUtils.smali
--- /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/shealthmonitor/util/CSCUtils.smali    2021-02-26 13:43:56.723128980 +0100
+++ /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/shealthmonitor/util/CSCUtils.smali    2021-02-24 15:32:09.013429909 +0100
@@ -1058,14 +1058,14 @@

     .line 217
     :cond_5
-    sget-object v0, Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;->ALL_NOT_SUPPORT:Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;
+    sget-object v0, Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;->ALL_SUPPORT:Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;

     return-object v0

     .line 192
     :cond_6
     :goto_2
-    sget-object v0, Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;->NO_SIM:Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;
+    sget-object v0, Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;->ALL_SUPPORT:Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;

     return-object v0
.end method
diff --color -u -p -r /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/shealthmonitor/util/Utils.smali /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/shealthmonitor/util/Utils.smali
--- /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/shealthmonitor/util/Utils.smali    2021-02-26 13:43:56.726128992 +0100
+++ /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/shealthmonitor/util/Utils.smali    2021-02-26 14:31:25.965026392 +0100
@@ -2138,7 +2138,7 @@

     move-result v2

-    const/16 v4, 0x16
+    const/16 v4, 0x11

     sub-int/2addr v2, v0

@@ -2193,16 +2193,16 @@

     move-result-object v0

-    const-string v1, "samsung"
+    const-string v1, "google"

-    invoke-virtual {v0, v1}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
+    invoke-virtual {v1, v1}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

     move-result v0

     return v0

     :cond_0
-    const/4 v0, 0x0
+    const/4 v0, 0x1

     return v0
.end method
 

Leon

Senior Member
Dec 31, 2012
2,565
1,147
198
28
divna.tech
Does anyone know if its ECG works with Huawei devices? Also is there a way to install Galaxy Store, to download Samsung Health Monitor? Or the second could be installed separately?
 

l0nax

Member
Jan 12, 2018
17
14
13
Does anyone know if its ECG works with Huawei devices? Also is there a way to install Galaxy Store, to download Samsung Health Monitor? Or the second could be installed separately?

Follow the steps above.
Only samsung devices can install the apps from the Galaxy Store.
 

samiznayut

Member
Dec 11, 2020
21
1
13
Go for UAE middle east...
It has SpO2, BP and ECG but something tells me that Samsung checks for phone location that even with CSC change, something would be disabled... good luck
Thank you for your help in choosing the best CSC for me. Everything works fine, BP and ECG work too, but i couldn't find SpO2. Could you please tell me what to do?
 

Dante63

Senior Member
Nov 1, 2015
1,635
1,440
143
27
the Clouds
Hey everyone,

The last few days I've sad down reversed engineered and patched the Applications.
I toked my a while, but I got ECG and BP working with the latest SHM-Version.

Some facts about the Hardware & Software I used/have:
  • Samsung Galaxy Watch 3
    • Model: SM-R840
    • Tizen Version: 5.5.0.2
    • Software-Version: R840XXU1BUA8
  • Google Pixel 3 (Android 11)
  • Location: Germany
Samsung Health Monitor Versions:
  • Android: 1.1.0.183
  • Galaxy Watch: 1.1.0037

Please note that at this time I do not have the device to calibrate the Blood Pressure feature.
But this evening I will have access to a BP Device, I will update this post after calibrating the watch.

Screenshots

View attachment 5233619View attachment 5233621View attachment 5233697
View attachment 5233623View attachment 5233625View attachment 5233627
View attachment 5233699View attachment 5233701

Files
Steps to Install
  1. Sign the com_samsung_health_samd_bp.patched.tpk file
  2. Sign the monitor.apk file
  3. Install the Samsung Health Monitor App on your phone: adb install ./monitor.apk
  4. Install the tpk on your Watch: sdb install ./com_samsung_health_samd_bp.patched.tpk
  5. Now everything should work

Changes made to the TPK:
  • Renamed package from com.samsung.health.samd.bp to com.samsung.health.samd.bb

Changes made to the APK:
  • Removed Samsung Device Restriction
  • Reduced required Age

Diff:
diff --color -u -p -r /tmp/tmp.t6S5vOlrqk/AndroidManifest.xml /tmp/tmp.LHSTmyPfrE/AndroidManifest.xml
--- /tmp/tmp.t6S5vOlrqk/AndroidManifest.xml    2021-02-26 13:43:54.945122180 +0100
+++ /tmp/tmp.LHSTmyPfrE/AndroidManifest.xml    2021-02-24 13:35:18.979000000 +0100
@@ -10,7 +10,7 @@
     <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
     <uses-permission android:name="android.permission.WAKE_LOCK"/>
     <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
-    <application android:allowBackup="false" android:allowTaskReparenting="true" android:appComponentFactory="androidx.core.app.CoreComponentFactory" android:extractNativeLibs="false" android:icon="@drawable/group_2" android:label="@string/shealthmonitor_app_name" android:largeHeap="true" android:name="com.samsung.android.shealthmonitor.SHealthMonitorApplication" android:requestLegacyExternalStorage="true" android:roundIcon="@drawable/group_2" android:supportsRtl="true" android:theme="@style/AppTheme">
+    <application android:allowBackup="false" android:allowTaskReparenting="true" android:appComponentFactory="androidx.core.app.CoreComponentFactory" android:extractNativeLibs="true" android:icon="@drawable/group_2" android:label="@string/shealthmonitor_app_name" android:largeHeap="true" android:name="com.samsung.android.shealthmonitor.SHealthMonitorApplication" android:requestLegacyExternalStorage="true" android:roundIcon="@drawable/group_2" android:supportsRtl="true" android:theme="@style/AppTheme">
         <meta-data android:name="com.samsung.android.health.permission.write" android:value="com.samsung.health.blood_pressure;com.samsung.health.ecg"/>
         <meta-data android:name="com.samsung.android.health.permission.read" android:value="com.samsung.health.user_profile"/>
         <activity android:configChanges="keyboardHidden|orientation|screenSize" android:exported="false" android:hardwareAccelerated="true" android:label="@string/shealthmonitor_app_name" android:launchMode="singleTask" android:name="com.samsung.android.shealthmonitor.home.ui.activity.SHealthMonitorMainActivity" android:screenOrientation="portrait" android:theme="@style/ProMainAppCompat"/>
@@ -180,4 +180,4 @@
         <meta-data android:name="SPDE.build.signature" android:value="unknown/unofficial/release/none"/>
         <meta-data android:name="SPDE.env.version" android:value="4.0.0/L30.1.18/0.9.17"/>
     </application>
-</manifest>
\ No newline at end of file
+</manifest>
Only in /tmp/tmp.LHSTmyPfrE: build
diff --color -u -p -r /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/sdk/SsdkVendorCheck.smali /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/sdk/SsdkVendorCheck.smali
--- /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/sdk/SsdkVendorCheck.smali    2021-02-26 13:43:56.570128395 +0100
+++ /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/sdk/SsdkVendorCheck.smali    2021-02-26 14:10:08.629140988 +0100
@@ -41,7 +41,7 @@
     .line 24
     sget-object v0, Lcom/samsung/android/sdk/SsdkVendorCheck;->strBrand:Ljava/lang/String;

-    const/4 v1, 0x0
+    const/4 v1, 0x1

     if-eqz v0, :cond_2

@@ -52,7 +52,7 @@
     goto :goto_0

     :cond_0
-    const-string v2, "Samsung"
+    const-string v2, "Google"

     .line 26
     invoke-virtual {v0, v2}, Ljava/lang/String;->compareToIgnoreCase(Ljava/lang/String;)I
diff --color -u -p -r /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/shealthmonitor/bp/ui/card/SHealthMonitorBpCard.smali /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/shealthmonitor/bp/ui/card/SHealthMonitorBpCard.smali
--- /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/shealthmonitor/bp/ui/card/SHealthMonitorBpCard.smali    2021-02-26 13:43:56.646128686 +0100
+++ /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/shealthmonitor/bp/ui/card/SHealthMonitorBpCard.smali    2021-02-24 16:41:43.047126075 +0100
@@ -914,7 +914,7 @@

     sub-int/2addr v1, v0

-    const/16 v0, 0x16
+    const/16 v0, 0x11

     if-le v0, v1, :cond_0

diff --color -u -p -r /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/shealthmonitor/util/CSCUtils.smali /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/shealthmonitor/util/CSCUtils.smali
--- /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/shealthmonitor/util/CSCUtils.smali    2021-02-26 13:43:56.723128980 +0100
+++ /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/shealthmonitor/util/CSCUtils.smali    2021-02-24 15:32:09.013429909 +0100
@@ -1058,14 +1058,14 @@

     .line 217
     :cond_5
-    sget-object v0, Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;->ALL_NOT_SUPPORT:Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;
+    sget-object v0, Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;->ALL_SUPPORT:Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;

     return-object v0

     .line 192
     :cond_6
     :goto_2
-    sget-object v0, Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;->NO_SIM:Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;
+    sget-object v0, Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;->ALL_SUPPORT:Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;

     return-object v0
.end method
diff --color -u -p -r /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/shealthmonitor/util/Utils.smali /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/shealthmonitor/util/Utils.smali
--- /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/shealthmonitor/util/Utils.smali    2021-02-26 13:43:56.726128992 +0100
+++ /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/shealthmonitor/util/Utils.smali    2021-02-26 14:31:25.965026392 +0100
@@ -2138,7 +2138,7 @@

     move-result v2

-    const/16 v4, 0x16
+    const/16 v4, 0x11

     sub-int/2addr v2, v0

@@ -2193,16 +2193,16 @@

     move-result-object v0

-    const-string v1, "samsung"
+    const-string v1, "google"

-    invoke-virtual {v0, v1}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
+    invoke-virtual {v1, v1}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

     move-result v0

     return v0

     :cond_0
-    const/4 v0, 0x0
+    const/4 v0, 0x1

     return v0
.end method
You're saying that SHM apk has device restrictions...?
 

Dante63

Senior Member
Nov 1, 2015
1,635
1,440
143
27
the Clouds
Thank you for your help in choosing the best CSC for me. Everything works fine, BP and ECG work too, but i couldn't find SpO2. Could you please tell me what to do?
SpO2 according to @adfree is part of Samsung Health watch application... as I said, I'm not sure that even with the right csc, samsung has checks on other things that would disable something for you...
 
Last edited:

Dante63

Senior Member
Nov 1, 2015
1,635
1,440
143
27
the Clouds
Yes, the SHM App does check the CSC – SIM + location – and it does check if it does run on a Samsung devices.
Already handled root detection and country restriction, aware if all the checks... I didn't find the device restriction and now that you said it... I will update my thread, credit you for the finding and apply the logic of removing device restriction...

What is really odd is that many non-samsung devices got it working, only few didn't work for them...

Thanks for the findings though...
 
  • Like
Reactions: Bi0haZarD

mrscsi

New member
Feb 28, 2021
2
0
11
Hey everyone,

The last few days I've sad down reversed engineered and patched the Applications.
I toked my a while, but I got ECG and BP working with the latest SHM-Version.

Some facts about the Hardware & Software I used/have:
  • Samsung Galaxy Watch 3
    • Model: SM-R840
    • Tizen Version: 5.5.0.2
    • Software-Version: R840XXU1BUA8
  • Google Pixel 3 (Android 11)
  • Location: Germany
Samsung Health Monitor Versions:
  • Android: 1.1.0.183
  • Galaxy Watch: 1.1.0037

Please note that at this time I do not have the device to calibrate the Blood Pressure feature.
But this evening I will have access to a BP Device, I will update this post after calibrating the watch.

Screenshots

View attachment 5233619View attachment 5233621View attachment 5233697
View attachment 5233623View attachment 5233625View attachment 5233627
View attachment 5233699View attachment 5233701

Files
Steps to Install
  1. Sign the com_samsung_health_samd_bp.patched.tpk file
  2. Sign the monitor.apk file
  3. Install the Samsung Health Monitor App on your phone: adb install ./monitor.apk
  4. Install the tpk on your Watch: sdb install ./com_samsung_health_samd_bp.patched.tpk
  5. Now everything should work

Changes made to the TPK:
  • Renamed package from com.samsung.health.samd.bp to com.samsung.health.samd.bb

Changes made to the APK:
  • Removed Samsung Device Restriction
  • Reduced required Age

Diff:
diff --color -u -p -r /tmp/tmp.t6S5vOlrqk/AndroidManifest.xml /tmp/tmp.LHSTmyPfrE/AndroidManifest.xml
--- /tmp/tmp.t6S5vOlrqk/AndroidManifest.xml    2021-02-26 13:43:54.945122180 +0100
+++ /tmp/tmp.LHSTmyPfrE/AndroidManifest.xml    2021-02-24 13:35:18.979000000 +0100
@@ -10,7 +10,7 @@
     <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
     <uses-permission android:name="android.permission.WAKE_LOCK"/>
     <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
-    <application android:allowBackup="false" android:allowTaskReparenting="true" android:appComponentFactory="androidx.core.app.CoreComponentFactory" android:extractNativeLibs="false" android:icon="@drawable/group_2" android:label="@string/shealthmonitor_app_name" android:largeHeap="true" android:name="com.samsung.android.shealthmonitor.SHealthMonitorApplication" android:requestLegacyExternalStorage="true" android:roundIcon="@drawable/group_2" android:supportsRtl="true" android:theme="@style/AppTheme">
+    <application android:allowBackup="false" android:allowTaskReparenting="true" android:appComponentFactory="androidx.core.app.CoreComponentFactory" android:extractNativeLibs="true" android:icon="@drawable/group_2" android:label="@string/shealthmonitor_app_name" android:largeHeap="true" android:name="com.samsung.android.shealthmonitor.SHealthMonitorApplication" android:requestLegacyExternalStorage="true" android:roundIcon="@drawable/group_2" android:supportsRtl="true" android:theme="@style/AppTheme">
         <meta-data android:name="com.samsung.android.health.permission.write" android:value="com.samsung.health.blood_pressure;com.samsung.health.ecg"/>
         <meta-data android:name="com.samsung.android.health.permission.read" android:value="com.samsung.health.user_profile"/>
         <activity android:configChanges="keyboardHidden|orientation|screenSize" android:exported="false" android:hardwareAccelerated="true" android:label="@string/shealthmonitor_app_name" android:launchMode="singleTask" android:name="com.samsung.android.shealthmonitor.home.ui.activity.SHealthMonitorMainActivity" android:screenOrientation="portrait" android:theme="@style/ProMainAppCompat"/>
@@ -180,4 +180,4 @@
         <meta-data android:name="SPDE.build.signature" android:value="unknown/unofficial/release/none"/>
         <meta-data android:name="SPDE.env.version" android:value="4.0.0/L30.1.18/0.9.17"/>
     </application>
-</manifest>
\ No newline at end of file
+</manifest>
Only in /tmp/tmp.LHSTmyPfrE: build
diff --color -u -p -r /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/sdk/SsdkVendorCheck.smali /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/sdk/SsdkVendorCheck.smali
--- /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/sdk/SsdkVendorCheck.smali    2021-02-26 13:43:56.570128395 +0100
+++ /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/sdk/SsdkVendorCheck.smali    2021-02-26 14:10:08.629140988 +0100
@@ -41,7 +41,7 @@
     .line 24
     sget-object v0, Lcom/samsung/android/sdk/SsdkVendorCheck;->strBrand:Ljava/lang/String;

-    const/4 v1, 0x0
+    const/4 v1, 0x1

     if-eqz v0, :cond_2

@@ -52,7 +52,7 @@
     goto :goto_0

     :cond_0
-    const-string v2, "Samsung"
+    const-string v2, "Google"

     .line 26
     invoke-virtual {v0, v2}, Ljava/lang/String;->compareToIgnoreCase(Ljava/lang/String;)I
diff --color -u -p -r /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/shealthmonitor/bp/ui/card/SHealthMonitorBpCard.smali /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/shealthmonitor/bp/ui/card/SHealthMonitorBpCard.smali
--- /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/shealthmonitor/bp/ui/card/SHealthMonitorBpCard.smali    2021-02-26 13:43:56.646128686 +0100
+++ /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/shealthmonitor/bp/ui/card/SHealthMonitorBpCard.smali    2021-02-24 16:41:43.047126075 +0100
@@ -914,7 +914,7 @@

     sub-int/2addr v1, v0

-    const/16 v0, 0x16
+    const/16 v0, 0x11

     if-le v0, v1, :cond_0

diff --color -u -p -r /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/shealthmonitor/util/CSCUtils.smali /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/shealthmonitor/util/CSCUtils.smali
--- /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/shealthmonitor/util/CSCUtils.smali    2021-02-26 13:43:56.723128980 +0100
+++ /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/shealthmonitor/util/CSCUtils.smali    2021-02-24 15:32:09.013429909 +0100
@@ -1058,14 +1058,14 @@

     .line 217
     :cond_5
-    sget-object v0, Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;->ALL_NOT_SUPPORT:Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;
+    sget-object v0, Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;->ALL_SUPPORT:Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;

     return-object v0

     .line 192
     :cond_6
     :goto_2
-    sget-object v0, Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;->NO_SIM:Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;
+    sget-object v0, Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;->ALL_SUPPORT:Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;

     return-object v0
.end method
diff --color -u -p -r /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/shealthmonitor/util/Utils.smali /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/shealthmonitor/util/Utils.smali
--- /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/shealthmonitor/util/Utils.smali    2021-02-26 13:43:56.726128992 +0100
+++ /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/shealthmonitor/util/Utils.smali    2021-02-26 14:31:25.965026392 +0100
@@ -2138,7 +2138,7 @@

     move-result v2

-    const/16 v4, 0x16
+    const/16 v4, 0x11

     sub-int/2addr v2, v0

@@ -2193,16 +2193,16 @@

     move-result-object v0

-    const-string v1, "samsung"
+    const-string v1, "google"

-    invoke-virtual {v0, v1}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
+    invoke-virtual {v1, v1}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

     move-result v0

     return v0

     :cond_0
-    const/4 v0, 0x0
+    const/4 v0, 0x1

     return v0
.end method


Stupid question I am sure but what do you mean by "SIGN" the tpk and apk. I try it and it craps out like all the others I have tried do
 

Top Liked Posts

  • There are no posts matching your filters.
  • 4
    Tiny "progress" about Blood Oxygen...

    Need some tester(s)...
    TPK need to be sign... or you have allready my rooted Firmware...

    OWN RISK!

    Still NO full working Blood Oxygen for GWA2...

    Need feedback from GW3 user(s), if here this Version do Blood Oxygen measure...

    Thanx in advance.

    Best Regards
    3
    Let me share my results. Credits to @Dante63.

    I install the mod SHM 183 and the BP and ECG to my galaxy watch SM-R800.

    Installation went without a breeze. Follow instruction of install SHM, close it, install APK.

    When first time launch SHM, it will indicate no watch but few seconds later i see ECG and BP.

    Cant calibrate the BP as forever stuck at 0%..

    For ECG, i think no probe so couldnt measure anything.

    If any other R800 user managed to get it work, pls share !!
    2
    Guys, please may you give me latest apk and tpks for non samsung phones for active 2?
    Thx in advance
    You can grab my latest SHM apk but for the tpks, there are so many, I am not sure if what I have are the latest to be honest...
    2
    Guys, please may you give me latest apk and tpks for non samsung phones for active 2?
    Thx in advance

    fwiw, heres the original ones from the original method and the only ones ive used, in apk form, one for ECG, one for BP. Simply install on phone and they get pushed automatically to watch. Just remember not to uninstall them, because, you guessed it, they then get removed from the watch. I get too confused too by the many tpk's floating around. So i just use the ones i know work....
    2
    Update should still work

    Ive done at least one update with mine and nothing broke, but as always, your mileage may vary, and you can only try

    Backup your watch via Gear app on phone and keep the ecg and bp tpks handy just in case (or you can try my apk versions which push them from the phone easily, above)
    Thanks updated and everything still working
  • 39
    UPDATE 10.06.2020: Version 165 from @[SIZE="4"]adfree[/SIZE] and modded by @[SIZE="4"]caravana[/SIZE], with this version you can update WITHOUT deinstalling old one and without make calibration again. Try it and let me know. Download from here: AbsolutelyOWNRISK-APK-165

    UPDATE 07.06.2020: New APK again (version 161). Always thanks to @[SIZE="4"]adfree[/SIZE] and @[SIZE="4"]caravana[/SIZE]. Download from here: AbsolutelyOWNRISK-APK-161
    UPDATE 30.05.2020: New APK (version 159). Thanks to @[SIZE="4"]adfree[/SIZE] and @[SIZE="4"]caravana[/SIZE]. Download from here: AbsolutelyOWNRISK-APK-159
    UPDATE 17.05.2020: I updated the APK with version 157 (thanks @[SIZE="4"]caravana[/SIZE]) because the old one gave a false-positive with MalwareBytes app (RUBBISH).


    Okay, I'm going to explain all the steps I've done. I will try to simplify driving to the maximum.
    In attached you will find the APK and the TPK that I used (the credits for both go to those who upload them in the forum; thank you very much), and old version of SDB (2.2.6.0).

    Of course, everything will be AT YOUR OWN RISK, so you need to know what you are doing!

    0) Enable debugging and "Developer Options" on the GWA2, activate WiFi (same network where the PC is connected, the guide concerns only Windows, sorry for this)
    1) Download the attached files and dezip it
    2) Download and install TizenStudio 3.7 with IDE installer (608MB)
    3) Start TizenStudio, at the top you will see a box with "No target" written, click on the drop-down menu and choose "Launch Remote Device Manager" click on "Scan" and you will find your watch.
    4) Click on "Connect ON" and accept the connection on the watch. Once connected, open the folder containing SDB 2.2.6.0, CMD, "sdb install bp.tpk"

    If you have installation problems you have to try these ways
    - on the watch activate wi-fi, deactivate bluetooth, restart the GWA2, retry steps 3) and 4)
    - if you have not solved, you must reset the smartwatch, re-associate it with your smartphone and repeat steps 0), 3) and 4).

    EDIT:
    Video Tutorial (english language from TechnoProz): https://www.youtube.com/watch?v=bTni4d832XE
    Video Tutorial (italian language from AlexSmart): https://www.youtube.com/watch?v=AdEWD7Kn44g
    Video Tutorial (português language from SombrasNoturnas): https://www.youtube.com/watch?v=VTiZxNO7lcs

    Let me know if you have difficulties and where, forgive my English but it is the result of Google Translator.
    10
    Hey everyone,

    The last few days I've sad down reversed engineered and patched the Applications.
    I toked my a while, but I got ECG and BP working with the latest SHM-Version.

    Some facts about the Hardware & Software I used/have:
    • Samsung Galaxy Watch 3
      • Model: SM-R840
      • Tizen Version: 5.5.0.2
      • Software-Version: R840XXU1BUA8
    • Google Pixel 3 (Android 11)
    • Location: Germany
    Samsung Health Monitor Versions:
    • Android: 1.1.0.183
    • Galaxy Watch: 1.1.0037

    Please note that at this time I do not have the device to calibrate the Blood Pressure feature.
    But this evening I will have access to a BP Device, I will update this post after calibrating the watch.

    Screenshots

    Screenshot_20210226-130853.pngScreenshot_20210226-130850.pngScreenshot_20210226-144144.png
    PXL_20210226_120932126.MP.jpgPXL_20210226_120924324.MP.jpgPXL_20210226_120915266.MP.jpg
    Screen__20210226_144651.pngScreen_20210226_144551.png

    Files
    Steps to Install
    1. Sign the com_samsung_health_samd_bp.patched.tpk file
    2. Sign the monitor.apk file
    3. Install the Samsung Health Monitor App on your phone: adb install ./monitor.apk
    4. Install the tpk on your Watch: sdb install ./com_samsung_health_samd_bp.patched.tpk
    5. Now everything should work

    Changes made to the TPK:
    • Renamed package from com.samsung.health.samd.bp to com.samsung.health.samd.bb

    Changes made to the APK:
    • Removed Samsung Device Restriction
    • Reduced required Age

    Diff:
    diff --color -u -p -r /tmp/tmp.t6S5vOlrqk/AndroidManifest.xml /tmp/tmp.LHSTmyPfrE/AndroidManifest.xml
    --- /tmp/tmp.t6S5vOlrqk/AndroidManifest.xml    2021-02-26 13:43:54.945122180 +0100
    +++ /tmp/tmp.LHSTmyPfrE/AndroidManifest.xml    2021-02-24 13:35:18.979000000 +0100
    @@ -10,7 +10,7 @@
         <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
         <uses-permission android:name="android.permission.WAKE_LOCK"/>
         <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
    -    <application android:allowBackup="false" android:allowTaskReparenting="true" android:appComponentFactory="androidx.core.app.CoreComponentFactory" android:extractNativeLibs="false" android:icon="@drawable/group_2" android:label="@string/shealthmonitor_app_name" android:largeHeap="true" android:name="com.samsung.android.shealthmonitor.SHealthMonitorApplication" android:requestLegacyExternalStorage="true" android:roundIcon="@drawable/group_2" android:supportsRtl="true" android:theme="@style/AppTheme">
    +    <application android:allowBackup="false" android:allowTaskReparenting="true" android:appComponentFactory="androidx.core.app.CoreComponentFactory" android:extractNativeLibs="true" android:icon="@drawable/group_2" android:label="@string/shealthmonitor_app_name" android:largeHeap="true" android:name="com.samsung.android.shealthmonitor.SHealthMonitorApplication" android:requestLegacyExternalStorage="true" android:roundIcon="@drawable/group_2" android:supportsRtl="true" android:theme="@style/AppTheme">
             <meta-data android:name="com.samsung.android.health.permission.write" android:value="com.samsung.health.blood_pressure;com.samsung.health.ecg"/>
             <meta-data android:name="com.samsung.android.health.permission.read" android:value="com.samsung.health.user_profile"/>
             <activity android:configChanges="keyboardHidden|orientation|screenSize" android:exported="false" android:hardwareAccelerated="true" android:label="@string/shealthmonitor_app_name" android:launchMode="singleTask" android:name="com.samsung.android.shealthmonitor.home.ui.activity.SHealthMonitorMainActivity" android:screenOrientation="portrait" android:theme="@style/ProMainAppCompat"/>
    @@ -180,4 +180,4 @@
             <meta-data android:name="SPDE.build.signature" android:value="unknown/unofficial/release/none"/>
             <meta-data android:name="SPDE.env.version" android:value="4.0.0/L30.1.18/0.9.17"/>
         </application>
    -</manifest>
    \ No newline at end of file
    +</manifest>
    Only in /tmp/tmp.LHSTmyPfrE: build
    diff --color -u -p -r /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/sdk/SsdkVendorCheck.smali /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/sdk/SsdkVendorCheck.smali
    --- /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/sdk/SsdkVendorCheck.smali    2021-02-26 13:43:56.570128395 +0100
    +++ /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/sdk/SsdkVendorCheck.smali    2021-02-26 14:10:08.629140988 +0100
    @@ -41,7 +41,7 @@
         .line 24
         sget-object v0, Lcom/samsung/android/sdk/SsdkVendorCheck;->strBrand:Ljava/lang/String;
    
    -    const/4 v1, 0x0
    +    const/4 v1, 0x1
    
         if-eqz v0, :cond_2
    
    @@ -52,7 +52,7 @@
         goto :goto_0
    
         :cond_0
    -    const-string v2, "Samsung"
    +    const-string v2, "Google"
    
         .line 26
         invoke-virtual {v0, v2}, Ljava/lang/String;->compareToIgnoreCase(Ljava/lang/String;)I
    diff --color -u -p -r /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/shealthmonitor/bp/ui/card/SHealthMonitorBpCard.smali /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/shealthmonitor/bp/ui/card/SHealthMonitorBpCard.smali
    --- /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/shealthmonitor/bp/ui/card/SHealthMonitorBpCard.smali    2021-02-26 13:43:56.646128686 +0100
    +++ /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/shealthmonitor/bp/ui/card/SHealthMonitorBpCard.smali    2021-02-24 16:41:43.047126075 +0100
    @@ -914,7 +914,7 @@
    
         sub-int/2addr v1, v0
    
    -    const/16 v0, 0x16
    +    const/16 v0, 0x11
    
         if-le v0, v1, :cond_0
    
    diff --color -u -p -r /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/shealthmonitor/util/CSCUtils.smali /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/shealthmonitor/util/CSCUtils.smali
    --- /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/shealthmonitor/util/CSCUtils.smali    2021-02-26 13:43:56.723128980 +0100
    +++ /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/shealthmonitor/util/CSCUtils.smali    2021-02-24 15:32:09.013429909 +0100
    @@ -1058,14 +1058,14 @@
    
         .line 217
         :cond_5
    -    sget-object v0, Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;->ALL_NOT_SUPPORT:Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;
    +    sget-object v0, Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;->ALL_SUPPORT:Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;
    
         return-object v0
    
         .line 192
         :cond_6
         :goto_2
    -    sget-object v0, Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;->NO_SIM:Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;
    +    sget-object v0, Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;->ALL_SUPPORT:Lcom/samsung/android/shealthmonitor/util/CommonConstants$SupportCountry;
    
         return-object v0
    .end method
    diff --color -u -p -r /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/shealthmonitor/util/Utils.smali /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/shealthmonitor/util/Utils.smali
    --- /tmp/tmp.t6S5vOlrqk/smali/com/samsung/android/shealthmonitor/util/Utils.smali    2021-02-26 13:43:56.726128992 +0100
    +++ /tmp/tmp.LHSTmyPfrE/smali/com/samsung/android/shealthmonitor/util/Utils.smali    2021-02-26 14:31:25.965026392 +0100
    @@ -2138,7 +2138,7 @@
    
         move-result v2
    
    -    const/16 v4, 0x16
    +    const/16 v4, 0x11
    
         sub-int/2addr v2, v0
    
    @@ -2193,16 +2193,16 @@
    
         move-result-object v0
    
    -    const-string v1, "samsung"
    +    const-string v1, "google"
    
    -    invoke-virtual {v0, v1}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
    +    invoke-virtual {v1, v1}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
    
         move-result v0
    
         return v0
    
         :cond_0
    -    const/4 v0, 0x0
    +    const/4 v0, 0x1
    
         return v0
    .end method
    10
    New tpk pusher with v1.1.0037 ;)
    9
    Hello everyone,

    As we have no users from Korea as it seems...
    No idea why...

    I'm from Korea :eek:

    First, thanks for your great work. Now I'm using BP feature with my galaxy watch active 2 using your guide.

    I have a Korean Galaxy Note 10+ (SM-N976N) and Korean Galaxy watch active 2 (SM-R820, R820XXU1BTD6, CSC=KOO, Tizen 4.0.0.8).

    I could install the BP version 1.0.72 (samsungapps-000004413020-2035556-100000072.wgt) and ECG version 1.0.0004 (samsungapps-000004688049-2651158-100000004.wgt) and SHM version 1.0.0.165 (Samsung Health Monitor 1.0.0.165.mod2.apk),
    but unfortunately I still couldn't get the ECG feature..

    ===

    There was no ECG debug menu on *#0*#.

    ===

    I analyzed the decoded APK + disassembled JAVA code for SHM version 153 and 165, and I couldn't find the ECG logic.
    There was no code for "com.samsung.android.shealthmonitor.ecg.control.EcgController" class which is called from ControlManager.
    Of course the "com.samsung.android.shealthmonitor.bp.control.BloodPressureController" class could be found in the folder.

    ===

    Finally, there is a Korean website of "Ministry of Food and Drug Safety"
    https://emed.mfds.go.kr/#!CECAB01F010

    You can find the BP and ECG approved number by Samsung if you can translate Korean...
    1. Type 삼성전자 in 업소명 field (find samsung electronics in company name)
    2. Click 제 2893 호 (company number 2893)
    3. 제허 20-295 호 (approval number 20-295)
    -> This is for current BP app.
    -> Classification Name is 혈압 검사 또는 맥파 검사용 기기 (Sphygmomanometers and sphygmograph). You can find this one as "home_about_label_classification" in strings.xml.
    -> Model name is 혈압 앱 (BP app). You can find this one as "home_about_label_model" in strings.xml.
    4. 제허 20-378호 (approval number 20-378)
    -> This is for (maybe not released) ECG app.
    -> Classification Name is 심전계 (Electrocardiograph)
    -> Model name is ECG 앱 (ECG app)

    153 version didn't include both of 20-295 (BP app) and 20-378 (ECG app)
    165 version only includes 20-295 (BP app)

    ===

    So, my conclusion is, there is no ECG code for current SHM app for now. sam...sung............. (it's so shameful because many of my friends works on samsung mobile division. I apologize instead of that dumb guys :cool:)
    9
    Pass the updated version please and I'll unlock it 😉...
    Following our conversation. Original file 1.1.0.183.
Our Apps
Get our official app!
The best way to access XDA on your phone
Nav Gestures
Add swipe gestures to any Android
One Handed Mode
Eases uses one hand with your phone