Smart Album is an Android application for intelligent photo management. It supports smart album creation, advanced search, photo editing, memory video generation, and social sharing. The project is modular and easy to extend or maintain.
- Photo Management: Automatically or manually create albums by time, location, or tags. Move or copy photos between albums.
- Smart Search: Search photos by tags, date, location, or image content. Includes keyword suggestion and auto-completion.
- Photo Editing: Basic editing (rotate, crop, mirror), AI-powered enhancements (background removal, HD restoration, etc.).
- Memory Videos: Automatically generate themed videos with custom music and transitions.
- Social Sharing: Share albums/photos privately, publicly, or collaboratively. Built-in social features.
- User Authentication: Registration, login, and session management.
- OS: Android 8.0+ (API 26+)
- IDE: Android Studio (recommended)
- JDK: 11 or higher
- AndroidX, Material, Room, Glide, Retrofit, OkHttp, RxJava, FFmpeg-kit, TensorFlow Lite, etc.
- See
app/build.gradle.kts
for full details.
- Open the project root in Android Studio.
- Sync Gradle dependencies.
- Connect a device or start an emulator, then click "Run" to build and install.
- APK output:
app/build/outputs/apk/debug/
app/
├── src/
│ └── main/
│ ├── java/com/example/pa/
│ │ ├── auth/ // Authentication
│ │ ├── data/ // Data layer (Repository, Model, Network, DB)
│ │ ├── ui/ // UI layer (photo, album, search, memory, social, etc.)
│ │ ├── util/ // Utilities
│ │ └── MyApplication.java // App entry
│ ├── res/ // Resources
│ └── AndroidManifest.xml
└── build.gradle.kts // Build script
MainActivity.java
: Main UI and navigationauth/
:LoginActivity
,RegisterActivity
for user authenticationdata/
:FileRepository
,MainRepository
,DatabaseHelper
for data managementui/photo/
: Photo browsing, editing, detailsui/album/
: Album management and displayui/search/
: Smart searchui/memory/
: Memory video generation and managementui/social/
: Social and sharing featuresutil/
: General utilities (path conversion, password encryption, AI tools, etc.)
Ensure the following permissions are declared in AndroidManifest.xml
:
- Storage read/write (for Android 13+, use READ_MEDIA_* permissions)
- Internet access
- See
app/src/main/AndroidManifest.xml
for details
- Unit and UI tests:
src/test/java
,src/androidTest/java
- Integrated with Jacoco (code coverage) and SonarQube (code quality)
- Run tests via Android Studio or Gradle commands
- Dependency Conflicts: For Mockito or other conflicts, see comments in
build.gradle.kts
. - Permission Issues: For Android 13+, request media permissions at runtime.
- AI/Video Features: Some features require device hardware support (TensorFlow Lite/FFmpeg).
Feel free to submit issues or pull requests to help improve the project!
For more detailed guides, API documentation, or module extension instructions, see design-32.md
or contact the project maintainers.