Version 0.1.0 Alpha¶
Release Date: February 16, 2024
Status: Alpha Release
Build Number: 0.1.0
Overview¶
Welcome to the inaugural alpha release of MINE - Indoor Navigation Engine! This foundational release introduces the core rendering capabilities and map data processing pipeline, laying the groundwork for a powerful indoor navigation solution.
Alpha Release
This is an early alpha version intended for testing and feedback. The API is subject to change, and some features may have limitations. Not recommended for production use.
Highlights¶
-
3D/2D Rendering
Core environment generation engine supporting both 3D and 2D map visualization
-
JSON Configuration
Flexible JSON-based map data parsing for easy map setup and configuration
New Features¶
3D/2D Environment Generation¶
The core rendering engine is now operational, providing the foundation for displaying indoor maps in both 3D and 2D perspectives.
Key Capabilities:
- β Real-time 3D scene rendering using Filament engine
- β 2D map projection for simplified navigation views
- β Dynamic viewport switching between 3D and 2D modes
- β Basic camera controls and positioning
- β Mesh loading and rendering pipeline
Technical Details:
- Hardware-accelerated rendering
- Support for glTF/GLB model formats
- Basic lighting and material support
- Camera perspective controls
- Top-down orthographic projection
- Simplified rendering for better performance
- Ideal for wayfinding and route display
- Reduced resource consumption
Usage Example:
val sceneView = MineSceneView(context)
// Enable 3D mode (default)
sceneView.setRenderMode(RenderMode.MODE_3D)
// Switch to 2D mode
sceneView.setRenderMode(RenderMode.MODE_2D)
JSON Map Data Parsing¶
Introduced a robust JSON parsing system for map configuration, enabling easy map setup and customization without code changes.
Supported Configuration:
- π Floor definitions and metadata
- π’ Building structure information
- πΊοΈ Map model file references
- βοΈ Initial camera positioning
- π¨ Basic styling options
JSON Structure:
{
"id": "venue-001",
"name": "Sample Venue",
"version": "1.0.0",
"modelPath": "models/venue.glb",
"floors": [
{
"id": "ground",
"name": "Ground Floor",
"level": 0,
"defaultFloor": true
}
]
}
Loading Maps:
// Load from assets
val mapData = JsonUtil.LoadJsonFromAsset(context, "maps/venue.json")
// Apply to scene
sceneView.setMapData(mapData)
Bug Fixes¶
3D/2D Environment Generation¶
Issue: Initial rendering pipeline had stability issues causing crashes during scene initialization.
Resolution: - Improved resource initialization sequence - Added proper error handling for missing assets - Enhanced memory management during scene setup - Fixed race conditions in the rendering thread
Impact: Significantly improved stability during map loading and initialization.
JSON File Parsing - Empty File Handling¶
Issue: Parser would crash when encountering empty or malformed JSON files.
Resolution: - Added comprehensive input validation - Implemented graceful error handling for empty files - Added detailed error messages for debugging - Enhanced null-safety checks
Before:
// Would crash on empty file
val mapData = JsonUtil.LoadJsonFromAsset(context, "empty.json")
After:
// Now returns null safely with error logging
val mapData = JsonUtil.LoadJsonFromAsset(context, "empty.json")
if (mapData == null) {
Log.e("Map", "Failed to load map data")
}
Known Issues¶
We're aware of the following limitations in this alpha release:
3D/2D Environment Generation on Low-End Devices¶
Performance Issue
Severity: Medium
Platforms: Low-end Android devices (< 2GB RAM)
Description: The rendering engine may experience frame drops or stuttering on devices with limited GPU capabilities.
Workaround:
// Reduce render quality for better performance
sceneView.displayConfig = DisplayConfig(
renderQuality = DisplayConfig.RenderQuality.LOW,
shadowsEnabled = false,
antiAliasing = false
)
Status: Under investigation. Optimizations planned for v0.2.0.
Module Performance on Low-End Devices¶
Performance Issue
Severity: Medium
Platforms: Devices with < 3GB RAM
Description: Overall library performance may be suboptimal on resource-constrained devices, particularly during initial map loading.
Impact: - Slower map loading times (5-10 seconds) - Increased memory consumption - Potential out-of-memory errors on very low-end devices
Recommendations: - Test on target devices early in development - Implement loading screens for better UX - Consider 2D mode for better performance
Status: Performance profiling in progress. Optimizations scheduled for v0.2.0.
Gesture / Touch Event Handling¶
Interaction Issue
Severity: High
Platforms: All devices
Description: Touch gestures (pan, zoom, rotate) may not work consistently or may conflict with system gestures.
Known Problems: - Occasional unresponsive touch events - Pinch-to-zoom gesture sensitivity issues - Rotation gesture conflicts with pan - Multi-touch events not always recognized
Workaround:
// Disable conflicting gestures temporarily
gestureHandler.apply {
isRotationEnabled = false // Disable if conflicts occur
minZoom = 1.0f
maxZoom = 5.0f
}
Status: Critical fix planned for v0.2.0. Investigating touch event handling pipeline.
Testing Notes¶
Tested Configurations¶
| Device Type | Android Version | Status | Notes |
|---|---|---|---|
| High-end (Flagship) | 11-14 | β Pass | Optimal performance |
| Mid-range | 10-13 | β οΈ Partial | Some frame drops |
| Low-end | 9-12 | β Issues | Performance problems |
| Tablets | 11-14 | β Pass | Good experience |
Test Coverage¶
- β Basic map loading
- β JSON parsing
- β 3D/2D mode switching
- β οΈ Touch gestures (limited)
- β οΈ Memory management (ongoing)
- β Multi-floor navigation (not implemented)
Installation¶
To use this alpha release, add the following dependency:
dependencies {
implementation("com.machinestalk:indoornavigationengine:0.1.0-alpha")
}
dependencies {
implementation 'com.machinestalk:indoornavigationengine:0.1.0-alpha'
}
Alpha Version
Remember to append the -alpha suffix to use this early release version.
Migration Guide¶
This is the first alpha release, so no migration is required. For new integrations:
- Add the dependency to your project
- Create a JSON map configuration file
- Initialize
MineSceneViewin your Activity/Fragment - Load your map data using
JsonUtil - Refer to the Quick Start Guide for detailed setup
What's Next¶
Looking ahead to v0.2.0, we're planning:
- π― Improved touch gesture handling
- β‘ Performance optimizations for low-end devices
- πΊοΈ Multi-floor navigation support
- π Points of Interest (POI) system
- π¨ Enhanced theming capabilities
- π± Better memory management
:material-feedback: Feedback & Support¶
Your feedback is crucial for improving MINE!
-
Report Issues
Found a bug? Let us know!
-
Get Help
Need assistance with integration?
-
Feature Requests
Have ideas for improvement?
Additional Resources¶
- π Installation Guide
- π Quick Start
- π Usage Documentation
- π― Feature Overview
- β FAQ
License¶
This software is released under the commercial license. Please review the license terms before use.
Thank You!
Thank you for being an early adopter of MINE - Indoor Navigation Engine! Your feedback and testing help us build a better product. π