Frequently Asked Questions¶
Find quick answers to common questions about MINE - Indoor Navigation Engine. Can't find what you're looking for? Contact our support team.
Quick Search
Use Ctrl+F (or Cmd+F on Mac) to search for keywords on this page.
Table of Contents¶
- Getting Started
- Features & Capabilities
- Technical Questions
- Licensing & Pricing
- Platform Support
- Integration & Development
- Performance & Optimization
- Troubleshooting
- Community & Support
Getting Started¶
How do I get started with MINE?¶
Getting started is easy! Follow these steps:
-
Install the Library: Add the dependency to your
build.gradlefileimplementation("com.machinestalk:indoornavigationengine:0.4.0-alpha") -
Configure Your Project: Set up Java 17 compatibility
compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } -
Follow the Quick Start Guide: Our Quick Start Guide provides a step-by-step tutorial on setting up your first navigation experience.
-
Explore Examples: Check out the Usage Guide for comprehensive code examples.
Estimated Time: 10-15 minutes to have a working navigation app!
What are the prerequisites for using MINE?¶
You'll need:
| Requirement | Minimum | Recommended |
|---|---|---|
| Android Studio | Arctic Fox | Latest Stable |
| JDK | 17 | 17+ |
| Android SDK | API 24 (Android 7.0) | API 34 (Android 14) |
| Gradle | 8.2 | Latest |
| Kotlin | 1.8.0 | Latest |
Additional Requirements: - Basic knowledge of Android development - Understanding of Kotlin or Java - 3D map models in glTF/GLB format - (Optional) Indoor positioning infrastructure (WiFi, Beacons)
Do you provide sample projects or demos?¶
Yes! We provide:
- π± Sample App: Complete reference implementation showcasing all features
- π» Code Snippets: Ready-to-use code examples in our documentation
- π₯ Video Tutorials: Step-by-step video guides (coming soon)
- ποΈ Sample Map Data: Example JSON configurations and 3D models
Check our GitHub repository or contact us for access to sample projects.
Features & Capabilities¶
What are the key features of MINE?¶
MINE offers a comprehensive set of features for indoor navigation:
-
3D/2D Rendering
Hardware-accelerated rendering with seamless view switching
-
Path Finding
Advanced A* algorithm with multi-floor support
-
Real-time Navigation
Turn-by-turn directions with live position tracking
-
UI Components
Pre-built, customizable components for navigation
-
Theme Support
Dark/light mode with custom theme capabilities
-
Location Tracking
Multi-provider positioning (WiFi, Bluetooth, sensors)
-
Accessible Routing
Wheelchair-accessible paths and alternative routes
-
Offline Support
Work without internet connectivity (coming soon)
Complete Feature List: See our Features Overview for detailed information.
Does MINE support multi-floor navigation?¶
Yes! Multi-floor navigation is fully supported:
- β Automatic floor detection
- β Elevator and stairway routing
- β Seamless floor transitions
- β Floor selector UI component
- β Floor-aware path finding
Example:
// Navigate across floors
val route = pathFinder.findPath(
start = Location(floor = "ground", x = 10f, y = 5f),
end = Location(floor = "first", x = 25f, y = 15f)
)
// Route automatically includes floor change instructions
Learn more in our Navigation Guide.
Can I customize the map appearance?¶
Absolutely! MINE offers extensive customization:
Theme Customization: - Primary, secondary, and accent colors - Path colors and widths - POI marker styles - Background colors - Typography and fonts
Visual Elements: - Custom icons for POIs - Floor plan overlays - Route visualization styles - UI component styling
Example:
val customTheme = ThemeConfig(
primaryColor = Color.parseColor("#FF5722"),
pathColor = Color.parseColor("#4CAF50"),
poiMarkerColor = Color.parseColor("#FFC107")
)
sceneView.setThemeConfig(customTheme)
See Theme Customization for complete details.
Does MINE support voice navigation?¶
Coming Soon! Voice navigation is planned for v0.5.0 (Q4 2024):
- π Text-to-speech turn-by-turn directions
- π Multi-language support (15+ languages)
- ποΈ Adjustable voice settings
- π Optional silent mode
Current Capabilities: - Visual turn-by-turn instructions - Progress indicators - Distance and time estimates - Haptic feedback
Follow our Release Notes for updates!
Technical Questions¶
What map formats does MINE support?¶
3D Models: - β glTF (.gltf) - β Binary glTF (.glb) - Recommended - β OBJ, FBX, BLEND (not supported)
Map Configuration: - β JSON for map structure and metadata - β Custom properties and extensions
Best Practices:
- Use .glb format for better performance
- Keep models under 50MB for optimal loading
- Optimize textures for mobile devices
- Use Draco compression when possible
How accurate is the indoor positioning?¶
Accuracy depends on the positioning technology used:
| Technology | Typical Accuracy | Best Use Case |
|---|---|---|
| WiFi Fingerprinting | 3-5 meters | Large venues |
| Bluetooth Beacons | 1-3 meters | Precise navigation |
| Sensor Fusion | 2-8 meters | Complementary |
| PDR | 5-15 meters | Movement tracking |
| Combined | 1-3 meters | Optimal setup |
Improving Accuracy: - Deploy more beacons - Use WiFi fingerprinting calibration - Enable sensor fusion - Regular maintenance of infrastructure
Can I use my own positioning system?¶
Yes! MINE supports custom location providers:
class CustomLocationProvider : LocationProvider {
override val name = "Custom Provider"
override fun startTracking() {
// Your positioning logic
}
override fun stopTracking() {
// Cleanup
}
override fun getCurrentLocation(): Location {
// Return current position
return Location(x = x, y = y, floor = floorId)
}
}
// Register your provider
locationTracker.addProvider(CustomLocationProvider(), priority = 10)
See Location Tracking for details.
What rendering engine does MINE use?¶
MINE uses Google Filament - a physically-based rendering engine:
Benefits: - π¨ High-quality 3D graphics - β‘ Hardware-accelerated performance - π± Optimized for mobile devices - π§ Industry-standard pipeline
Performance: - 60 FPS on mid-range devices - Efficient memory usage - Battery-optimized rendering
Learn More: Filament API Reference
Does MINE work offline?¶
Partial Support: - β Currently: Pre-loaded maps work offline - β Currently: Navigation without internet - β Currently: No offline map downloads - π Coming in v0.5.0: Full offline map packages
Current Offline Capabilities:
// Load map from assets (works offline)
val mapData = JsonUtil.LoadJsonFromAsset(context, "maps/venue.json")
sceneView.setMapData(mapData)
// Navigation works without internet
navigationManager.startNavigation(destination)
Licensing & Pricing¶
Is MINE free to use?¶
License Options:
| License Type | Cost | Use Case |
|---|---|---|
| Development | Free | Testing and development |
| Commercial | Paid | Production applications |
| Enterprise | Custom | Large-scale deployments |
| Open Source | Free* | Non-commercial projects |
*Free for approved open-source projects
What's Included: - β Full feature access - β Regular updates - β Documentation - β Bug fixes - β Community support
Commercial License Includes: - β Priority support - β Custom development - β SLA guarantees - β On-premise deployment options
Get Started: Contact us for pricing information.
Do you offer educational discounts?¶
Yes! We support education:
- π Academic Licenses: Free for universities and research
- π¨βπ Student Discounts: Reduced pricing for student projects
- π« Educational Institutions: Special pricing tiers
Requirements: - Valid educational email address - Proof of enrollment/employment - Non-commercial use
Apply: Contact us with your educational credentials.
Can I evaluate MINE before purchasing?¶
Absolutely! We offer:
- β° 30-Day Trial: Full-featured evaluation
- π Proof of Concept: Test with your data
- π€ Technical Consultation: Help with evaluation
- π» Sample Projects: Pre-built examples
Trial Includes: - All features unlocked - Technical support - Documentation access - Sample maps and data
Start Trial: Contact us to request evaluation access.
Platform Support¶
Which Android versions are supported?¶
| Android Version | API Level | Support Status |
|---|---|---|
| Android 14 | 34 | β Fully Supported |
| Android 13 | 33 | β Fully Supported |
| Android 12 | 31-32 | β Fully Supported |
| Android 11 | 30 | β Fully Supported |
| Android 10 | 29 | β Fully Supported |
| Android 9 | 28 | β Fully Supported |
| Android 8 | 26-27 | β Supported |
| Android 7 | 24-25 | β Minimum Required |
| Android 6 | 23 | β Not Supported |
Target SDK: 34 (Android 14)
Minimum SDK: 24 (Android 7.0)
Does MINE support iOS?¶
Not Currently: MINE is Android-only at this time.
Future Plans: - π iOS version under consideration - π± Would use native iOS APIs - π― Planned for 2025 (tentative)
Alternatives: - Consider Kotlin Multiplatform Mobile (KMM) in the future - Contact us to express interest in iOS support
Request Updates: Join our mailing list for iOS announcements.
Are there any plans for Kotlin Multiplatform?¶
Under Evaluation: We're exploring Kotlin Multiplatform (KMP):
Considerations: - π Assessing community demand - π§ Technical feasibility analysis - ποΈ No timeline confirmed yet
Current Focus: - Improving Android experience - Adding more features - Performance optimization
Share Your Interest: If KMP support is important to you, let us know!
Does MINE support tablets?¶
Yes! MINE works great on tablets:
- β Responsive UI components
- β Optimized layouts for large screens
- β Enhanced navigation experience
- β Split-screen support
- β Tested on 7"-12" tablets
Tablet-Specific Features: - Larger map viewing area - Side-by-side POI information - Enhanced UI controls - Better readability
Integration & Development¶
Can I integrate MINE with my existing app?¶
Yes! MINE is designed for easy integration:
Integration Points: - π¨ Custom UI/UX - πΊοΈ Existing maps - π Location services - π Analytics platforms - π Authentication systems
Flexible Architecture:
// Use as Activity
class NavActivity : AppCompatActivity() {
private lateinit var sceneView: MineSceneView
}
// Use as Fragment
class NavFragment : Fragment() {
private var sceneView: MineSceneView? = null
}
// Use in Jetpack Compose
@Composable
fun MapScreen() {
IndoorNavigationScene(mapBuild = mapData)
}
See Usage Guide for integration patterns.
How do I add custom Points of Interest (POIs)?¶
Easy POI Management:
// Add POI programmatically
val poi = PointOfInterest(
id = "coffee-shop-01",
name = "Starbucks",
category = "Food & Drink",
floor = "ground",
position = floatArrayOf(15.5f, 8.2f, 0f),
icon = R.drawable.ic_coffee,
metadata = mapOf(
"phone" to "+1-555-1234",
"hours" to "7am-9pm"
)
)
poiManager.addPOI(poi)
// Or load from JSON
{
"pointsOfInterest": [
{
"id": "coffee-shop-01",
"name": "Starbucks",
"category": "Food & Drink",
"floor": "ground",
"position": { "x": 15.5, "y": 8.2, "z": 0 }
}
]
}
Can I use MINE with Jetpack Compose?¶
Yes! Full Compose support:
@Composable
fun NavigationScreen() {
val context = LocalContext.current
val mapData = remember {
JsonUtil.LoadJsonFromAsset(context, "maps/venue.json")
}
Box(modifier = Modifier.fillMaxSize()) {
mapData?.let {
IndoorNavigationScene(
mapBuild = it,
modifier = Modifier.fillMaxSize()
)
}
// Add Compose UI overlays
FloatingActionButton(
onClick = { /* Navigate */ },
modifier = Modifier
.align(Alignment.BottomEnd)
.padding(16.dp)
) {
Icon(Icons.Default.Navigation, "Navigate")
}
}
}
See Compose Integration for more.
Does MINE support K2 (Kotlin 2.0)?¶
Yes! MINE fully supports Kotlin 2.0:
- β Compatible with K2 compiler
- β Tested with Kotlin 2.0+
- β Takes advantage of K2 improvements
- β No migration issues
Benefits: - Faster compilation times - Better IDE performance - Improved type inference - Enhanced code analysis
If you encounter any K2-related issues, please report them.
Performance & Optimization¶
How does MINE perform on low-end devices?¶
Adaptive Performance:
MINE automatically adjusts quality based on device capabilities:
| Device Tier | Frame Rate | Quality | Memory |
|---|---|---|---|
| Flagship | 60 FPS | High | 150MB |
| Mid-range | 60 FPS | Medium | 120MB |
| Budget | 30-45 FPS | Low | 90MB |
Optimization Tips:
// Detect and optimize for low-end devices
if (DeviceUtil.isLowEndDevice()) {
sceneView.displayConfig = DisplayConfig(
renderQuality = DisplayConfig.RenderQuality.LOW,
shadowsEnabled = false
)
sceneView.setRenderMode(RenderMode.MODE_2D)
}
What's the app size impact?¶
Library Size: - AAR Size: ~8MB - With dependencies: ~15MB - Native libraries (all ABIs): ~12MB
Optimization:
// Reduce APK size by filtering ABIs
android {
defaultConfig {
ndk {
abiFilters += listOf("armeabi-v7a", "arm64-v8a")
}
}
}
Result: Can reduce by ~40% by targeting specific architectures.
How much battery does navigation consume?¶
Battery Usage (1 hour continuous navigation):
| Scenario | Battery Drain | Notes |
|---|---|---|
| 3D Navigation | 8-10% | High quality |
| 2D Navigation | 5-7% | Optimized |
| Background Tracking | 3-5% | Minimal |
Battery Optimization: - Use 2D mode when possible - Reduce location update frequency when stationary - Lower render quality on low battery - Pause rendering when app in background
Troubleshooting¶
Where can I find troubleshooting help?¶
Resources:
- Troubleshooting Guide: View detailed solutions
- FAQ: You're here! Check other questions
- API Documentation: Browse API reference
- Support Team: Contact us
Common Issues: - Map not loading β Check file paths - Navigation not starting β Verify permissions - Poor positioning β Check beacon configuration - Performance issues β Optimize settings
How do I report a bug?¶
Bug Reporting:
- Check Existing Issues: Search our FAQ and Troubleshooting
- Gather Information:
- MINE version
- Android version and device model
- Steps to reproduce
- Error logs
-
Screenshots/videos
-
Submit Report: Contact support with details
We Value Feedback: Every bug report helps improve MINE!
What logging should I enable for debugging?¶
Debug Configuration:
if (BuildConfig.DEBUG) {
// Enable verbose logging
MineLogger.setLogLevel(MineLogger.Level.VERBOSE)
// Show debug overlays
sceneView.showDebugOverlay = true
sceneView.showFpsCounter = true
// Enable wireframe mode
sceneView.debugWireframe = false
// Log navigation events
navigationManager.enableDebugLogging = true
}
// Capture logs
adb logcat MINE:V *:S > mine_logs.txt
Community & Support¶
Where can I get help?¶
Support Channels:
-
Email Support
Direct support from our team
-
Documentation
Comprehensive guides and references
-
FAQ
Quick answers to common questions
-
Bug Reports
Report issues and track fixes
How can I contribute to MINE?¶
Current Status: Not accepting public contributions
But You Can Help: - π Report bugs and issues - π‘ Suggest features - π Share feedback on documentation - π Share your success stories
Future Plans: We may open source parts of MINE in the future.
Do you have a developer community?¶
Community Resources (Coming Soon):
- π¬ Developer Forum
- π₯ Slack Channel
- π¦ Twitter/X Updates
- πΊ YouTube Tutorials
- π Developer Blog
Stay Connected: Contact us to join our mailing list!
What's the release schedule?¶
Current Cycle: - Major releases: Quarterly - Minor updates: Monthly - Bug fixes: As needed - Security patches: Immediate
Upcoming Releases: - v0.5.0 (Q4 2024): Offline maps, voice guidance - v0.6.0 (Q1 2025): AR navigation, analytics - v1.0.0 (Q1 2025): Production release
See Release Notes for detailed roadmap.
Still Have Questions?¶
-
Contact Support
Get personalized help from our team
-
Browse Documentation
Explore comprehensive guides
-
Troubleshooting
Find solutions to common issues
We're Here to Help!
Can't find your answer? Don't hesitate to reach out - we're happy to help you succeed with MINE!