1
0
mirror of https://github.com/oliexdev/openScale.git synced 2025-08-17 14:10:54 +02:00

added fastlane support and gradle signing feature

This commit is contained in:
oliexdev
2020-04-28 21:49:11 +02:00
parent 62066724aa
commit 4dcfd19f2c
50 changed files with 556 additions and 11 deletions

29
.gitignore vendored
View File

@@ -20,13 +20,38 @@ build/
# Local configuration file (sdk path, etc)
local.properties
# Keystore files
*.jks
# Google Services (e.g. APIs or Firebase)
google-services.json
# Proguard folder generated by Eclipse
proguard/
# Log Files
*.log
# Android Studio Navigation editor temp files
.navigation/
# Android Studio captures folder
captures/
# Android Studio
*.iml
/.idea/workspace.xml
/.idea/libraries
.idea/workspace.xml
.idea/tasks.xml
.idea/gradle.xml
.idea/assetWizardSettings.xml
.idea/dictionaries
.idea/libraries
.idea/caches
# fastlane
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output
fastlane/readme.md
fastlane/README.md

6
Gemfile Normal file
View File

@@ -0,0 +1,6 @@
source "https://rubygems.org"
gem "fastlane"
plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
eval_gemfile(plugins_path) if File.exist?(plugins_path)

181
Gemfile.lock Normal file
View File

