Initial commit: Foto Dup Finder 1.0.1
An Android duplicate-photo finder. Pure-Kotlin core (SHA-256 + dHash hashing, exact and perceptual union-find grouping, three sensitivity presets) with MediaStore access, a persistent SQLite hash index and a tiered ScanEngine behind a Jetpack Compose UI. No INTERNET permission, no ads, no analytics, no account. Ships versionCode 2 / versionName 1.0.1, carrying the scan-stall hardening (BoundedCall breaker) and verified against a 5,363-photo device library. 80 JVM unit tests, lint clean. Release paperwork is in docs/ (Play checklist, store listing, edge-case testing), the upload-ready Play graphics and screenshots in store-assets/, and the generators for those assets in tools/.
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="500" viewBox="0 0 1024 500">
|
||||
<!--
|
||||
Play feature graphic (1024 x 500, no transparency).
|
||||
|
||||
Same palette as the app icon (#1B5E20) with the icon motif on the left and the
|
||||
store copy on the right. Text stays inside the middle band because Play crops the
|
||||
graphic to a square for some placements.
|
||||
-->
|
||||
<defs>
|
||||
<linearGradient id="bg" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0" stop-color="#0D3D13" />
|
||||
<stop offset="0.55" stop-color="#1B5E20" />
|
||||
<stop offset="1" stop-color="#2E7D32" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<rect x="0" y="0" width="1024" height="500" fill="url(#bg)" />
|
||||
|
||||
<!-- Icon motif: the two photo frames, centred on (210, 250) at ~300 px wide. -->
|
||||
<g transform="translate(210,250) scale(7.46) translate(-49.8,-46.85)">
|
||||
<g transform="translate(30,22) scale(1.9)">
|
||||
<path d="M4,5 h16 a1,1 0 0 1 1,1 v12 a1,1 0 0 1 -1,1 h-16 a1,1 0 0 1 -1,-1 v-12 a1,1 0 0 1 1,-1 z"
|
||||
fill="#FFFFFF" fill-opacity="0.45" />
|
||||
</g>
|
||||
<g transform="translate(24,28) scale(1.9)">
|
||||
<path d="M4,5 h16 a1,1 0 0 1 1,1 v12 a1,1 0 0 1 -1,1 h-16 a1,1 0 0 1 -1,-1 v-12 a1,1 0 0 1 1,-1 z"
|
||||
fill="none" stroke="#FFFFFF" stroke-width="1.6" />
|
||||
<path d="M7.5,9 m-1.4,0 a1.4,1.4 0 1 0 2.8,0 a1.4,1.4 0 1 0 -2.8,0" fill="#FFFFFF" />
|
||||
<path d="M4,17 l4,-5 l3,3.5 l3.5,-4.5 l5.5,6 z" fill="#FFFFFF" />
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<!-- Store copy -->
|
||||
<text x="420" y="205" font-family="DejaVu Sans" font-weight="bold" font-size="56"
|
||||
fill="#FFFFFF">Foto Dup Finder</text>
|
||||
<text x="422" y="258" font-family="DejaVu Sans" font-size="25"
|
||||
fill="#FFFFFF" fill-opacity="0.92">Find and remove duplicate photos</text>
|
||||
<text x="422" y="296" font-family="DejaVu Sans" font-size="25"
|
||||
fill="#FFFFFF" fill-opacity="0.92">Fast, ad-free and completely offline</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.9 KiB |
@@ -0,0 +1,24 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 108 108">
|
||||
<!--
|
||||
The Play high-res icon: the app's adaptive icon, full bleed.
|
||||
|
||||
Mirrors app/src/main/res/drawable/ic_launcher_{background,foreground}.xml — the
|
||||
foreground's two groups are copied verbatim, including their scale/translate, so the
|
||||
icon a store listing shows matches the launcher icon exactly.
|
||||
-->
|
||||
<rect x="0" y="0" width="108" height="108" fill="#1B5E20" />
|
||||
|
||||
<!-- Back frame (semi-transparent) -->
|
||||
<g transform="translate(30,22) scale(1.9)">
|
||||
<path d="M4,5 h16 a1,1 0 0 1 1,1 v12 a1,1 0 0 1 -1,1 h-16 a1,1 0 0 1 -1,-1 v-12 a1,1 0 0 1 1,-1 z"
|
||||
fill="#FFFFFF" fill-opacity="0.45" />
|
||||
</g>
|
||||
|
||||
<!-- Front frame outline, sun and mountain -->
|
||||
<g transform="translate(24,28) scale(1.9)">
|
||||
<path d="M4,5 h16 a1,1 0 0 1 1,1 v12 a1,1 0 0 1 -1,1 h-16 a1,1 0 0 1 -1,-1 v-12 a1,1 0 0 1 1,-1 z"
|
||||
fill="none" stroke="#FFFFFF" stroke-width="1.6" />
|
||||
<path d="M7.5,9 m-1.4,0 a1.4,1.4 0 1 0 2.8,0 a1.4,1.4 0 1 0 -2.8,0" fill="#FFFFFF" />
|
||||
<path d="M4,17 l4,-5 l3,3.5 l3.5,-4.5 l5.5,6 z" fill="#FFFFFF" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
Reference in New Issue
Block a user