](https://f-droid.org/packages/com.sesu8642.infusion_timer/)
8 | [
](https://play.google.com/store/apps/details?id=com.sesu8642.infusion_timer)
11 |
12 | ## Screenshots
13 | 
14 | 
15 | 
16 |
17 | ## Troubleshooting
18 |
19 | If the countdown is much faster than expected, it's probably connected to a UI speed. It occurred at least with GrapheneOS. Other alternative android builds may be problematic as well.
20 |
21 | ### 1. Enable Developer mode
22 | 1. Tap on the "Settings" (gear icon) icon to open the setting on your Android device.
23 | 2. On the Android Settings screen, tap on "About phone" option (sometimes also "System" > "Advanced" > "About Phone").
24 | 3. Start tapping on the "Build number" option, and you will see a pop-up message that you are now "X" steps away from being a developer. Continue tapping on the 4. Build number option until you see a screen to Re-enter your password. Once you enter your device password, it will show a message at the bottom of the screen: You are now a developer.
25 |
26 | ### 2. Fix the UI-related bug
27 | 1. Go to the "Settings" -> "System" -> "Developer options".
28 | 2. Switch the "Window animation scale" and "Transition animation scale" from "Animation off" to "Animation scale 1x," then put them back to "Animation off."
29 |
30 |
31 | ## Licenses
32 | Copyright (c) 2021-2024 Sesu8642
33 |
34 | Unless otherwise specified, source code in this repository is licensed under the GNU General Public License, Version 3 or later (GPL-3.0-or-later). A copy is included in the COPYING file.
35 |
36 | Assets in this repository are licensed under various other licenses:
37 |
38 | - **assets/icon_simple***: Gaiwan Icon © 2021-2024 by [Sesu8642](https://github.com/sesu8642) is licensed under [CC BY-SA 4.0](http://creativecommons.org/licenses/by-sa/4.0/?ref=chooser-v1)
39 | - **assets/hand-bell-ringing-sound.wav**: CC BY 4.0 (see assets/hand-bell-ringing-sound.txt)
40 | - **assets/default_data.json**: copyright meileaf 2016
41 |
42 | ## Creating Release Artifacts
43 | ### Android
44 | - create a file key.properties in /android/key.properties (template should be there)
45 | - run build_release_android.sh
46 |
47 | ### Windows
48 | - see [the official instructions](https://docs.flutter.dev/get-started/install/windows/desktop)
49 | - install legacy media player feature if you have the N version of Windows
50 | - run build_release_windows.bat
--------------------------------------------------------------------------------
/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | # This file configures the analyzer, which statically analyzes Dart code to
2 | # check for errors, warnings, and lints.
3 | #
4 | # The issues identified by the analyzer are surfaced in the UI of Dart-enabled
5 | # IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
6 | # invoked from the command line by running `flutter analyze`.
7 |
8 | # The following line activates a set of recommended lints for Flutter apps,
9 | # packages, and plugins designed to encourage good coding practices.
10 | include: package:flutter_lints/flutter.yaml
11 |
12 | linter:
13 | # The lint rules applied to this project can be customized in the
14 | # section below to disable rules from the `package:flutter_lints/flutter.yaml`
15 | # included above or to enable additional rules. A list of all available lints
16 | # and their documentation is published at https://dart.dev/lints.
17 | #
18 | # Instead of disabling a lint rule for the entire project in the
19 | # section below, it can also be suppressed for a single line of code
20 | # or a specific dart file by using the `// ignore: name_of_lint` and
21 | # `// ignore_for_file: name_of_lint` syntax on the line or in the file
22 | # producing the lint.
23 | rules:
24 | # avoid_print: false # Uncomment to disable the `avoid_print` rule
25 | # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
26 |
27 | # Additional information about this file can be found at
28 | # https://dart.dev/guides/language/analysis-options
--------------------------------------------------------------------------------
/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /gradlew
5 | /gradlew.bat
6 | /local.properties
7 | GeneratedPluginRegistrant.java
8 | .cxx/
9 |
10 | # Remember to never publicly share your keystore.
11 | # See https://flutter.dev/to/reference-keystore
12 | key.properties
13 | **/*.keystore
14 | **/*.jks
15 |
--------------------------------------------------------------------------------
/android/app/build.gradle.kts:
--------------------------------------------------------------------------------
1 | import java.util.Properties
2 | import java.io.FileInputStream
3 |
4 | plugins {
5 | id("com.android.application")
6 | id("kotlin-android")
7 | // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
8 | id("dev.flutter.flutter-gradle-plugin")
9 | }
10 |
11 | android {
12 | namespace = "com.sesu8642.infusion_timer"
13 | compileSdk = flutter.compileSdkVersion
14 | ndkVersion = flutter.ndkVersion
15 |
16 | compileOptions {
17 | sourceCompatibility = JavaVersion.VERSION_11
18 | targetCompatibility = JavaVersion.VERSION_11
19 | // for flutter_local_notifications
20 | isCoreLibraryDesugaringEnabled = true
21 | }
22 |
23 | kotlinOptions {
24 | jvmTarget = JavaVersion.VERSION_11.toString()
25 | }
26 |
27 | defaultConfig {
28 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
29 | applicationId = "com.sesu8642.infusion_timer"
30 | // You can update the following values to match your application needs.
31 | // For more information, see: https://flutter.dev/to/review-gradle-config.
32 | minSdk = flutter.minSdkVersion
33 | targetSdk = flutter.targetSdkVersion
34 | versionCode = flutter.versionCode
35 | versionName = flutter.versionName
36 | // for flutter_local_notifications
37 | multiDexEnabled = true
38 | }
39 |
40 | buildTypes {
41 | release {
42 | // TODO: Add your own signing config for the release build.
43 | // nope, its in the flavors
44 | }
45 | }
46 |
47 | val keystoreProperties = Properties().apply {
48 | val keystorePropertiesFile = rootProject.file("key.properties")
49 | if (keystorePropertiesFile.exists()) {
50 | load(FileInputStream(keystorePropertiesFile))
51 | }
52 | }
53 |
54 | signingConfigs {
55 | create("release") {
56 | keyAlias = keystoreProperties["keyAlias"] as? String ?: ""
57 | keyPassword = keystoreProperties["keyPassword"] as? String ?: ""
58 | storeFile = keystoreProperties["storeFile"]?.let { file(it) }
59 | storePassword = keystoreProperties["storePassword"] as? String ?: ""
60 | }
61 | create("ci") {
62 | keyAlias = "upload"
63 | keyPassword = System.getenv("SIGNING_KEY_PWD")
64 | storeFile = file("../../ci_files/keystore-github-ci.jks")
65 | storePassword = System.getenv("SIGNING_KEY_PWD")
66 | }
67 | }
68 |
69 | flavorDimensions.add("Signing")
70 |
71 | productFlavors {
72 | create("default") {
73 | signingConfig = signingConfigs.getByName("release")
74 | }
75 | create("ci") {
76 | signingConfig = signingConfigs.getByName("ci")
77 | applicationIdSuffix = ".ci"
78 | versionNameSuffix = "-ci"
79 | }
80 | }
81 |
82 | }
83 |
84 | flutter {
85 | source = "../.."
86 | }
87 |
88 | dependencies {
89 | // for flutter_local_notifications
90 | coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.4")
91 | }
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 | Effortlessly organize your tea collection, complete with infusion times and brewing 17 | instructions tailored to your taste - whether you prefer Gong Fu Cha or Western style. Enjoy 18 | handy presets for popular tea varieties. Take tasting notes, and give star ratings to your 19 | teas. Best of all, it's free, open-source, and designed with your privacy in mind - no ads, no 20 | data collection. Cheers to your perfect cup!
21 |Verwalte bequem Deine Teesammlung. Füge ganz nach Deinem Geschmack Aufgusszeiten und 24 | Zubereitungsanweisungen hinzu - sei es Gong Fu Cha oder westliche Teezubereitung. Für die 25 | gängigsten Teesorten gibt es praktische Voreinstellungen. Halte deine Erfahrungen beim 26 | Teegenuss in Verkostungsnotizen fest und vergib Sternebewertungen. Das Beste daran: Es ist 27 | Frei, Open Source und von Grund auf privatsphärefreundlich konzipiert. Keine Werbung, keine 28 | Datensammlung. Auf die perfekte Tasse Tee!
29 |