@@ -0,0 +1,181 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.2)
addressable (2.7.0)
public_suffix (>= 2.0.2, < 5.0)
atomos (0.1.3)
aws-eventstream (1.1.0)
aws-partitions (1.304.0)
aws-sdk-core (3.94.0)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.239.0)
aws-sigv4 (~> 1.1)
jmespath (~> 1.0)
aws-sdk-kms (1.30.0)
aws-sdk-core (~> 3, >= 3.71.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.63.0)
aws-sdk-core (~> 3, >= 3.83.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.1)
aws-sigv4 (1.1.3)
aws-eventstream (~> 1.0, >= 1.0.2)
babosa (1.0.3)
claide (1.0.3)
colored (1.2)
colored2 (3.1.2)
commander-fastlane (4.4.6)
highline (~> 1.7.2)
declarative (0.0.10)
declarative-option (0.1.0)
digest-crc (0.5.1)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
dotenv (2.7.5)
emoji_regex (1.0.1)
excon (0.73.0)
faraday (0.17.3)
multipart-post (>= 1.2, < 3)
faraday-cookie_jar (0.0.6)
faraday (>= 0.7.4)
http-cookie (~> 1.0.0)
faraday_middleware (0.13.1)
faraday (>= 0.7.4, < 1.0)
fastimage (2.1.7)
fastlane (2.146.1)
CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.3, < 3.0.0)
aws-sdk-s3 (~> 1.0)
babosa (>= 1.0.2, < 2.0.0)
bundler (>= 1.12.0, < 3.0.0)
colored
commander-fastlane (>= 4.4.6, < 5.0.0)
dotenv (>= 2.1.1, < 3.0.0)
emoji_regex (>= 0.1, < 2.0)
excon (>= 0.71.0, < 1.0.0)
faraday (~> 0.17)
faraday-cookie_jar (~> 0.0.6)
faraday_middleware (~> 0.13.1)
fastimage (>= 2.1.0, < 3.0.0)
gh_inspector (>= 1.1.2, < 2.0.0)
google-api-client (>= 0.29.2, < 0.37.0)
google-cloud-storage (>= 1.15.0, < 2.0.0)
highline (>= 1.7.2, < 2.0.0)
json (< 3.0.0)
jwt (~> 2.1.0)
mini_magick (>= 4.9.4, < 5.0.0)
multi_xml (~> 0.5)
multipart-post (~> 2.0.0)
plist (>= 3.1.0, < 4.0.0)
public_suffix (~> 2.0.0)
rubyzip (>= 1.3.0, < 2.0.0)
security (= 0.1.3)
simctl (~> 1.6.3)
slack-notifier (>= 2.0.0, < 3.0.0)
terminal-notifier (>= 2.0.0, < 3.0.0)
terminal-table (>= 1.4.5, < 2.0.0)
tty-screen (>= 0.6.3, < 1.0.0)
tty-spinner (>= 0.8.0, < 1.0.0)
word_wrap (~> 1.0.0)
xcodeproj (>= 1.13.0, < 2.0.0)
xcpretty (~> 0.3.0)
xcpretty-travis-formatter (>= 0.0.3)
fastlane-plugin-get_version_name (0.2.2)
gh_inspector (1.1.3)
google-api-client (0.36.4)
addressable (~> 2.5, >= 2.5.1)
googleauth (~> 0.9)
httpclient (>= 2.8.1, < 3.0)
mini_mime (~> 1.0)
representable (~> 3.0)
retriable (>= 2.0, < 4.0)
signet (~> 0.12)
google-cloud-core (1.5.0)
google-cloud-env (~> 1.0)
google-cloud-errors (~> 1.0)
google-cloud-env (1.3.1)
faraday (>= 0.17.3, < 2.0)
google-cloud-errors (1.0.0)
google-cloud-storage (1.26.0)
addressable (~> 2.5)
digest-crc (~> 0.4)
google-api-client (~> 0.33)
google-cloud-core (~> 1.2)
googleauth (~> 0.9)
mini_mime (~> 1.0)
googleauth (0.12.0)
faraday (>= 0.17.3, < 2.0)
jwt (>= 1.4, < 3.0)
memoist (~> 0.16)
multi_json (~> 1.11)
os (>= 0.9, < 2.0)
signet (~> 0.14)
highline (1.7.10)
http-cookie (1.0.3)
domain_name (~> 0.5)
httpclient (2.8.3)
jmespath (1.4.0)
json (2.3.0)
jwt (2.1.0)
memoist (0.16.2)
mini_magick (4.10.1)
mini_mime (1.0.2)
multi_json (1.14.1)
multi_xml (0.6.0)
multipart-post (2.0.0)
nanaimo (0.2.6)
naturally (2.2.0)
os (1.1.0)
plist (3.5.0)
public_suffix (2.0.5)
representable (3.0.4)
declarative (< 0.1.0)
declarative-option (< 0.2.0)
uber (< 0.2.0)
retriable (3.1.2)
rouge (2.0.7)
rubyzip (1.3.0)
security (0.1.3)
signet (0.14.0)
addressable (~> 2.3)
faraday (>= 0.17.3, < 2.0)
jwt (>= 1.5, < 3.0)
multi_json (~> 1.10)
simctl (1.6.8)
CFPropertyList
naturally
slack-notifier (2.3.2)
terminal-notifier (2.0.0)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
tty-cursor (0.7.1)
tty-screen (0.7.1)
tty-spinner (0.9.3)
tty-cursor (~> 0.7)
uber (0.1.0)
unf (0.1.4)
unf_ext
unf_ext (0.0.7.7)
unicode-display_width (1.7.0)
word_wrap (1.0.0)
xcodeproj (1.16.0)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
nanaimo (~> 0.2.6)
xcpretty (0.3.0)
rouge (~> 2.0.7)
xcpretty-travis-formatter (1.0.0)
xcpretty (~> 0.2, >= 0.0.7)
PLATFORMS
ruby
DEPENDENCIES
fastlane
fastlane-plugin-get_version_name
BUNDLED WITH
2.0.2

View File

