Skip to content

Long screenshots, Stop pill, cleaner captures - #17

Merged
abhishek-3289 merged 4 commits into
mainfrom
capture-transfer
Oct 25, 2026
Merged

abhishek-3289 merged 4 commits into
mainfrom
capture-transfer

Conversation

@abhishek-3289

Copy link
Copy Markdown
Collaborator

What changed

  • Long screenshot (Android 12+): Take a long screenshot in Screen capture tools captures the screen's main scrolling list or page in one image, using Android's scroll capture API (ScrollView, RecyclerView, ListView, Compose). It starts at what's on screen and goes down only, stops at the end of the content, after 5 screens (~15 MP) or 8 seconds in total, or when a new piece repeats the last one, so endless feeds stay bounded. Pieces are drawn straight into one image that is trimmed in place; timed-out steps are cancelled and the session is always ended so the app scrolls back. New public API: ScreenCapture.takeLongScreenshot() and LongScreenshotButton().
  • Screenshots leave DevDeck out: the floating button, simulation badge and recording bar are hidden while any screenshot is taken.
  • Recording: the header's stop control is a red Stop pill (TalkBack: "Stop recording").
  • Gallery: Share all removed (per-capture share and delete sit under the file name); lists more image/video types (JPEG, WebP, GIF, WebM…) with correct MIME types for open/share.
  • Drag and drop and Save to Downloads were prototyped on this branch and removed again; nothing of them remains.

Public API stays compatible with 1.0.0 (apiCheck: only additions).

How it was tested

  • ./gradlew ktlintFormat ktlintCheck lintDebug lintRelease testDebugUnitTest assembleDebug assembleRelease publishToMavenLocal apiCheck :sample:assembleQa passes.
  • Pixel 10 Pro emulator (API 37): long screenshot from the top (full page, 1280×4887), from mid-page (starts at the current position), with the limit temporarily at 1 screen (stops at one screen), and on a non-scrolling View screen (nothing saved, message shown); overlays absent from captures; Stop pill stops and saves a recording. Also installed on a physical phone.
  • Not tested: a real endless feed (the sample has none), so the time limit and repeat detection haven't run against live paging.
  • Independent review of the full diff; its findings (step cancellation, image listener races, row-stride copy, main-thread enforcement, concurrent capture flag, error messages, tile placement, docs, a11y) are fixed in the last commit.

Checklist

  • Entry added under [Unreleased] in CHANGELOG.md (or the skip-changelog label is set)
  • ./gradlew ktlintFormat ktlintCheck lintDebug testDebugUnitTest passes
  • README / sample README updated if the public API or behaviour changed
  • Screenshots attached for UI changes

@abhishek-3289 abhishek-3289 added this to the v1.1.0 milestone Oct 25, 2026
@abhishek-3289
abhishek-3289 merged commit 7642df6 into main Oct 25, 2026
3 checks passed
@abhishek-3289
abhishek-3289 deleted the capture-transfer branch October 25, 2026 00:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants