国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android應(yīng)用程序中使用 Gemini Pro AI開發(fā)——2年工作經(jīng)驗如何淘汰10年工作經(jīng)驗的Android開發(fā)?

這篇具有很好參考價值的文章主要介紹了Android應(yīng)用程序中使用 Gemini Pro AI開發(fā)——2年工作經(jīng)驗如何淘汰10年工作經(jīng)驗的Android開發(fā)?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

com.google.ai.client.generativeai:generativeai:0.1.1,轉(zhuǎn)譯,人工智能,android,Gemini,Gemini Pro,AI,Google

上周,谷歌推出了最強大的基礎(chǔ)模型Gemini。 Gemini 是多模式的AI——它可以接受文本和圖像輸入。
谷歌為 Android 開發(fā)者引入了一種在設(shè)備上,利用最小模型Gemini Nano的方法。此功能可通過 AICore 在部分設(shè)備上使用,這是一項處理模型管理、運行時、安全功能等的系統(tǒng)服務(wù),可簡化開發(fā)人員的工作。

前言(可略過)、使用 Gemini Pro 開發(fā)應(yīng)用程序

Gemini Pro 可通過 Gemini API 訪問,它是我們在各種文本和圖像推理任務(wù)中擴展的最佳模型。為了簡化 Gemini Pro 的集成,您可以使用 Google AI SDK(適用于 Android 的客戶端 SDK)。該 SDK 支持與 Android 應(yīng)用直接集成,開發(fā)人員無需構(gòu)建和管理自己的后端基礎(chǔ)設(shè)施,從而降低了開發(fā)成本并提高了速度。

Google AI Studio 為開發(fā)者提供了一種簡化的方式來集成 Gemini Pro 模型、制作提示、創(chuàng)建 API 密鑰以及輕松地將想法轉(zhuǎn)化為 AI 應(yīng)用。在 Google AI Studio 中開發(fā)出提示后,您只需單擊“獲取代碼”操作即可生成 Kotlin 代碼片段,并立即開始使用適用于 Android 的 Google AI SDK 集成 Gemini。

com.google.ai.client.generativeai:generativeai:0.1.1,轉(zhuǎn)譯,人工智能,android,Gemini,Gemini Pro,AI,Google
我們還讓開發(fā)者能夠更輕松地在Android Studio 最新預覽版中直接使用 Gemini API。我們推出了新項目模板,供開發(fā)者立即開始使用適用于 Android 的 Google AI SDK。您將受益于 Android Studio 增強的代碼完成和 lint 檢查器,有助于 API 密鑰和安全性。

com.google.ai.client.generativeai:generativeai:0.1.1,轉(zhuǎn)譯,人工智能,android,Gemini,Gemini Pro,AI,Google
要利用 Android Studio 中的新模板,請通過 File > 啟動一個新項目新的>新建項目并選擇 Gemini API 入門模板。該模板提供了一個預配置的項目,其中包含使用 Gemini API 所需的代碼。選擇項目名稱和位置后,系統(tǒng)會提示您在 Google AI Studio 中生成 API 密鑰,并要求您在 Android Studio 中輸入該密鑰。 Android Studio 將通過 Gemini API 連接自動為您設(shè)置項目,從而簡化您的工作流程。

或者,您可以導入生成式 AI 代碼示例并通過 在 Android Studio 中進行設(shè)置文件>新的>導入示例,然后搜索“Generative AI Sample”。

com.google.ai.client.generativeai:generativeai:0.1.1,轉(zhuǎn)譯,人工智能,android,Gemini,Gemini Pro,AI,Google
至此,一個簡單的示例就搭建完畢了。接下來是詳細的Android Studio中的操作步驟。

正文、Android Studio 中構(gòu)建Gemini API Starter 應(yīng)用

本文檔簡要介紹了如何使用 Android Studio 構(gòu)建使用 Google AI SDK 實現(xiàn)生成式 AI 的應(yīng)用。該流程分為三個步驟。在開始之前,請確保您運行的是最新的預覽版 Android Studio。

第 1 步:在 AI 的新項目模板的基礎(chǔ)上進行構(gòu)建

啟動 Android Studio,然后依次選擇 File > New Project 以打開一個新項目。選擇新的 Gemini API 入門模板。
com.google.ai.client.generativeai:generativeai:0.1.1,轉(zhuǎn)譯,人工智能,android,Gemini,Gemini Pro,AI,Google

第 2 步:生成 API 密鑰

在向?qū)У南乱徊街?,選擇項目名稱和位置后,請?zhí)峁┯糜谙?Gemini API 進行身份驗證的 API 密鑰。如果您沒有 Gemini API 密鑰,請點擊向?qū)е刑峁┑逆溄愚D(zhuǎn)到 Google AI Studio 并請求新密鑰。完成后,將新的 API 密鑰復制回向?qū)А?點擊 Finish。
com.google.ai.client.generativeai:generativeai:0.1.1,轉(zhuǎn)譯,人工智能,android,Gemini,Gemini Pro,AI,Google
com.google.ai.client.generativeai:generativeai:0.1.1,轉(zhuǎn)譯,人工智能,android,Gemini,Gemini Pro,AI,Google

第 3 步:開始原型設(shè)計

Android Studio 會自動為您設(shè)置一個連接到 Gemini API 的項目,從而簡化您的工作流程。點擊 Run 即可在 Android 模擬器中查看代碼的實際運行情況。 該應(yīng)用附帶一條硬編碼提示,要求模型“為我總結(jié)以下文本”。您可以直接在代碼中修改或展開提示,以修改其功能。
com.google.ai.client.generativeai:generativeai:0.1.1,轉(zhuǎn)譯,人工智能,android,Gemini,Gemini Pro,AI,Google

如需詳細了解如何創(chuàng)建提示,請參閱 下面的快速入門模塊中的:實現(xiàn)常見用例等。

正文補充、快速入門:使用 Gemini Pro 開始構(gòu)建 AI 驅(qū)動的功能和 Android 應(yīng)用。

設(shè)置項目

在調(diào)用 Gemini API 之前,您需要設(shè)置 Android 項目,其中包括設(shè)置 API 密鑰、將 SDK 依賴項添加到 Android 項目,以及初始化模型。

設(shè)置您的 API 密鑰

您需要 API 密鑰才能使用 Gemini API。如果您還沒有密鑰,請在 Google AI Studio 中創(chuàng)建一個。

保護您的 API 密鑰

強烈建議您不要將 API 密鑰簽入版本控制系統(tǒng)。您應(yīng)將其存儲在 local.properties 文件中(該文件位于項目的根目錄中,但不在版本控制范圍內(nèi)),然后使用 Android 版 Secrets Gradle 插件以 build 配置變量的形式讀取 API 密鑰。

// Access your API key as a Build Configuration variable
val apiKey = BuildConfig.apiKey

本快速入門中的所有代碼段均采用此最佳實踐。此外,如果您想查看 Secrets Gradle 插件的實現(xiàn),可以查看此 SDK 的示例應(yīng)用,或者使用 Android Studio Iguana 的最新預覽版,它具有 Gemini API Starter 模板(包含 local.properties 文件,旨在幫助您開始使用)

將 SDK 依賴項添加到項目中

1、在您的模塊(應(yīng)用級)Gradle 配置文件(如 //build.gradle.kts)中,添加 Google AI SDK for Android 的依賴項:

dependencies {
  // ... other androidx dependencies

  // add the dependency for the Google AI client SDK for Android
  implementation("com.google.ai.client.generativeai:generativeai:0.1.1")
}

2、將您的 Android 項目與 Gradle 文件同步。

初始化生成模型

在進行任何 API 調(diào)用之前,您需要先初始化 GenerativeModel 對象:

val generativeModel = GenerativeModel(
    // Use a model that's applicable for your use case (see "Implement basic use cases" below)
    modelName = "MODEL_NAME",
    // Access your API key as a Build Configuration variable (see "Set up your API key" above)
    apiKey = BuildConfig.apiKey
)

指定模型時,請注意以下事項:

您需要使用特定于您的用例的模型(例如,gemini-pro-vision 適用于多模態(tài)輸入);如需了解每個用例的推薦模型,請參閱本指南的下一部分。

實現(xiàn)常見用例

現(xiàn)在您的項目已設(shè)置完畢,您可以探索如何使用 Gemini API 來實現(xiàn)不同的用例:

  • 根據(jù)純文本輸入生成文本
  • 從文本和圖片輸入生成文本(多模式)
  • 構(gòu)建多輪對話(聊天)
  • 使用流式傳輸加快互動速度

根據(jù)純文本輸入生成文本

當提示輸入僅包含文本時,請將 gemini-pro 模型與 generateContent 結(jié)合使用以生成文本輸出:
請注意,generateContent() 是一個掛起函數(shù),需要從協(xié)程作用域中調(diào)用。如果您不熟悉協(xié)程,請參閱 Android 上的 Kotlin 協(xié)程。

kotlin
val generativeModel = GenerativeModel(
    // For text-only input, use the gemini-pro model
    modelName = "gemini-pro",
    // Access your API key as a Build Configuration variable (see "Set up your API key" above)
    apiKey = BuildConfig.apiKey
)

val prompt = "Write a story about a magic backpack."
val response = generativeModel.generateContent(prompt)
print(response.text)

根據(jù)文本和圖片輸入生成文本(多模式)

Gemini 提供了一個多模態(tài)模型 (gemini-pro-vision),因此您可以同時輸入文本和圖片。請務(wù)必查看提示的圖片要求。

當提示輸入同時包含文本和圖片時,請將 gemini-pro-vision 模型與 generateContent 結(jié)合使用以生成文本輸出:

val generativeModel = GenerativeModel(
    // For text-and-images input (multimodal), use the gemini-pro-vision model
    modelName = "gemini-pro-vision",
    // Access your API key as a Build Configuration variable (see "Set up your API key" above)
    apiKey = BuildConfig.apiKey
)

val image1: Bitmap = // ...
val image2: Bitmap = // ...

val inputContent = content {
    image(image1)
    image(image2)
    text("What's different between these pictures?")
}

val response = generativeModel.generateContent(inputContent)
print(response.text)

構(gòu)建多輪對話(聊天)

借助 Gemini,您可以構(gòu)建多輪自由對話。該 SDK 通過管理對話狀態(tài)簡化了流程,因此與 generateContent 不同,您無需自行存儲對話歷史記錄。

如需構(gòu)建多輪對話(如聊天),請使用 gemini-pro 模型,并通過調(diào)用 startChat() 來初始化聊天。然后,使用 sendMessage() 發(fā)送一條新用戶消息,此消息還會將該消息和響應(yīng)附加到聊天記錄中。

與對話內(nèi)容關(guān)聯(lián)的 role 有兩個可能的選項:

user:提供提示的角色。這是 sendMessage 調(diào)用的默認值。

model:提供響應(yīng)的角色。在使用現(xiàn)有 history 調(diào)用 startChat() 時,可以使用此角色。

注意 :gemini-pro-vision 模型(適用于文本和圖片輸入)尚未針對多輪對話進行優(yōu)化。請務(wù)必針對聊天用例使用 gemini-pro 和純文字輸入。

val generativeModel = GenerativeModel(
    // For text-only input, use the gemini-pro model
    modelName = "gemini-pro",
    // Access your API key as a Build Configuration variable (see "Set up your API key" above)
    apiKey = BuildConfig.apiKey
)

val chat = generativeModel.startChat(
    history = listOf(
        content(role = "user") { text("Hello, I have 2 dogs in my house.") },
        content(role = "model") { text("Great to meet you. What would you like to know?") }
    )
)

chat.sendMessage("How many paws are in my house?")

使用流式傳輸實現(xiàn)更快速的互動

默認情況下,模型會在完成整個生成過程后返回響應(yīng)。通過不等待整個結(jié)果,而是使用流式傳輸來處理部分結(jié)果,您可以實現(xiàn)更快的互動。

以下示例展示了如何使用 generateContentStream 實現(xiàn)流式傳輸,以根據(jù)文本和圖像輸入提示生成文本。

val generativeModel = GenerativeModel(
    // For text-and-image input (multimodal), use the gemini-pro-vision model
    modelName = "gemini-pro-vision",
    // Access your API key as a Build Configuration variable (see "Set up your API key" above)
    apiKey = BuildConfig.apiKey
)

val image1: Bitmap = // ...
val image2: Bitmap = // ...

val inputContent = content {
    image(image1)
    image(image2)
    text("What's the difference between these pictures?")
}

var fullResponse = ""
generativeModel.generateContentStream(inputContent).collect { chunk ->
    print(chunk.text)
    fullResponse += chunk.text
}

您可以在純文本輸入和聊天用例中使用類似方法:

// Use streaming with text-only input
generativeModel.generateContentStream(inputContent).collect { chunk ->
    print(chunk.text)
}
// Use streaming with multi-turn conversations (like chat)
val chat = generativeModel.startChat()
chat.sendMessageStream(inputContent).collect { chunk ->
    print(chunk.text)
}

實現(xiàn)高級用例

本快速入門的上一部分中介紹的常見用例可幫助您熟悉 Gemini API。本部分介紹了一些可能被視為更高級的用例。

計算令牌數(shù)

使用長提示時,在向模型發(fā)送任何內(nèi)容之前統(tǒng)計令牌數(shù)可能很有用。以下示例展示了如何針對各種用例使用 countTokens():

// For text-only input
val (totalTokens) = generativeModel.countTokens("Write a story about a magic backpack.")

// For text-and-image input (multi-modal)
val multiModalContent = content {
    image(image1)
    image(image2)
    text("What's the difference between these pictures?")
}

val (totalTokens) = generativeModel.countTokens(multiModalContent)

// For multi-turn conversations (like chat)
val history = chat.history
val messageContent = content { text("This is the message I intend to send")}
val (totalTokens) = generativeModel.countTokens(*history.toTypedArray(), messageContent)

用于控制內(nèi)容生成的選項

您可以通過配置模型參數(shù)和使用安全設(shè)置來控制內(nèi)容生成。、

配置模型參數(shù)

您發(fā)送到模型的每個提示都包含用于控制模型如何生成回答的參數(shù)值。對于不同的參數(shù)值,模型會生成不同的結(jié)果。詳細了解模型參數(shù)。

val config = generationConfig {
    temperature = 0.9f
    topK = 16
    topP = 0.1f
    maxOutputTokens = 200
    stopSequences = listOf("red")
}

val generativeModel = GenerativeModel(
    modelName = "MODEL_NAME",
    apiKey = BuildConfig.apiKey,
    generationConfig = config
)

使用安全設(shè)置

您可以使用安全設(shè)置來調(diào)整收到可能被視為有害的響應(yīng)的可能性。默認情況下,安全設(shè)置會在所有維度上屏蔽概率中等和/或高可能屬于不安全內(nèi)容的內(nèi)容。詳細了解安全設(shè)置。
下面是設(shè)置一項安全設(shè)置的具體方法:

val generativeModel = GenerativeModel(
    modelName = "MODEL_NAME",
    apiKey = BuildConfig.apiKey,
    safetySettings = listOf(
        SafetySetting(HarmCategory.HARASSMENT, BlockThreshold.ONLY_HIGH)
    )
)

您還可以設(shè)定多個安全設(shè)置:

val harassmentSafety = SafetySetting(HarmCategory.HARASSMENT, BlockThreshold.ONLY_HIGH)

val hateSpeechSafety = SafetySetting(HarmCategory.HATE_SPEECH, BlockThreshold.MEDIUM_AND_ABOVE)

val generativeModel = GenerativeModel(
    modelName = "MODEL_NAME",
    apiKey = BuildConfig.apiKey,
    safetySettings = listOf(harassmentSafety, hateSpeechSafety)
)

后續(xù)步驟

提示設(shè)計是創(chuàng)建提示以從語言模型引出所需回復的過程。編寫結(jié)構(gòu)合理的提示對于確保語言模型提供準確、高質(zhì)量的響應(yīng)至關(guān)重要。了解提示撰寫的最佳做法。

Gemini 提供了多種模型變體,以滿足不同用例的需求,例如輸入類型和復雜度、聊天或其他對話框語言任務(wù)的實現(xiàn),以及大小限制。了解可用的 Gemini 模型。

Gemini 提供用于請求提高速率限制的選項。Genmini Pro 模型的速率限制為每分鐘 60 個請求 (RPM)。

借助本快速入門中介紹的適用于 Android 的客戶端 SDK,您可以訪問在 Google 服務(wù)器上運行的 Genmini Pro 模型。對于涉及處理敏感數(shù)據(jù)、實現(xiàn)離線可用性的用例,或者需要為常用用戶流節(jié)省費用,您可能需要考慮訪問在設(shè)備上運行的 Gemini Nano。如需了解詳情,請參閱 Android(設(shè)備端)快速入門。文章來源地址http://www.zghlxwxcb.cn/news/detail-799593.html

到了這里,關(guān)于Android應(yīng)用程序中使用 Gemini Pro AI開發(fā)——2年工作經(jīng)驗如何淘汰10年工作經(jīng)驗的Android開發(fā)?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Elasticsearch:使用 Elastic APM 監(jiān)控 Android 應(yīng)用程序(一)

    Elasticsearch:使用 Elastic APM 監(jiān)控 Android 應(yīng)用程序(一)

    作者:Alexander Wert,?Cesar Munoz 人們通過私人和專業(yè)的移動應(yīng)用程序在智能手機上處理越來越多的事情。 擁有成千上萬甚至數(shù)百萬的用戶,確保出色的性能和可靠性是移動應(yīng)用程序和相關(guān)后端服務(wù)的提供商和運營商面臨的主要挑戰(zhàn)。 了解移動應(yīng)用程序的行為、崩潰的發(fā)生和類型

    2024年02月03日
    瀏覽(23)
  • Elasticsearch:使用 Elastic APM 監(jiān)控 Android 應(yīng)用程序(二)

    Elasticsearch:使用 Elastic APM 監(jiān)控 Android 應(yīng)用程序(二)

    在我之前的文章 “Elasticsearch:使用 Elastic APM 監(jiān)控 Android 應(yīng)用程序(一)” 中,我詳述了如何使用 Elastic APM 來監(jiān)控 Android 應(yīng)用程序。在今天的文章中,我來詳述如何部署 Elastic Stack,并使用文章中的示例代碼來進行展示。為了展示方便,在今天的展示中,我將所有的組件都安

    2023年04月22日
    瀏覽(23)
  • 如何使用 MongoDB 構(gòu)建采用 AI 技術(shù)的應(yīng)用程序

    使用MongoDB構(gòu)建采用AI技術(shù)的應(yīng)用程序通常涉及以下步驟: 確定應(yīng)用場景 : 首先,確定您的應(yīng)用程序如何使用AI。這可以包括機器學習(ML)、深度學習(DL)、自然語言處理(NLP)等。 確定您需要收集和處理的數(shù)據(jù)類型以及這些數(shù)據(jù)如何支持AI模型。 設(shè)計數(shù)據(jù)模型 : 根據(jù)

    2024年02月19日
    瀏覽(25)
  • 在基于 Android 相機預覽的 CV 應(yīng)用程序中使用 OpenCL

    在基于 Android 相機預覽的 CV 應(yīng)用程序中使用 OpenCL

    組裝和配置 Android OpenCL SDK。 示例的 JNI 部分依賴于標準 Khornos OpenCL 標頭,以及 OpenCL 和 libOpenCL.so 的C++包裝器。標準 OpenCL 標頭可以從 OpenCV 存儲庫中的第三方目錄或 Linux 發(fā)行版包中復制。C++包裝器在Github上的官方Khronos存儲庫中可用。按以下方式將頭文件復制到專用目錄:

    2024年01月21日
    瀏覽(25)
  • 使用 CameraX 在 Jetpack Compose 中構(gòu)建相機 Android 應(yīng)用程序

    使用 CameraX 在 Jetpack Compose 中構(gòu)建相機 Android 應(yīng)用程序

    CameraX 是一個 Jetpack 庫,旨在幫助簡化相機應(yīng)用程序的開發(fā)。 [camerax官方文檔] https://developer.android.com/training/camerax CameraX的幾個用例: Image Capture Video Capture Preview Image analyze 具體如何使用相關(guān)用例,請查看上面的官方鏈接。 下面僅就視頻錄制用例來敘述相關(guān)實現(xiàn)流程。 添加

    2024年02月06日
    瀏覽(49)
  • 如何使用KoodousFinder搜索和分析Android應(yīng)用程序中的安全威脅

    如何使用KoodousFinder搜索和分析Android應(yīng)用程序中的安全威脅

    KoodousFinder是一款功能強大的Android應(yīng)用程序安全工具,在該工具的幫助下,廣大研究人員可以輕松對目標Android應(yīng)用程序執(zhí)行安全研究和分析任務(wù),并尋找出目標應(yīng)用程序中潛在的安全威脅和安全漏洞。 在使用該工具之前,我們首選需要訪問該工具的【開發(fā)者門戶】創(chuàng)建一個

    2024年02月13日
    瀏覽(25)
  • 【AI大模型應(yīng)用開發(fā)】【LangChain系列】7. LangServe:輕松將你的LangChain程序部署成服務(wù)

    【AI大模型應(yīng)用開發(fā)】【LangChain系列】7. LangServe:輕松將你的LangChain程序部署成服務(wù)

    大家好,我是【同學小張】。持續(xù)學習,持續(xù)干貨輸出,關(guān)注我,跟我一起學AI大模型技能。 LangServe 用于將 Chain 或者 Runnable 部署成一個 REST API 服務(wù)。 同時安裝langserve的服務(wù)端和客戶端。 只安裝客戶端 只安裝服務(wù)端 1.1 服務(wù)端代碼 從代碼來看創(chuàng)建LangServe的重點: (1)創(chuàng)建

    2024年03月28日
    瀏覽(29)
  • [Mac軟件]MacCleaner 3 PRO 3.2.1應(yīng)用程序清理和卸載

    [Mac軟件]MacCleaner 3 PRO 3.2.1應(yīng)用程序清理和卸載

    MacCleaner PRO是一個應(yīng)用程序包,將幫助您清除磁盤空間并加快Mac的速度! MacCleaner PRO - 讓您的Mac始終快速、干凈和有條理。 App Cleaner Uninstaller PRO - 完全刪除未使用的應(yīng)用程序并管理Mac擴展。 磁盤空間分析儀PRO-分析磁盤空間的使用情況,并找到最龐大的內(nèi)容。 重復文件查找器

    2024年02月11日
    瀏覽(20)
  • AppSpider Pro 7.4.053 for Windows - Web 應(yīng)用程序安全測試

    AppSpider Pro 7.4.053 for Windows - Web 應(yīng)用程序安全測試

    AppSpider Pro 7.4.053 for Windows - Web 應(yīng)用程序安全測試 Rapid7 Dynamic Application Security Testing (DAST) 請訪問原文鏈接:https://sysin.org/blog/appspider/,查看最新版。原創(chuàng)作品,轉(zhuǎn)載請保留出處。 作者主頁:sysin.org appspider 保持步伐 收集測試當今不斷發(fā)展的應(yīng)用程序所需的信息。 降低風險 降

    2024年02月15日
    瀏覽(19)
  • 使用ReactNative構(gòu)建移動應(yīng)用程序中的AR應(yīng)用程序:了解ReactNative中的AR開發(fā)生態(tài)系統(tǒng)

    作者:禪與計算機程序設(shè)計藝術(shù) 在過去的幾年里,隨著VR、AR、移動互聯(lián)網(wǎng)等技術(shù)的不斷革新,人們越來越多地體驗到一種全新的生活方式。而其中不可或缺的部分就是數(shù)字化的現(xiàn)實世界。因為當代人的生活已經(jīng)離不開手機、平板電腦和電視機了,所以數(shù)字化現(xiàn)實世界的應(yīng)用

    2024年02月10日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包