@@ -1,5 +1,17 @@
apply plugin: 'com.android.application'
def keystorePropertiesFile = rootProject.file("../../openScale.keystore")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
def keystoreLightPropertiesFile = rootProject.file("../../openScale_light.keystore")
def keystoreLightProperties = new Properties()
keystoreLightProperties.load(new FileInputStream(keystoreLightPropertiesFile))
def keystoreProPropertiesFile = rootProject.file("../../openScale_pro.keystore")
def keystoreProProperties = new Properties()
keystoreProProperties.load(new FileInputStream(keystoreProPropertiesFile))
android {
compileSdkVersion 29
defaultConfig {
@@ -29,10 +41,35 @@ android {
lintOptions {
abortOnError false
}
signingConfigs {
release {
storeFile file(rootDir.getCanonicalPath() + '/' + keystoreProperties['releaseKeyStore'])
keyAlias keystoreProperties['releaseKeyAlias']
keyPassword keystoreProperties['releaseKeyPassword']
storePassword keystoreProperties['releaseStorePassword']
}
light {
storeFile file(rootDir.getCanonicalPath() + '/' + keystoreLightProperties['releaseKeyStore'])
keyAlias keystoreLightProperties['releaseKeyAlias']
keyPassword keystoreLightProperties['releaseKeyPassword']
storePassword keystoreLightProperties['releaseStorePassword']
}
pro {
storeFile file(rootDir.getCanonicalPath() + '/' + keystoreProProperties['releaseKeyStore'])
keyAlias keystoreProProperties['releaseKeyAlias']
keyPassword keystoreProProperties['releaseKeyPassword']
storePassword keystoreProProperties['releaseStorePassword']
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
signingConfig signingConfigs.release
}
light {
manifestPlaceholders = [
@@ -42,6 +79,7 @@ android {
versionNameSuffix "-light"
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
signingConfig signingConfigs.light
}
pro {
manifestPlaceholders = [
@@ -51,6 +89,7 @@ android {
versionNameSuffix "-pro"
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
signingConfig signingConfigs.pro
}
}
compileOptions {
@@ -60,7 +99,7 @@ android {
}
dependencies {
implementation 'com.google.android.material:material:1.2.0-alpha03'
implementation 'com.google.android.material:material:1.2.0-alpha06'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
@@ -69,16 +108,16 @@ dependencies {
// Simple CSV
implementation 'com.j256.simplecsv:simplecsv:2.3'
// Blessed Android
implementation 'com.github.weliem:blessed-android:1.2'
implementation 'com.github.weliem:blessed-android:1.15'
// CustomActivityOnCrash
implementation 'cat.ereza:customactivityoncrash:2.2.0'
// AppIntro
implementation 'com.github.AppIntro:AppIntro:6.0.0-alpha3'
implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.3.50'
implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.3.71'
// Room
implementation 'androidx.room:room-runtime:2.2.3'
annotationProcessor 'androidx.room:room-compiler:2.2.3'
androidTestImplementation 'androidx.room:room-testing:2.2.3'
implementation 'androidx.room:room-runtime:2.2.5'
annotationProcessor 'androidx.room:room-compiler:2.2.5'
androidTestImplementation 'androidx.room:room-testing:2.2.5'
// Timber
implementation 'com.jakewharton.timber:timber:4.7.1'
// Local unit tests

View File

@@ -6,7 +6,7 @@ buildscript {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.3'
classpath 'com.android.tools.build:gradle:3.6.3'
}
}

View File

@@ -1,6 +1,6 @@
#Sat Sep 28 10:19:36 CEST 2019
#Sun Apr 05 15:10:31 CEST 2020
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip

2
fastlane/Appfile Normal file
View File

@@ -0,0 +1,2 @@
json_key_file("../fastlane_secrect_keys.json") # Path to the json secret file - Follow https://docs.fastlane.tools/actions/supply/#setup to get one
package_name("com.health.openscale") # e.g. com.krausefx.app

122
fastlane/Fastfile Normal file
View File

@@ -0,0 +1,122 @@
# This file contains the fastlane.tools configuration
# You can find the documentation at https://docs.fastlane.tools
#
# For a list of all available actions, check out
#
# https://docs.fastlane.tools/actions
#
# For a list of all available plugins, check out
#
# https://docs.fastlane.tools/plugins/available-plugins
#
opt_out_usage
# Uncomment the line if you want fastlane to automatically update itself
# update_fastlane
# Add gradle get version name plugin
# fastlane add_plugin get_version_name
default_platform(:android)
platform :android do
versionName = get_version_name(
gradle_file_path:"android_app/app/build.gradle",
ext_constant_name:"versionName"
)
versionCode = get_version_name(
gradle_file_path:"android_app/app/build.gradle",
ext_constant_name:"versionCode"
)
desc "Generate openScale release version"
lane :release do |options|
gradle(
task: "clean",
project_dir: 'android_app/'
)
gradle(
task: "assemble",
project_dir: 'android_app/',
build_type: "Release"
)
end
desc "Generate openScale light version"
lane :light do |options|
gradle(
task: "clean",
project_dir: 'android_app/'
)
gradle(
task: "assemble",
project_dir: 'android_app/',
build_type: "Light"
)
end
desc "Generate openScale pro version"
lane :pro do |options|
gradle(
task: "clean",
project_dir: 'android_app/'
)
gradle(
task: "assemble",
project_dir: 'android_app/',
build_type: "Pro"
)
end
desc "Deploy a new openScale light version to Google Play"
lane :deployLight do
gradle(
task: "clean",
project_dir: 'android_app/'
)
gradle(
task: "assemble",
project_dir: 'android_app/',
build_type: "Light"
)
upload_to_play_store(
package_name: "com.health.openscale.light",
track: "production",
metadata_path: "fastlane/openScale_light/",
apk: "android_app/app/build/outputs/apk/light/openScale-#{versionName}-light.apk"
)
end
desc "Deploy a new openScale pro version to Google Play"
lane :deployPro do
gradle(
task: "clean",
project_dir: 'android_app/'
)
gradle(
task: "assemble",
project_dir: 'android_app/',
build_type: "Pro"
)
upload_to_play_store(
package_name: "com.health.openscale.pro",
track: "production",
metadata_path: "fastlane/openScale_pro/",
apk: "android_app/app/build/outputs/apk/pro/openScale-#{versionName}-pro.apk"
)
end
desc "Deploy a new version to GitHub"
lane :deployGitHubRelease do
set_github_release(
repository_name: "oliexdev/openScale",
api_token: ENV["OLIEXDEV_GITHUB_API_TOKEN"],
name: "openScale #{versionName} release",
tag_name: "v#{versionName}",
description: (File.read("metadata/openScale/en-GB/changelogs/#{versionCode}.txt") rescue "No changelog provided"),
upload_assets: [ "android_app/app/build/outputs/apk/release/openScale-#{versionName}-release.apk" ]
)
end
end

5
fastlane/Pluginfile Normal file
View File

@@ -0,0 +1,5 @@
# Autogenerated by fastlane
#
# Ensure this file is checked in to source control!
gem 'fastlane-plugin-get_version_name'

View File

@@ -0,0 +1,5 @@
* added an App introduction
* added support for Soehnle Shape Sense scales
* enhanced support for Yunmai scale
* set CSV date format to ISO 8601:2004
* fixed minor bugs

View File

@@ -0,0 +1,53 @@
Monitor and track your weight, BMI, body fat, body water, muscle and other body metrics in an open source app that:
* has an easy to use user interface with graphs,
* doesn't require you to create an account,
* can be configured to only show the metrics you care about, and
* respects your privacy and lets you decide what to do with your data.
<h2><b>Bluetooth scales</b></h2>
openScale has built-in support for a number of Bluetooth (BLE or "smart") scales from many manufacturers, e.g. Beurer, Sanitas, Yunmai, Xiaomi, etc. (see model list below). Together with our users we constantly improve and extend the set of supported scales and in many cases pick up where the original app falls short.
For scales without Bluetooth, or Bluetooth scales not (yet) supported by openScale, measurements can be manually entered in a quick and easy way.
<h2><b>Privacy</b></h2>
This app has no ads and requests no unnecessary permissions. The location permission is only needed to find a Bluetooth scale. Once found the permission can be revoked (or never granted if Bluetooth isn't used).
<h2><b>Supported metrics</b></h2>
Weight, BMI (body mass index), body water, muscle, LBM (lean body mass), body fat, bone mass, waist circumference, waist-to-height ratio, hip circumference, waist-hip ratio, visceral fat, chest circumference, thigh circumference, biceps circumference, neck circumference, body fat caliper, BMR (basal metabolic rate), TDEE (Total Daily Energy Expenditure) and Calories. Each entry can also have an optional comment.
<b>Note:</b> don't worry if you think the list is too long: metrics you don't use can be disabled and hidden.
<h2><b>Other features</b></h2>
- Resizable widget to show the latest measurement on the home screen
- Configure your weight unit: kg, lb or st
- Set a goal to help keep your diet
- Displays all your data on a chart and in a table to track your progress
- Evaluates measurements and gives a quick visual feedback to show you if you're within or outside the recommended range given your age, sex, height etc.
- Import or export your data from/into a CSV (comma separated value) file
- Supports body fat, body water and lean body mass estimations based on scientific publications. Useful if your scale doesn't support those measurements.
- Support for multiple users
- Partially or fully translated into more than 27 languages
- Optional dark theme selectable
<h2><b>Supported Bluetooth scales</b></h2>
- Custom made Bluetooth scale
- Beurer BF700, BF710 and BF800
- Digoo DG-S038H
- Excelvan CF369BLE
- Exingtech Y1
- Hesley (Yunchen)
- MGB
- Medisana BS444, BS440
- Runtastic Libra
- Sanitas SBF70
- Silvercrest SBF75
- Xiaomi Mi scale v1 and v2
- Yunmai Mini and SE
- iHealth HS3
- Easy Home 64050
- and many more
Please see https://github.com/oliexdev/openScale/wiki/Supported-scales-in-openScale for the full list and the level of support for each scale.
<h2><b>Support</b></h2>
If you find a bug, have an idea on how to improve openScale or have a question, please visit the openScale project page on GitHub: https://github.com/oliexdev/openScale

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 279 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 562 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 KiB

View File

@@ -0,0 +1 @@
Open-source weight and body metrics tracker, with support for Bluetooth scales

View File

@@ -0,0 +1 @@
openScale

View File

@@ -0,0 +1,5 @@
* added an App introduction
* added support for Soehnle Shape Sense scales
* enhanced support for Yunmai scale
* set CSV date format to ISO 8601:2004
* fixed minor bugs

View File

@@ -0,0 +1,37 @@
Monitor and track your weight, BMI, body fat, body water, muscle and other body metrics in an open source app that:
* has an easy to use user interface with graphs,
* doesn't require you to create an account,
* can be configured to only show the metrics you care about, and
* respects your privacy and lets you decide what to do with your data.
<h2><b>Bluetooth scales (pro version)</b></h2>
openScale has built-in support for a number of Bluetooth (BLE or "smart") scales from many manufacturers, e.g. Beurer, Sanitas, Yunmai, Xiaomi, etc. (see model list below). Together with our users we constantly improve and extend the set of supported scales and in many cases pick up where the original app falls short.
For scales without Bluetooth, or Bluetooth scales not (yet) supported by openScale, measurements can be manually entered in a quick and easy way.
<b>Note:</b> Please install openScale pro version to enable Bluetooth support
<h2><b>Privacy</b></h2>
This app has no ads and requests no unnecessary permissions. The location permission is only needed to find a Bluetooth scale. Once found the permission can be revoked (or never granted if Bluetooth isn't used).
<h2><b>Supported metrics</b></h2>
Weight, BMI (body mass index), body water, muscle, LBM (lean body mass), body fat, bone mass, waist circumference, waist-to-height ratio, hip circumference, waist-hip ratio, visceral fat, chest circumference, thigh circumference, biceps circumference, neck circumference, body fat caliper, BMR (basal metabolic rate), TDEE (Total Daily Energy Expenditure) and Calories. Each entry can also have an optional comment.
<b>Note:</b> don't worry if you think the list is too long: metrics you don't use can be disabled and hidden.
<h2><b>Other features</b></h2>
- Synchronize your weight to GoogleFit with openScale sync
- Resizable widget to show the latest measurement on the home screen
- Configure your weight unit: kg, lb or st
- Set a goal to help keep your diet
- Displays all your data on a chart and in a table to track your progress
- Evaluates measurements and gives a quick visual feedback to show you if you're within or outside the recommended range given your age, sex, height etc.
- Import or export your data from/into a CSV (comma separated value) file
- Supports body fat, body water and lean body mass estimations based on scientific publications. Useful if your scale doesn't support those measurements.
- Support for multiple users
- Partially or fully translated into more than 27 languages
- Optional dark theme selectable
<h2><b>Support</b></h2>
If you find a bug, have an idea on how to improve openScale or have a question, please visit the openScale project page on GitHub: https://github.com/oliexdev/openScale

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 279 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 562 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 KiB

View File

@@ -0,0 +1 @@
Open-source weight and body metrics tracker

View File

@@ -0,0 +1 @@
openScale light

View File

@@ -0,0 +1,5 @@
* added an App introduction
* added support for Soehnle Shape Sense scales
* enhanced support for Yunmai scale
* set CSV date format to ISO 8601:2004
* fixed minor bugs

View File

@@ -0,0 +1,54 @@
Monitor and track your weight, BMI, body fat, body water, muscle and other body metrics in an open source app that:
* has an easy to use user interface with graphs,
* doesn't require you to create an account,
* can be configured to only show the metrics you care about, and
* respects your privacy and lets you decide what to do with your data.
<h2><b>Bluetooth scales</b></h2>
openScale has built-in support for a number of Bluetooth (BLE or "smart") scales from many manufacturers, e.g. Beurer, Sanitas, Yunmai, Xiaomi, etc. (see model list below). Together with our users we constantly improve and extend the set of supported scales and in many cases pick up where the original app falls short.
For scales without Bluetooth, or Bluetooth scales not (yet) supported by openScale, measurements can be manually entered in a quick and easy way.
<h2><b>Privacy</b></h2>
This app has no ads and requests no unnecessary permissions. The location permission is only needed to find a Bluetooth scale. Once found the permission can be revoked (or never granted if Bluetooth isn't used).
<h2><b>Supported metrics</b></h2>
Weight, BMI (body mass index), body water, muscle, LBM (lean body mass), body fat, bone mass, waist circumference, waist-to-height ratio, hip circumference, waist-hip ratio, visceral fat, chest circumference, thigh circumference, biceps circumference, neck circumference, body fat caliper, BMR (basal metabolic rate), TDEE (Total Daily Energy Expenditure) and Calories. Each entry can also have an optional comment.
<b>Note:</b> don't worry if you think the list is too long: metrics you don't use can be disabled and hidden.
<h2><b>Other features</b></h2>
- Synchronize your weight to GoogleFit with openScale sync
- Resizable widget to show the latest measurement on the home screen
- Configure your weight unit: kg, lb or st
- Set a goal to help keep your diet
- Displays all your data on a chart and in a table to track your progress
- Evaluates measurements and gives a quick visual feedback to show you if you're within or outside the recommended range given your age, sex, height etc.
- Import or export your data from/into a CSV (comma separated value) file
- Supports body fat, body water and lean body mass estimations based on scientific publications. Useful if your scale doesn't support those measurements.
- Support for multiple users
- Partially or fully translated into more than 27 languages
- Optional dark theme selectable
<h2><b>Supported Bluetooth scales</b></h2>
- Custom made Bluetooth scale
- Beurer BF700, BF710 and BF800
- Digoo DG-S038H
- Excelvan CF369BLE
- Exingtech Y1
- Hesley (Yunchen)
- MGB
- Medisana BS444, BS440
- Runtastic Libra
- Sanitas SBF70
- Silvercrest SBF75
- Xiaomi Mi scale v1 and v2
- Yunmai Mini and SE
- iHealth HS3
- Easy Home 64050
- and many more
Please see https://github.com/oliexdev/openScale/wiki/Supported-scales-in-openScale for the full list and the level of support for each scale.
<h2><b>Support</b></h2>
If you find a bug, have an idea on how to improve openScale or have a question, please visit the openScale project page on GitHub: https://github.com/oliexdev/openScale

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 279 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 562 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 KiB

View File

@@ -0,0 +1 @@
Open-source weight and body metrics tracker, with support for Bluetooth scales

View File

@@ -0,0 +1 @@
openScale pro