FAQ
Common Media Services issues and solutions
Do I need to add camera and gallery permissions manually in AndroidManifest.xml and Info.plist?
No. Essential Kit automatically injects required permissions during the build process. Just enable the appropriate features in Essential Kit Settings (Services tab) and the plugin adds:
Android:
CAMERA,READ_EXTERNAL_STORAGE,WRITE_EXTERNAL_STORAGEbased on enabled featuresiOS:
NSCameraUsageDescription,NSPhotoLibraryUsageDescription,NSPhotoLibraryAddUsageDescriptionwith your configured descriptions
Images are not saving to Android gallery. What should I check?
For Android 10+ (API level 29+), ensure you have gallery write permissions. The most common issues:
Missing Configuration: Enable "Saves Files to Photo Gallery" in Essential Kit Settings
Permission Denied: First call to
SaveMediaContent()requests permission automatically; check error callback for denialDevelopment Build Issue: Unity development builds may have restricted permissions. Test release builds or call
MediaServices.GetGalleryAccessStatus(GalleryAccessMode.ReadWrite)to verify permission state
User denied camera/gallery access. How do I let them re-enable it?
Use Utilities.OpenApplicationSettings() to deep link into the platform settings screen. Pair it with in-app messaging explaining why the permission enables your feature:
void OnPermissionDenied()
{
Debug.LogWarning("Camera access is required for profile photos. Opening Settings.");
Utilities.OpenApplicationSettings();
}Can I test camera and gallery features in the Unity Editor?
Yes, Essential Kit provides editor simulation automatically. The simulator uses sample images and videos to test your integration. However, you must test on physical devices before release to verify:
Actual permission dialogs and user flows
Platform-specific pickers (Photo Picker on Android 13+, PHPicker on iOS 14+)
Real camera capture and video recording
Performance with large media files
My captured photos appear rotated incorrectly. How do I fix this?
This happens when image metadata (EXIF orientation) isn't applied. Essential Kit handles orientation automatically when converting to Texture2D:
If you're reading raw data yourself, check the EXIF orientation tag and rotate accordingly.
How can I limit file sizes for selected images?
Media selection APIs don't provide built-in file size filtering. Check file size after selection:
For automatic compression, convert to Texture2D and re-encode:
Where can I confirm plugin behavior versus my implementation?
Run Assets/Plugins/VoxelBusters/EssentialKit/Examples/Scenes/MediaServicesDemo.unity. If the sample works but your scene does not, compare:
MediaContentSelectOptions/MediaContentCaptureOptionsconfigurationError handling in callbacks (check for
nullerrors and user cancellation)Permission settings in Essential Kit Settings (Services tab)
Callback execution timing (ensure operations complete before cleanup)
Can I select multiple media types at once (images and videos)?
No, each selection operation supports a single media type filter. To support both, present a choice to the user:
Do saved images appear immediately in the device gallery?
Yes, images saved with SaveMediaContent() appear immediately in the native Photos app. If they don't appear:
Verify the callback returned
success = truewithout errorsCheck that "Saves Files to Photo Gallery" is enabled in Essential Kit Settings
Force refresh the gallery app (close and reopen on Android)
On iOS with custom albums, ensure "Saves Files to Custom Directories" is enabled if using non-null
directoryName
How do I handle "out of memory" errors with large images?
Large images (4000x3000px+) can cause memory issues. Strategies:
Load at reduced resolution: Some platforms provide thumbnail APIs (not exposed by Essential Kit currently)
Compress immediately: Convert to Texture2D and re-encode at lower quality
Dispose quickly: Call
Destroy(texture)immediately after useStreaming: Use
AsFilePath()instead ofAsTexture2D()for upload scenarios
What MIME types are supported for saving?
Common supported MIME types:
MimeType.kPNGImage- PNG imagesMimeType.kJPEGImage- JPEG imagesMimeType.kMP4Video- MP4 videosMimeType.kMOVVideo- MOV videos (iOS)
Use the appropriate MIME type matching your data format. Mismatched MIME types may cause save failures or incorrect gallery categorization.
Can I customize the native camera interface?
No, Essential Kit uses the platform's native camera interface which cannot be customized. For custom camera experiences, consider:
Building a custom camera using
WebCamTexture(requires separate implementation)Using third-party camera plugins for advanced features
Accepting the standard native interface (recommended for simplicity)
How do I test custom album creation on iOS?
Enable "Saves Files to Custom Directories" in Essential Kit Settings, then:
On iOS, this creates a new album. On Android, behavior depends on OS version (may organize into folders or save to default location).
Last updated
Was this helpful?