36 Commits
Author SHA1 Message Date
me 4e474f3fce Merge pull request '1.1.2' (#5) from dev into main
Reviewed-on: #5
2026-09-28 17:50:35 -07:00
me c40f6c0166 icon, change legacy to be a circle again. 2026-09-28 17:15:40 -07:00
me edb38612b5 Take all the yellow highlight suggestions regarding versions, besides sticking with SDK 36. 2026-09-28 17:15:26 -07:00
me 38eda443dc icon, change from webp to png to support legacy AOSP version. 2026-09-28 17:01:24 -07:00
me 51f8e67799 AGP Upgrade Assistant 2026-09-28 17:00:50 -07:00
me 26bcc3e496 manifest, update release file size enhancers. 2026-09-28 16:45:52 -07:00
me 92173b1cae manifest, increment version. 2026-09-28 16:41:56 -07:00
me bb78aa0a9a icon, update so that the background is white on non-monochrome rather than green grid. 2026-09-28 16:36:38 -07:00
me e4ab9c91c8 Save monochrome art changes. 2026-09-28 16:32:26 -07:00
me fa7926ca6e manifest, use the new icon. 2026-09-28 16:27:52 -07:00
me deb6369f37 Import the icon art. 2026-09-28 16:27:40 -07:00
me d6e952eae9 Update icon art. 2026-09-28 16:27:20 -07:00
me 398f9d8729 README, remove update notes, do them on the releases page. 2026-09-28 16:06:39 -07:00
me ef0292bdd9 fdroid, update email to be specific to infinite timer, 2026-09-28 15:45:31 -07:00
me 904aaba2b5 Add upcoming change to README while also refactoring. 2026-08-29 15:07:44 -07:00
me d4a5329bf6 Move the app-specific links below the app details. 2026-07-04 14:55:09 -07:00
me 251b3cdc0c fdroid metadata, CurrentVersionCode is fine with no value, so try removing the field entirely. 2026-07-04 12:51:19 -07:00
me cf1c40f5ce fdroid metadata, see what happens if we remove the version code. 2026-07-04 12:48:40 -07:00
me a4b69958e0 fdroid manifest requires an integer for the CurrentVersionCode. 2026-07-04 12:41:46 -07:00
me 596b13c7fd Test what happens when fdroid CurrentVersionCode is not the provided value. 2026-07-04 12:35:51 -07:00
me 6f7f85b90f Add trailing slashes back to urls in fdroid manifest. 2026-07-04 12:32:28 -07:00
me b629473129 Only provide the username for Liberapay. 2026-07-04 12:09:07 -07:00
me d36ceaa19f Fix Liberapay URL. 2026-07-04 11:55:04 -07:00
me ab746003b8 Add additional metadata for F-Droid. 2026-07-04 11:41:21 -07:00
me 27ed2afbf0 Update issue tracker to be proper HTTP link, use contact page. Change website page to go directly to the app. 2026-07-04 10:47:15 -07:00
me bd312edf83 Merge pull request 'Add manifest file for fdroid server.' (#4) from dev into main
Reviewed-on: #4
2026-07-04 10:19:02 -07:00
me b2167423db Add manifest file for fdroid server. 2026-07-03 17:34:45 -07:00
me 7e6c0b90e2 Merge pull request 'Volume Seekbar Fixes' (#3) from dev into main
Reviewed-on: #3
2025-08-17 08:49:15 -07:00
me 84c75f6be7 No need to call something in onCreate which is called in onResume. 2025-08-17 08:41:29 -07:00
me 1b3ca8c8af Only change the seekbar if it differs so that the volume sidebar does not show up on every open. 2025-08-17 08:40:56 -07:00
me f83a8b41e4 Ensure volume bar is accurate if the app is minimized and the volume is modified before the app is reopened. 2025-08-17 08:35:13 -07:00
me bc433b4185 Correctly add a space between "Volume" and the status. 2025-08-17 08:33:00 -07:00
me 34b13473c9 Show the article URL for proper accreditation. 2025-07-19 15:54:00 -07:00
me a642b51532 Increment version for future development. 2025-07-19 15:52:02 -07:00
me a5490b98c7 Hide release files (APKs and JSON) from Git. 2025-07-19 15:51:05 -07:00
me 140350012b Fix URL. 2025-07-19 15:50:40 -07:00
46 changed files with 158 additions and 23 deletions
+2
View File
@@ -33,3 +33,5 @@ google-services.json
# Android Profiling # Android Profiling
*.hprof *.hprof
# Release Files
app/release/*
+6 -4
View File
@@ -2,12 +2,14 @@
Timer which loops over the specified interval, playing your default notification sound each time it hits 0. Timer which loops over the specified interval, playing your default notification sound each time it hits 0.
## Update Notes ## Notes
### 2025-07-11 ### 2025-07-11
(This article)[https://sijus.medium.com/resurrecting-a-5-year-old-android-app-a-developers-journey-59d8f5689e5b]
was very helpful in getting this app updated from SDK 25 to 36. This article was very helpful in getting this app updated from SDK 25 to 36.
- https://sijus.medium.com/resurrecting-a-5-year-old-android-app-a-developers-journey-59d8f5689e5b
## Licenses ## Licenses
Chime sound byte came free from here: Chime sound byte came free from here:
https://pixabay.com/sound-effects/chime-sound-7143/ - https://pixabay.com/sound-effects/chime-sound-7143/
+6 -5
View File
@@ -7,14 +7,15 @@ android {
applicationId "com.hyperling.apps.infinitetimer" applicationId "com.hyperling.apps.infinitetimer"
minSdkVersion 14 minSdkVersion 14
targetSdkVersion 36 targetSdkVersion 36
versionCode 8 versionCode 9
versionName "1.1.0" versionName "1.1.2"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
} }
buildTypes { buildTypes {
release { release {
minifyEnabled true minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
} }
} }
} }
@@ -25,7 +26,7 @@ dependencies {
exclude group: 'com.android.support', module: 'support-annotations' exclude group: 'com.android.support', module: 'support-annotations'
}) })
// https://mvnrepository.com/artifact/com.android.support/appcompat-v7 // https://mvnrepository.com/artifact/com.android.support/appcompat-v7
implementation group: 'com.android.support', name: 'appcompat-v7', version: '28.0.0' implementation "com.android.support:appcompat-v7:28.0.0"
testImplementation 'junit:junit:4.12' testImplementation 'junit:junit:4.13.2'
} }
+1 -2
View File
@@ -3,8 +3,7 @@
<application <application
android:allowBackup="true" android:allowBackup="true"
android:icon="@mipmap/icon_512" android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/icon_rounded_512"
android:label="@string/appName" android:label="@string/appName"
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/InfiniteTimer" android:theme="@style/InfiniteTimer"
Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

@@ -219,8 +219,6 @@ public class MainActivity extends AppCompatActivity {
tvSeekBar = findViewById(R.id.tvSeekbar); tvSeekBar = findViewById(R.id.tvSeekbar);
syncVolume();
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override @Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) { public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
@@ -239,9 +237,6 @@ public class MainActivity extends AppCompatActivity {
} }
}); });
recoverScreen();
if (DEBUG) Log.d(tag, "Finished"); if (DEBUG) Log.d(tag, "Finished");
} }
@@ -697,9 +692,11 @@ public class MainActivity extends AppCompatActivity {
if (DEBUG) Log.d(tag, "Starting"); if (DEBUG) Log.d(tag, "Starting");
int currVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC); int currVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
if (currVolume != seekBar.getProgress()) {
seekBar.setProgress(currVolume); seekBar.setProgress(currVolume);
}
String volume = getString(R.string.tvSeekBar) + seekBar.getProgress() + "/" + seekBar.getMax(); String volume = getString(R.string.tvSeekBar) + " " + seekBar.getProgress() + "/" + seekBar.getMax();
tvSeekBar.setText(volume); tvSeekBar.setText(volume);
if (DEBUG) Log.d(tag, "Finished"); if (DEBUG) Log.d(tag, "Finished");
@@ -738,6 +735,7 @@ public class MainActivity extends AppCompatActivity {
sharedPreferences.edit().putBoolean(keyServiceRunning, false).apply(); sharedPreferences.edit().putBoolean(keyServiceRunning, false).apply();
recoverScreen(); recoverScreen();
syncVolume();
if (DEBUG) Log.d(tag, "Finished"); if (DEBUG) Log.d(tag, "Finished");
} }
Binary file not shown.

After

Width:  |  Height:  |  Size: 546 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 674 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 951 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="utf-8"?>
<vector
android:height="108dp"
android:width="108dp"
android:viewportHeight="108"
android:viewportWidth="108"
xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z"/>
<path android:fillColor="#00000000" android:pathData="M9,0L9,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M19,0L19,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M29,0L29,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M39,0L39,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M49,0L49,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M59,0L59,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M69,0L69,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M79,0L79,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M89,0L89,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M99,0L99,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,9L108,9"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,19L108,19"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,29L108,29"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,39L108,39"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,49L108,49"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,59L108,59"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,69L108,69"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,79L108,79"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,89L108,89"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,99L108,99"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M19,29L89,29"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M19,39L89,39"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M19,49L89,49"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M19,59L89,59"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M19,69L89,69"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M19,79L89,79"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M29,19L29,89"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M39,19L39,89"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M49,19L49,89"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M59,19L59,89"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M69,19L69,89"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M79,19L79,89"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
</vector>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
<monochrome android:drawable="@mipmap/ic_launcher_monochrome"/>
</adaptive-icon>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
<monochrome android:drawable="@mipmap/ic_launcher_monochrome"/>
</adaptive-icon>
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#FFFFFF</color>
</resources>
+2 -2
View File
@@ -13,7 +13,7 @@ buildscript {
} }
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:8.11.1' classpath 'com.android.tools.build:gradle:9.4.1'
// NOTE: Do not place your application dependencies here; they belong // NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files // in the individual module build.gradle files
@@ -27,6 +27,6 @@ allprojects {
} }
} }
task clean(type: Delete) { tasks.register('clean', Delete) {
delete rootProject.buildDir delete rootProject.buildDir
} }
+16
View File
@@ -0,0 +1,16 @@
AuthorName: 'Chad Michael "Hyperling" Greenwood'
AuthorEmail: 'me+infinite@hyperling.com'
AuthorWebSite: 'https://hyperling.com/about/'
Donate: 'https://hyperling.com/donate/'
Liberapay: 'HyperVegan'
Bitcoin: 'bc1qsfe8dkvry3d34kztz449gkq67wq8fu2nkgfkh0'
Litecoin: 'ltc1qavmpu5d6ljntxsd6jj548m4yys83zwscl0dzkx'
IssueTracker: 'https://hyperling.com/contact/'
Categories:
- fdroid
- hyperling
- utilities
Name: Infinite Timer
Summary: 'Play a notification at your chosen interval.'
SourceCode: 'https://git.hyperling.com/me/android-infinite-timer/'
WebSite: 'https://hyperling.com/apps/#timer'
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.
+11
View File
@@ -9,6 +9,17 @@
# Specifies the JVM arguments used for the daemon process. # Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings. # The setting is particularly useful for tweaking memory settings.
android.builtInKotlin=false
android.defaults.buildfeatures.resvalues=true
android.dependency.useConstraints=true
android.enableAppCompileTimeRClass=false
android.newDsl=false
android.r8.optimizedResourceShrinking=false
android.r8.strictFullModeForKeepRules=false
android.sdk.defaultTargetSdkToCompileSdkIfUnset=false
android.uniquePackageNames=false
android.useAndroidX=false
android.usesSdkInManifest.disallowed=false
org.gradle.jvmargs=-Xmx1536m org.gradle.jvmargs=-Xmx1536m
# When configured, Gradle will run in incubating parallel mode. # When configured, Gradle will run in incubating parallel mode.
+13
View File
@@ -0,0 +1,13 @@
#This file is generated by updateDaemonJvm
toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/491f83666ae7f4d6ebb28fee72ebb035/redirect
toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/0d1a1acdc708062093673f65aa9aba4b/redirect
toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/491f83666ae7f4d6ebb28fee72ebb035/redirect
toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/0d1a1acdc708062093673f65aa9aba4b/redirect
toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/7083b89563e7ce20943037b8cd2b8cc2/redirect
toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/060bbb778a1f55ea705fdebd2ccfeab9/redirect
toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/491f83666ae7f4d6ebb28fee72ebb035/redirect
toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/0d1a1acdc708062093673f65aa9aba4b/redirect
toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/d09679dc60fe5aa05ef7d03efdefac20/redirect
toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/ed4e3bf2f5e7c5d9aabc4cbd8acd555e/redirect
toolchainVendor=JETBRAINS
toolchainVersion=21
+1 -1
View File
@@ -1,6 +1,6 @@
#Fri Jul 11 12:55:34 MST 2025 #Fri Jul 11 12:55:34 MST 2025
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-9.8.0-bin.zip
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
+3
View File
@@ -1 +1,4 @@
plugins {
id 'org.gradle.toolchains.foojay-resolver-convention' version '1.0.0'
}
include ':app' include ':app'