搜狐技术产品

Androidify 全新升级,用 AI 瞬间生成专属 Android 机器人

作者 / 开发者关系工程师 Rebecca Franks、产品营销员 Tracy Agyemang 和产品经理 Avneet Singh

Androidify 焕新登场!这款全新应用可让您使用自拍和 AI 构建自己的专属 Android 机器人。今年早些时候,我们向您介绍了其中的一些组件。从现在开始,您可以使用 Androidify 的网页端,也可以使用 Google Play 上的应用版本。在这款新的 Androidify 应用中,您可以上传自拍照或根据需要编写提示,添加一些配件,然后见证 AI 如何构建属于您独一无二的机器人。体验过后,欢迎回来继续阅读,详细了解我们用于创建此应用的 AI API 和 Android 工具。

🔗 组件
https://android-developers.googleblog.com/2025/05/androidify-how-androidify-leverages-gemini-firebase-ml-kit.html
🔗 网页端

https://androidify.com/

🔗 Google Play 上的应用版本
https://play.google.com/store/apps/details?id=com.android.developers.androidify
Image

关键技术集成

Androidify 应用融合了强大的技术,可为用户带来流畅且富有吸引力的用户体验。以下是核心组件及其功能定位的详细介绍:

使用 Gemini 和 Firebase 构建 AI

Androidify 借助 Firebase AI Logic SDK 访问 Google 强大的 Gemini 和 Imagen* 模型。这对以下几项关键功能至关重要:

  • 验证图像:该应用首先使用 Gemini 2.5 Flash 来验证用户的照片。这包括检查图像是否包含清晰、对焦良好的人物,同时符合安全标准,经此验证后才能进一步处理图像。这是确保高质量和安全输出关键的第一步。

  • 添加图像描述:验证图像后,模型将为用户图像生成详细的描述。该过程使用结构化输出,这意味着模型会返回特定的 JSON 格式,使应用更容易解析信息。这种详细的描述有助于创建更准确、更具创意的最终呈现。

  • Android 机器人形象生成:生成的描述随后用来丰富最终图像生成的提示。然后,系统调用经过专门微调的 Imagen 3 模型版本,根据丰富的提示生成定制的 Android 机器人头像。这种定制化微调可确保结果独一无二,并契合应用俏皮和别具一格的美学风格。

🔗 Firebase AI Logic SDK
https://firebase.google.com/products/firebase-ai-logic

*生成结果的兼容性和可用性因设备而异。限 18 岁及以上用户使用。

Androidify 应用还有 "帮我写" 功能,该功能使用 Gemini 2.5 Flash 为机器人的服装和发型随机生成描述,还可以选择添加一些有趣的随机元素。

Image

使用 Jetpack Compose 和 CameraX 构建界面

该应用的界面完全使用 Jetpack Compose 构建,实现了适合不同设备类型的声明式自适应设计。该应用使用最新的 Material 3 Expressive 设计,提供了赏心悦目且引人入胜的界面元素,如新的形状、动效方案和自定义动画。

🔗 Material 3 Expressive 设计
https://m3.material.io/blog/building-with-m3-expressive

对于相机功能,我们将 CameraX 与 ML Kit 姿态检测 API 协同集成。这种智能集成方案可让应用自动检测人物何时处于相机视野中,从而启用拍摄按钮并为用户提供视觉辅助引导。它还使应用的相机功能可以自适应各种设备类型,包括桌面模式下的可折叠设备。

Androidify 还广泛使用了最新的 Compose 功能,例如:

  • 自适应布局:通过利用 WindowSizeClass 和可复用的可组合项,该应用在各种屏幕尺寸上都能完美呈现,无论是手机、可折叠设备还是平板电脑。

  • 共享元素过渡:该应用使用全新 Jetpack Navigation 3 库创建平滑且令人愉悦的屏幕转换效果,包括形态变换动画,为用户体验增添高级感。

  • 自动调整文本大小:借助 Compose 1.8,该应用使用了一个可以自动调整字体大小以适应容器可用空间的新参数,这用于应用的主要文本——Customize your own Android Bot。

Image

△ Androidify 工作流程

🔗 形态变换动画

https://www.youtube.com/watch?v=0moEXBqNDZI&ab_channel=AndroidDevelopers

