M1-13: Quick Settings tile — start a recording without unlocking #13

Open
opened 2026-08-08 20:03:46 -04:00 by agent · 0 comments
Member

A Quick Settings tile that starts a recording in one pull-and-tap.

Wes, on the iOS equivalent: "That way on my lock screen i can have a quick action that once tapped
immediately starts recording? (preferably while keeping the screen locked, but if that wont work i
understand)"

M1-07 puts a stop button on the lock screen. This is the other half: getting a recording
started without unlocking, finding the app and tapping into it. Roughly all of Wes's recordings
begin while walking, and the thought is usually already half gone by the time the app is open.

This is more likely to work than its iOS counterpart

The iOS issue carries a genuine unknown — whether iOS will start a microphone recording from a
locked device at all — and its acceptance criterion allows for the answer being no.

Android's TileService is a better fit. Tiles are reachable from the lock screen, and
isLocked/unlockAndRun let the tile decide what to do rather than the system refusing silently.
Whether a microphone capture may begin from a locked device is still worth confirming on the
Pixel rather than reasoning about — but the platform at least gives an honest answer.

Scope

  • A TileService that starts a recording, sharing the same entry point the app's record button uses.
  • The tile reflects state: recording or not. It must never start a second recording, and tapping it
    while one is running should stop it or do nothing — decided at the checkpoint, not assumed.
  • If the platform requires an unlock, say so plainly rather than appearing to start a recording
    that never began. A memo the user believes is being captured and is not is the worst outcome this
    project has.

Also worth considering, cheaply

An app shortcut and a home screen widget hang off the same entry point for very little extra. Not
in scope unless they fall out for free — mentioned so the entry point is not built in a way that
forecloses them.

Depends on

M1-06 and M1-07 — the foreground service and its notification have to exist before anything can
start a recording from outside the app.

Done when

Wes pulls down Quick Settings on a locked Pixel, taps the tile, and a recording starts — or, if the
platform refuses without unlocking, the tile does the closest honest thing and the limitation is
documented.


Milestone 1 of Stash for Android, mirroring stash-ios M1. M1 is a functioning app on the test
device with no sync at all — record voice memos reliably and get them off the device by hand.
Sync arrives in M3.

Test device is a Pixel 6 (Tensor G1) borrowed from a friend, until something better turns up.
Stock Android, so no OEM battery-killer behaviour to fight — worth remembering that a phone from
another manufacturer may not be as forgiving about background work.

Translation of Stash/stash-ios#19. Where the platform forces a different answer this issue says so; where it
does not, the iOS issue is the fuller statement of intent and should be read alongside this one.

Working agreement for every issue in this repo: feature branch, tested before the PR opens
(on-device where the label says so), then Wes reviews the PR and we walk the code together. Docs
update in the same commit. A PR that takes more than 20 minutes to review is too big — say so and
split it.

A Quick Settings tile that starts a recording in one pull-and-tap. Wes, on the iOS equivalent: *"That way on my lock screen i can have a quick action that once tapped immediately starts recording? (preferably while keeping the screen locked, but if that wont work i understand)"* M1-07 puts a **stop** button on the lock screen. This is the other half: getting a recording *started* without unlocking, finding the app and tapping into it. Roughly all of Wes's recordings begin while walking, and the thought is usually already half gone by the time the app is open. ## This is more likely to work than its iOS counterpart The iOS issue carries a genuine unknown — whether iOS will start a microphone recording from a locked device at all — and its acceptance criterion allows for the answer being no. Android's `TileService` is a better fit. Tiles are reachable from the lock screen, and `isLocked`/`unlockAndRun` let the tile decide what to do rather than the system refusing silently. Whether a microphone capture may *begin* from a locked device is still worth confirming on the Pixel rather than reasoning about — but the platform at least gives an honest answer. ## Scope - A `TileService` that starts a recording, sharing the same entry point the app's record button uses. - The tile reflects state: recording or not. It must never start a second recording, and tapping it while one is running should stop it or do nothing — decided at the checkpoint, not assumed. - If the platform requires an unlock, **say so plainly** rather than appearing to start a recording that never began. A memo the user believes is being captured and is not is the worst outcome this project has. ## Also worth considering, cheaply An app shortcut and a home screen widget hang off the same entry point for very little extra. Not in scope unless they fall out for free — mentioned so the entry point is not built in a way that forecloses them. ## Depends on M1-06 and M1-07 — the foreground service and its notification have to exist before anything can start a recording from outside the app. ## Done when Wes pulls down Quick Settings on a locked Pixel, taps the tile, and a recording starts — or, if the platform refuses without unlocking, the tile does the closest honest thing and the limitation is documented. --- *Milestone 1 of Stash for Android, mirroring `stash-ios` M1. M1 is a functioning app on the test device with **no sync at all** — record voice memos reliably and get them off the device by hand. Sync arrives in M3.* *Test device is a **Pixel 6** (Tensor G1) borrowed from a friend, until something better turns up. Stock Android, so no OEM battery-killer behaviour to fight — worth remembering that a phone from another manufacturer may not be as forgiving about background work.* *Translation of `Stash/stash-ios#19`. Where the platform forces a different answer this issue says so; where it does not, the iOS issue is the fuller statement of intent and should be read alongside this one.* *Working agreement for every issue in this repo: feature branch, tested before the PR opens (on-device where the label says so), then Wes reviews the PR and we walk the code together. Docs update in the same commit. A PR that takes more than 20 minutes to review is too big — say so and split it.*
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Stash/stash-android#13
No description provided.