An unofficial Android companion app for managing XTEINK X4 e-paper displays via WiFi hotspot connectivity.
⚠️ Disclaimer: This is an unofficial, community-developed application. Hojo is not affiliated with, endorsed by, or sponsored by XTEINK in any way. Use at your own risk.
Hojo is a native Android application built with Jetpack Compose that provides a seamless interface for connecting to and managing XTEINK X4 e-paper displays. The app handles WiFi network switching, file management, and wallpaper customization.
Note: This app is specifically designed for the XTEINK X4 e-paper display and has only been tested on this device. Compatibility with other e-paper displays is not guaranteed.
- Automatic WiFi hotspot detection and connection to e-paper devices
- Intelligent network binding with fallback to internet connectivity
- Real-time connection status monitoring
- Network health checks with automatic retry logic
- Browse and navigate the e-paper device's file system
- Upload files from your Android device
- Create folders and organize content
- Rename and delete files/folders
- Download files from the e-paper device
- Create custom wallpapers optimized for e-paper displays (480x800px, 3:5 aspect ratio)
- Image cropping and editing tools
- Direct upload to e-paper device
- Convert documents to EPUB format optimized for e-paper displays
- Customizable font and layout settings
- Native conversion engine
- Convert web articles to EPUB format
- Uploads to /books directory on device for quick content display
- Theme customization (System Default, Light, Dark)
- View app version information
- Link to GitHub repository
- Language: Kotlin
- UI Framework: Jetpack Compose with Material 3
- Architecture: MVVM with ViewModels and StateFlow
- Minimum SDK: 26 (Android 8.0)
- Target SDK: 34 (Android 14)
- AndroidX Core KTX
- Jetpack Compose BOM
- Material 3 with Extended Icons
- Navigation Compose
- Hilt for dependency injection
- OkHttp for networking
- Gson for JSON parsing
- Jsoup for HTML parsing
- epublib for EPUB generation
- Android Image Cropper for image editing
app/src/main/java/wtf/anurag/hojo/
├── connectivity/ # E-paper device connectivity management
│ ├── EpaperConnectivityManager.kt
│ └── SmartNetworkInterceptor.kt
├── data/ # Data models and repositories
│ ├── model/ # Data classes (FileItem, StorageStatus, etc.)
│ ├── repository/ # Repositories (ThemeRepository, etc.)
│ ├── ConnectivityRepository.kt
│ ├── DefaultConnectivityRepository.kt
│ ├── FileManagerRepository.kt
│ └── ProgressRequestBody.kt
├── di/ # Dependency injection (Hilt)
│ └── AppModule.kt
├── ui/ # UI components and screens
│ ├── apps/ # Feature apps
│ │ ├── converter/ # EPUB converter
│ │ ├── filemanager/ # File browser
│ │ ├── quicklink/ # Quick link modal
│ │ ├── settings/ # App settings
│ │ └── wallpaper/ # Wallpaper editor
│ ├── components/ # Reusable UI components
│ ├── viewmodels/ # ViewModels for state management
│ │ ├── ConnectivityViewModel.kt
│ │ ├── FileManagerViewModel.kt
│ │ ├── QuickLinkViewModel.kt
│ │ ├── SettingsViewModel.kt
│ │ └── WallpaperViewModel.kt
│ ├── theme/ # App theming
│ └── MainScreen.kt # Main navigation screen
├── utils/ # Utility functions
├── HojoApplication.kt # Application class
└── MainActivity.kt # App entry point
- Android Studio Hedgehog or newer
- JDK 8 or higher
- Android SDK 34
- Clone the repository:
git clone <repository-url>
cd hojo-
Open the project in Android Studio
-
Sync Gradle dependencies
-
Build the project:
./gradlew build- Run on device/emulator:
./gradlew installDebug./gradlew assembleReleaseThe release APK will be generated at app/build/outputs/apk/release/
Note: These connection settings were reverse-engineered from the device and may change with firmware updates.
The app is configured to connect to the XTEINK X4 e-paper display with the following default settings:
- SSID:
E-Paper - Password:
12345678 - IP Address:
192.168.3.3 - Port:
80
These settings can be modified in EpaperConnectivityManager.kt if your device uses different credentials.
The app requires the following permissions:
INTERNET- For network communicationACCESS_WIFI_STATE- To check WiFi statusCHANGE_WIFI_STATE- To connect to e-paper hotspotCHANGE_WIFI_MULTICAST_STATE- Required for some network discovery operationsACCESS_NETWORK_STATE- To monitor network connectivityCHANGE_NETWORK_STATE- To bind to specific networksNEARBY_WIFI_DEVICES- For WiFi device discovery (Android 13+)ACCESS_FINE_LOCATION- Required for WiFi scanning
-
Connect to E-Paper Device
- Launch the app
- Tap the "Connect" button on the home screen
- Grant required permissions when prompted
- The app will automatically connect to the e-paper hotspot
-
Manage Files
- Tap "File Manager" from the home screen
- Navigate through folders
- Use the toolbar to create folders or upload files
- Long-press files for rename/delete options
-
Create Wallpapers
- Tap "Wallpaper Editor" from the home screen
- Select an image from your device
- Crop and adjust as needed
- Save to upload directly to the e-paper device
-
Convert to EPUB
- Tap "EPUB Converter" from the home screen
- Select a document from your device
- Customize font and layout settings
- Convert and upload to your e-paper device
-
Quick Link
- Tap "Quick Link" from the home screen
- Enter a URL
- The app converts and uploads the content to your e-paper display
- Follow Kotlin coding conventions
- Use meaningful variable and function names
- Document complex logic with comments
- UI components use Jetpack Compose
- State management via ViewModels and StateFlow
- Dependency injection using Hilt
- Network operations on IO dispatcher
- UI updates on Main dispatcher
Contributions are welcome! This is a community project, and we appreciate any help improving it.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- XTEINK is a trademark of its respective owner.
- This project is an independent, community-driven effort and is not officially supported by XTEINK.
- The developers of this app are not responsible for any damage to your e-paper device.
- Use this software at your own risk.
Made with ❤️ by the community, for the community.