Take your media creation to the next level — basic, better, and best
Stay organized with collections
Save and categorize content based on your preferences.
This guide charts the optimal progression of a media creation-focused app from a
likely starting place to best-in-class. It's designed to help you think about
scaling your app over time, and what features to implement when. While every
media creation app is different, consider these recommendations to achieve a
best-in-class app.
A basic media creation app provides users with a foundational experience, which
may include doing the following:
A better media creation app gives users access to premium camera hardware,
camera software, and media-editing features that:
Capture
Edit
A best-in-class media creation app gives users access to advanced features that
really make the app stand out, such as:
Capture
Edit
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2024-07-22 UTC.
[null,null,["Last updated 2024-07-22 UTC."],[],[],null,["# Take your media creation to the next level — basic, better, and best\n\nThis guide charts the optimal progression of a media creation-focused app from a\nlikely starting place to best-in-class. It's designed to help you think about\nscaling your app over time, and what features to implement when. While every\nmedia creation app is different, consider these recommendations to achieve a\nbest-in-class app.\n\nBasic media creation\n--------------------\n\nA basic media creation app provides users with a foundational experience, which\nmay include doing the following:\n\n- Use [photo picker](/training/data-storage/shared/photopicker) to access existing photos and videos.\n- Support [in-app image](/training/camerax/take-photo) and [in app video](/training/camerax/video-capture) capture using CameraX.\n- Handle [camera orientation](/training/camerax/orientation-rotation).\n- Support [automatic resolution](/media/camera/camerax/configuration#automatic-resolution).\n- [Switch](/reference/androidx/camera/core/CameraSelector) between [front](/reference/androidx/camera/core/CameraSelector#DEFAULT_FRONT_CAMERA()) and [back](/reference/androidx/camera/core/CameraSelector#DEFAULT_BACK_CAMERA()) camera.\n- Support [zoom](/reference/androidx/camera/core/ZoomState) and [tap-to-focus](/reference/kotlin/androidx/camera/view/CameraController#setTapToFocusEnabled(boolean)).\n- Support hardware [flash](/training/camerax/take-photo#set-flash-mode).\n- Handle [multi-window camera access](/develop/ui/compose/layouts/adaptive/support-multi-window-mode#exclusive_resource_access).\n- Use the [Android Sharesheet](/training/sharing/send#why-to-use-system-sharesheet) to share with other apps and targets.\n\nBetter media creation\n---------------------\n\nA better media creation app gives users access to premium camera hardware,\ncamera software, and media-editing features that:\n\n**Capture**\n\n- Use [camera extensions](/training/camerax/extensions-api): [night mode](/reference/android/hardware/camera2/CameraExtensionCharacteristics#EXTENSION_NIGHT), [HDR](/reference/android/hardware/camera2/CameraExtensionCharacteristics#EXTENSION_HDR), or [bokeh](/reference/android/hardware/camera2/CameraExtensionCharacteristics#EXTENSION_BOKEH).\n- Have [zero shutter lag](/training/camerax/take-photo#zero-shutter-lag).\n- Support [screen-based flash](/reference/kotlin/androidx/camera/view/ScreenFlashView) for selfie cameras.\n- Use manual [flash](/reference/android/hardware/camera2/CameraCharacteristics#FLASH_SINGLE_STRENGTH_DEFAULT_LEVEL) or [torch](/reference/android/hardware/camera2/CameraCharacteristics#FLASH_TORCH_STRENGTH_DEFAULT_LEVEL) controls.\n- Use [target resolutions](/media/camera/camerax/configuration#specify-resolution).\n- Have [exposure compensation](/media/camera/camerax/configuration#exposure-compensation).\n- Add an [app widget](/develop/ui/views/appwidgets/overview) so users can get start a capture flow from their home screen.\n\n**Edit**\n\n- With video [trimming](/media/media3/transformer/transformations#trim), [cropping](/reference/androidx/media3/effect/Crop), and other built-in [Media3\n transformer](/guide/topics/media/transformer) [effects](/reference/androidx/media3/common/Effect).\n- [UltraHDR images](/media/grow/ultra-hdr-edit#basic-edits), rotation, cropping, and scaling.\n- Use [image filters](/develop/ui/compose/graphics/images/customize#color-filter) and transformations.\n- Audio with [audio effects](/reference/androidx/media3/common/audio/AudioProcessor).\n\nBest media creation\n-------------------\n\nA best-in-class media creation app gives users access to advanced features that\nreally make the app stand out, such as:\n\n**Capture**\n\n- Use concurrent cameras: [front-and-back simultaneous capture](/media/camera/camera2/multiple-camera-streams-simultaneously).\n- Stream live with adaptive live streaming. Consider using [performance\n class](/topic/performance/performance-class) to help determine if the device can support concurrent camera capture.\n\n**Edit**\n\n- Support [custom effects](/media/media3/transformer/transformations#custom-video) using [Media3 transformer](/media/media3/transformer/getting-started).\n- [UltraHDR images](/media/grow/ultra-hdr-edit#advanced-edits), transforming the [gain-map](/guide/topics/media/platform/hdr-image-format#gain_map-generation) appropriately for image filters and other operations.\n- Audio with [custom audio effects](/reference/androidx/media3/common/audio/BaseAudioProcessor)."]]