Image

最新动态

在最新版本的 Androidify 中,我们添加了一些由 AI 赋能的强大功能。

使用 Gemini 图像编辑功能生成背景氛围

使用最新的 Gemini 2.5 Flash Image 模型,我们将 Android 机器人与预设的背景 "氛围" 相结合,使 Android 机器人看起来栩栩如生。

Image

△ 将 Android 机器人与背景氛围描述相结合,在场景中生成新的 Android 机器人

🔗 最新的 Gemini 2.5 Flash Image 模型
https://developers.googleblog.com/en/introducing-gemini-2-5-flash-image/

这是通过使用 Firebase AI Logic 来实现的,具体方法是传递背景氛围提示词和机器人的输入图像位图,并通过指令引导 Gemini 将两者结合在一起。

override suspend fungenerateImageWithEdit(        image: Bitmap,        backgroundPrompt: String = "Add the input image android bot as the main subject to the result... with the background that has the following vibe...",    ): Bitmap {        val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(            modelName = "gemini-2.5-flash-image-preview",            generationConfig = generationConfig {                responseModalities = listOf(                    ResponseModality.TEXT,                    ResponseModality.IMAGE,                )            },        )	  // We combine the backgroundPrompt with the input image which is the Android Bot, to produce the new bot with a background        val prompt = content {            text(backgroundPrompt)            image(image)        }        val response = model.generateContent(prompt)        val image = response.candidates.firstOrNull()            ?.content?.parts?.firstNotNullOfOrNull { it.asImageOrNull() }        return image ?: throw IllegalStateException("Could not extract image from model response")    }
🔗 Firebase AI Logic
https://firebase.google.com/docs/ai-logic/generate-images-gemini?api=dev
Image

使用 ML Kit 主体分割技术

实现贴纸模式

此应用还包括 "贴纸模式" 选项,该选项集成了 ML Kit 主体分割库,可以移除机器人的背景。您可以在支持贴纸的应用中使用 "贴纸模式"。

Image

△ 将移除 Android 机器人的白色背景,以创建适用于支持贴纸应用的 PNG

🔗 ML Kit 主体分割
https://developers.google.com/ml-kit/vision/subject-segmentation

实现贴纸功能的代码首先会检查是否已下载并安装了主体分割模型,如果尚未下载并安装,则会请求执行这两个操作并等待其完成。如果模型已安装,应用会将原始 Android 机器人图像传入分割器,并调用该分割器上的 process 方法来移除背景。然后返回 foregroundBitmap 对象以供用户导出。

override suspend fungenerateImageWithEdit(        image: Bitmap,        backgroundPrompt: String = "Add the input image android bot as the main subject to the result... with the background that has the following vibe...",    ): Bitmap {        val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(            modelName = "gemini-2.5-flash-image-preview",            generationConfig = generationConfig {                responseModalities = listOf(                    ResponseModality.TEXT,                    ResponseModality.IMAGE,                )            },        )	  // We combine the backgroundPrompt with the input image which is the Android Bot, to produce the new bot with a background        val prompt = content {            text(backgroundPrompt)            image(image)        }        val response = model.generateContent(prompt)        val image = response.candidates.firstOrNull()            ?.content?.parts?.firstNotNullOfOrNull { it.asImageOrNull() }        return image ?: throw IllegalStateException("Could not extract image from model response")    }

有关完整的源代码实现,请参阅 LocalSegmentationDataSource:

https://github.com/android/androidify/blob/main/core/network/src/main/java/com/android/developers/androidify/ondevice/LocalSegmentationDataSource.kt
Image

了解详情

如需了解有关 Androidify 幕后的更多信息,请查看全新解决方案演示及代码,您可以在 androidify.com 上亲自体验,或在 Google Play 上下载此应用。也欢迎您持续关注 "Android 开发者" 微信公众号,及时了解更多开发技术和产品更新等资讯动态。

Image
🔗 解决方案演示
https://developers.google.com/solutions/learn/androidify
🔗 代码
https://github.com/android/androidify
🔗 androidify.com

http://androidify.com

🔗 在 Google Play 上下载此应用

https://play.google.com/store/apps/details?id=com.android.developers.androidify