2026/1/3 12:51:27
网站建设
项目流程
网站微信建设运维培训班,山东省建设备案网站审批,做网站论文研究方法怎么写,万网域名信息Android AI Sample Catalog
Android AI Sample Catalog 是一个独立的应用程序#xff0c;旨在为开发者提供一系列自包含的示例#xff0c;集中展示Google AI模型解锁的各种生成式AI能力。这些示例涵盖了从基础文本对话、多模态理解到实时语音交互、视频内容分析以及图像生成…Android AI Sample CatalogAndroid AI Sample Catalog 是一个独立的应用程序旨在为开发者提供一系列自包含的示例集中展示Google AI模型解锁的各种生成式AI能力。这些示例涵盖了从基础文本对话、多模态理解到实时语音交互、视频内容分析以及图像生成与编辑等多个前沿领域是学习和实践Android AI集成的宝贵资源。重要提示这些示例主要用于在特定场景下展示AI能力代码可能经过简化。它们属于演示性质不建议直接用于生产环境。最佳实践请参考官方文档和Now In Android项目。需要Firebase支持依赖于Google云端模型如Gemini Pro, Gemini Flash的示例需要预先设置Firebase项目并将应用连接到Firebase详细指南。项目状态我们正在持续向应用中添加更多示例。功能特性全方位AI能力展示集成Gemini、Imagen等多种Google AI模型覆盖文本、图像、语音、视频四大模态。开箱即用的示例应用每个示例都是独立、完整的Android模块拥有清晰的UI界面可直接运行体验。云端与本地AI兼顾云端AI使用Firebase AI SDK调用Gemini系列模型实现强大的聊天、多模态分析、视频总结、图像生成等功能。本地AI利用ML Kit GenAI API调用设备端Gemini Nano模型实现图像描述、文本摘要、写作辅助等隐私友好、低延迟的任务。现代化的架构与实现项目遵循Android推荐的架构模式使用Kotlin、Coroutines、Flow等现代开发技术代码结构清晰。实时交互体验Gemini Live API演示如何通过实时语音与AI模型交互操控一个待办事项应用实现完全免提的对话式体验。流式响应多个示例展示了如何处理AI模型的流式响应提供更流畅的用户反馈。安装指南前置条件开发环境最新版本的Android Studio。Firebase项目针对云端AI示例需要创建一个Firebase项目并获取配置文件。运行步骤克隆仓库gitclone https://github.com/android/ai-samples.gitcdai-samples使用Android Studio打开打开整个项目ai-samples根目录。配置Firebase可选但推荐访问Firebase控制台创建新项目。在项目中添加一个Android应用包名与app模块的包名一致例如com.android.ai.samples。下载配置文件google-services.json并将其放入app/目录下。详细步骤可参考Firebase Android设置指南。同步与运行同步Gradle后选择app配置并运行。应用将启动并展示示例列表您可以自由导航和体验所有可用示例。使用说明应用运行后主界面会列出所有集成的AI示例。点击任一示例即可进入对应的功能界面进行交互。以下是几个核心示例的典型使用场景Gemini 聊天机器人与Gemini Flash模型进行纯文本对话。Gemini 多模态聊天上传一张图片并附加文字问题让模型根据图文内容回答。Imagen 图像生成输入一段文字描述如“一只在太空中的柯基犬”生成对应的图像。设备端图像描述选择一张本地照片让设备端Gemini Nano模型生成简短描述无需网络连接。Gemini Live 语音待办事项通过语音指令添加、删除、切换任务状态体验实时语音AI交互。核心代码以下是从项目中选取的部分核心代码片段展示了如何调用不同的AI API。1. Gemini 多模态文本与图像生成此代码来自GeminiImageChatViewModel.kt展示了如何初始化一个支持生成文本和图像的Gemini模型并处理用户的图文输入。// 初始化支持图文生成的Gemini模型valgenerativeModelFirebase.ai(backendGenerativeBackend.googleAI()).generativeModel(gemini-3-pro-image-preview,generationConfiggenerationConfig{temperature0.9ftopK32topP1fmaxOutputTokens4096// 关键指定模型可以返回文本和图像两种模态responseModalitieslistOf(ResponseModality.TEXT,ResponseModality.IMAGE)},safetySettingslistOf(SafetySetting(HarmCategory.HARASSMENT,HarmBlockThreshold.MEDIUM_AND_ABOVE),SafetySetting(HarmCategory.HATE_SPEECH,HarmBlockThreshold.MEDIUM_AND_ABOVE),SafetySetting(HarmCategory.SEXUALLY_EXPLICIT,HarmBlockThreshold.MEDIUM_AND_ABOVE),SafetySetting(HarmCategory.DANGEROUS_CONTENT,HarmBlockThreshold.MEDIUM_AND_ABOVE),),systemInstructioncontent{text(You are a friendly assistant. Keep your responses short.)},)// 构建包含文本和图像的多模态内容并发送请求funsendMessageWithImage(message:String,bitmap:Bitmap?){viewModelScope.launch{valcontentcontent{text(message)if(bitmap!null){image(bitmap)// 将Bitmap添加为图像输入}}valresponsechat.sendMessage(content)// 处理响应...}}2. Gemini Live 实时语音与函数调用此代码来自TodoScreenViewModel.kt展示了如何初始化一个支持实时音频输入和函数调用连接应用业务逻辑的Gemini Live模型。// 定义可供模型调用的函数以添加待办事项为例privatevaladdTodofunctionDeclaration(addTodo){descriptionAdds a new todo item to the list// 定义函数的参数模式parametersschema{property(title,Schema.STRING){descriptionThe title of the todo}}// 当模型调用此函数时返回响应的格式responseschema{property(result,Schema.STRING){descriptionThe result of the operation}}}// 初始化Gemini Live模型并传入工具函数声明valgenerativeModelFirebase.ai(backendGenerativeBackend.vertexAI()).liveModel(gemini-2.5-flash-native-audio-preview-12-2025,generationConfigliveGenerationConfig,systemInstructionsystemInstruction,toolslistOf(// 将多个函数声明作为工具提供给模型Tool.functionDeclarations(listOf(getTodoList,addTodo,removeTodo,toggleTodoStatus),),),)// 连接到实时会话try{sessiongenerativeModel.connect()// 建立连接准备接收和发送音频流}catch(e:Exception){Log.e(TAG,Error connecting to the model,e)liveSessionState.valueLiveSessionState.Error}3. 设备端图像描述 (Gemini Nano)此代码来自GenAIImageDescriptionViewModel.kt展示了如何使用ML Kit API调用设备端Gemini Nano模型进行图像描述完全在本地运行。// 初始化ML Kit图像描述客户端privatevarimageDescriber:ImageDescriberImageDescription.getClient(ImageDescriberOptions.builder(context).build(),)/** * 生成图像描述的核心方法。 * param imageUri 要描述图像的Uri */privatesuspendfungenerateImageDescription(imageUri:Uri){// 更新UI状态为“生成中”_uiState.valueGenAIImageDescriptionUiState.Generating()// 从Uri加载BitmapvalbitmapMediaStore.Images.Media.getBitmap(context.contentResolver,imageUri)// 构建图像描述请求valrequestImageDescriptionRequest.builder(bitmap).build()// 执行推理。runInference支持流式回调可以在生成过程中实时更新UIimageDescriber.runInference(request){newText-// 每次模型生成新的文本片段时回调_uiState.update{currentState-// 累加生成的文本(currentStateas?GenAIImageDescriptionUiState.Generating)?.copy(partialOutputcurrentState.partialOutputnewText)?:currentState}}.await()// 等待推理完全完成// 推理完成更新UI状态为“成功”等...}4. Imagen 图像编辑局部重绘此代码来自ImagenEditingDataSource.kt展示了如何使用Imagen编辑模型根据用户绘制的遮罩和文本提示对图像进行局部修改Inpainting。/** * 使用遮罩对图像进行局部重绘。 * param sourceImage 原始图像 * param maskImage 遮罩图像白色区域表示需要重绘的部分 * param prompt 描述重绘内容的文本提示 * param editSteps 编辑步数影响生成质量 * return 编辑后的图像Bitmap */OptIn(PublicPreviewAPI::class)suspendfuninpaintImageWithMask(sourceImage:Bitmap,maskImage:Bitmap,prompt:String,editSteps:IntDEFAULT_EDIT_STEPS):Bitmap{// 调用Imagen编辑模型的editImage方法valimageResponseeditingModel.editImage(// 参考图像包含原始图像和遮罩referenceImageslistOf(ImagenRawImage(sourceImage.toImagenInlineImage()),// 转换原始图像为Imagen格式ImagenRawMask(maskImage.toImagenInlineImage()),// 转换遮罩为Imagen格式),promptprompt,// 重绘提示configImagenEditingConfig(editModeImagenEditMode.INPAINT_INSERTION,// 指定编辑模式为“局部插入重绘”editStepseditSteps,),)// 返回生成的第一个图像returnimageResponse.images.first().asBitmap()}更多精彩内容 请关注我的个人公众号 公众号办公AI智能小助手对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号网络安全技术点滴分享