An Android port of the InventoryScan2008 Windows CE application, designed for scanning and managing vehicle VIN codes with configurable features and zone-based organization.
- VIN Scanning: Scan vehicle VIN codes using the device camera or enter manually
- Zone Management: Organize scanned entries by zones (e.g., different areas of a lot)
- Dynamic Features: Configurable feature controls (checkboxes, text fields, numbers)
- Data Persistence: Local storage of scan entries, zones, and settings
- Web Synchronization: Sync data with remote web service
- VIN Validation: Automatic validation and sanitization of VIN codes
ScanEntry: Represents a scanned VIN with zone and featuresZone: Represents a physical zone/areaFeature: Base class for configurable features (Bool, String, Int, Float)Option: Configuration data containing zones and featuresSetting: Application settings including API key
MainActivity: Main application interfaceFeatureControlView: Dynamic UI generation for featuresPersistence: Data storage using SharedPreferences and JSONHttpClient: Web service communicationVinValidator: VIN code validation and sanitization
- Barcode Scanning: Integrated ZXing library for camera-based scanning
- Zone-based Organization: Entries are organized by selected zones
- Dynamic Feature Controls: UI controls are generated based on configuration
- VIN Validation: Same regex pattern as original for VIN validation
- Web Service Sync: HTTP communication with original API endpoints
- Data Persistence: Local storage replacing XML files
- Android Studio
- Android SDK (API level 24+)
- Device or emulator with camera support
- ZXing Android Embedded: Barcode scanning
- Gson: JSON serialization
- OkHttp: HTTP client
- AndroidX libraries
- Clone the repository
- Open in Android Studio
- Sync project dependencies
- Build and run
- Launch the app
- Sample zones and features will be loaded automatically
- Enter API key when prompted for synchronization
- Select a zone from the dropdown
- Either:
- Tap "Scan Barcode" and scan a VIN
- Enter VIN manually and tap "Add"
- Configure features using the dynamic controls
- VIN appears in the list for the selected zone
- Tap "Sync" button
- Enter API key if not already set
- App downloads latest configuration and uploads scan entries
- Successful sync prompts to clear local entries
- Delete: Remove individual entries
- Clear All: Remove all entries (with confirmation)
- Zone Switching: View entries by selected zone
Uses the same regex pattern as the original:
([A-HJ-NPR-Z\d]{3})([A-HJ-NPR-Z\d]{5})([\dX])(([A-HJ-NPR-Z\d])([A-HJ-NPR-Z\d])([A-HJ-NPR-Z\d]{6}))
- Scan Entries: JSON in SharedPreferences
- Configuration: JSON in SharedPreferences
- Settings: JSON in SharedPreferences
- FeatureBool: Checkbox controls
- FeatureString: Text input controls
- FeatureInt: Numeric input controls
- FeatureFloat: Decimal input controls
- Debug:
http://webservice.pc-2416.hgregoire.com/inventory/ - Release:
http://webservice.hgregoire.com/inventory/
CAMERA: For barcode scanningINTERNET: For web service communicationACCESS_NETWORK_STATE: For network status checking
- Modern Android UI with Material Design elements
- Touch-friendly interface optimized for mobile devices
- Better error handling and user feedback
- Automatic sample data loading for testing
- Improved VIN validation feedback
- JSON instead of XML for data serialization
- SharedPreferences instead of file-based storage
- Android permissions system integration
- Mobile-optimized layouts and controls
The app automatically loads sample zones and features for testing:
- 4 predefined zones (A-D)
- Mix of boolean, string, integer, and float features
- Typical automotive inventory features
The app maintains compatibility with the original web service API, using the same authentication scheme and data formats.
Unlike the original Windows CE version, the Android app doesn't enforce single instance operation due to platform differences.
This is a faithful port of the original InventoryScan2008 application adapted for Android. When making changes, consider maintaining compatibility with the original API and data structures where possible.