段時間有給大家分享一個flutter3.x桌面端os系統。今天再分享一款最新原創之作uniapp-vue3-wechat聊天實例。
uni-vue3-wechat采用vue3 setup語法糖編碼開發,支持編譯到h5+小程序端+APP端。
使用HbuilderX 4.0.8編輯器開發項目,支持編譯到h5/小程序/App端。
/**
* 入口文件 main.js
*/
import { createSSRApp } from 'vue'
import App from './App'
// 引入pinia狀態管理
import pinia from '@/pinia'
export function createApp() {
const app=createSSRApp(App)
app.use(pinia)
return {
app,
pinia
}
}
該項目已經同步到櫥窗,如果有需要,歡迎去拍哈~
https://gf.bilibili.com/item/detail/1105801011
<script setup>
import { provide } from 'vue'
import { onLaunch, onShow, onHide, onPageNotFound } from '@dcloudio/uni-app'
onLaunch(()=> {
console.log('App Launch')
uni.hideTabBar()
loadSystemInfo()
})
onShow(()=> {
console.log('App Show')
})
onHide(()=> {
console.log('App Hide')
})
onPageNotFound((e)=> {
console.warn('Route Error:', `${e.path}`)
})
// 獲取系統設備信息
const loadSystemInfo=()=> {
uni.getSystemInfo({
success: (e)=> {
// 獲取手機狀態欄高度
let statusBar=e.statusBarHeight
let customBar
// #ifndef MP
customBar=statusBar + (e.platform=='android' ? 50 : 45)
// #endif
// #ifdef MP-WEIXIN
// 獲取膠囊按鈕的布局位置信息
let menu=wx.getMenuButtonBoundingClientRect()
// 導航欄高度=膠囊下距離 + 膠囊上距離 - 狀態欄高度
customBar=menu.bottom + menu.top - statusBar
// #endif
// #ifdef MP-ALIPAY
customBar=statusBar + e.titleBarHeight
// #endif
// 由于globalData在vue3 setup存在兼容性問題,改為provide/inject替代方案
provide('globalData', {
statusBarH: statusBar,
customBarH: customBar,
screenWidth: e.screenWidth,
screenHeight: e.screenHeight,
platform: e.platform
})
}
})
}
</script>
<style>
/* #ifndef APP-NVUE */
@import 'static/fonts/iconfont.css';
/* #endif */
</style>
<style lang="scss">
@import 'styles/reset.scss';
@import 'styles/layout.scss';
</style>
整體項目分為頂部導航+內容區+底部區三大模塊。
<!-- 公共布局模板 -->
<!-- #ifdef MP-WEIXIN -->
<script>
export default {
/**
* 解決小程序class、id透傳問題
* manifest.json中配置mergeVirtualHostAttributes: true, 在微信小程序平臺不生效,組件外部傳入的class沒有掛到組件根節點上,在組件中增加options: { virtualHost: true }
* https://github.com/dcloudio/uni-ui/issues/753
*/
options: { virtualHost: true }
}
</script>
<!-- #endif -->
<script setup>
const props=defineProps({
// 是否顯示自定義tabbar
showTabBar: { type: [Boolean, String], default: false },
})
</script>
<template>
<view class="uv3__container flexbox flex-col flex1">
<!-- 頂部插槽 -->
<slot name="header" />
<!-- 內容區 -->
<view class="uv3__scrollview flex1">
<slot />
</view>
<!-- 底部插槽 -->
<slot name="footer" />
<!-- tabbar欄 -->
<uv3-tabbar v-if="showTabBar" hideTabBar fixed />
</view>
</template>
<!-- 語音面板 -->
<view v-if="voicePanelEnable" class="uv3__voicepanel-popup">
<view class="uv3__voicepanel-body flexbox flex-col">
<!-- 取消發送+語音轉文字 -->
<view v-if="!voiceToTransfer" class="uv3__voicepanel-transfer">
<!-- 提示動效 -->
<view class="animtips flexbox" :class="voiceType==2 ? 'left' : voiceType==3 ? 'right' : null"><Waves :lines="[2, 3].includes(voiceType) ? 10 : 20" /></view>
<!-- 操作項 -->
<view class="icobtns flexbox">
<view class="vbtn cancel flexbox flex-col" :class="{'hover': voiceType==2}" @click="handleVoiceCancel"><text class="vicon uv3-icon uv3-icon-close"></text></view>
<view class="vbtn word flexbox flex-col" :class="{'hover': voiceType==3}"><text class="vicon uv3-icon uv3-icon-word"></text></view>
</view>
</view>
<!-- 語音轉文字(識別結果狀態) -->
<view v-if="voiceToTransfer" class="uv3__voicepanel-transfer result fail">
<!-- 提示動效 -->
<view class="animtips flexbox"><uni-icons type="info-filled" color="#fff" size="20"></uni-icons><text class="c-fff">未識別到文字</text></view>
<view class="icobtns flexbox">
<view class="vbtn cancel flexbox flex-col" @click="handleVoiceCancel"><text class="vicon uv3-icon uv3-icon-chexiao"></text>取消</view>
<view class="vbtn word flexbox flex-col"><text class="vicon uv3-icon uv3-icon-audio"></text>發送原語音</view>
<view class="vbtn check flexbox flex-col"><text class="vicon uv3-icon uv3-icon-duigou"></text></view>
</view>
</view>
<!-- 背景語音圖 -->
<view class="uv3__voicepanel-cover">
<image v-if="!voiceToTransfer" src="/static/voice_bg.webp" :webp="true" mode="widthFix" style="width: 100%;" />
</view>
<!-- // 提示文字 -->
<view v-if="!voiceToTransfer" class="uv3__voicepanel-tooltip">{{voiceTypeMap[voiceType]}}</view>
<!-- 背景圖標 -->
<view v-if="!voiceToTransfer" class="uv3__voicepanel-fixico"><text class="uv3-icon uv3-icon-audio fs-50"></text></view>
</view>
</view>
由于該項目涉及到的知識點還是蠻多的,這次就先分享到這里,感謝大家的閱讀。
機器之心報道
編輯:澤南、陳陳
Gemini Live 對標 GPT-4o,谷歌 AI 手機全家桶上線。
在 GPT-4o 進 iPhone 之前,谷歌 Gemini 搶先了一步完成了手機版的落地。
周三凌晨,在人們期待 OpenAI 「草莓大模型」的時候,谷歌在 Made by Google 活動上正式發布了 Gemini Live,以及一系列 Pixel 硬件產品。
今天的活動,谷歌充滿信心地進行了 100% 現場演示,雖然出現了一些小問題。
兩次讓手機識圖(不過用的是三星),都失敗了。
不過正如谷歌所說的,我們已經進入了「Gemini 的時代」。
在 Pixel 9 系列之后,今天發布的一系列 Gemini AI 功能也將隨安卓 15 出現在各種 Android 手機上。
Gemini Live:對標 GPT-4o,即刻上線
Gemini Live 是谷歌針對 OpenAI 高級語音模式推出的一款產品,該功能與 ChatGPT 幾乎完全相同,之前一直處于 alpha 測試階段。
Gemini Live 提供了一種移動對話體驗,可以讓用戶和 Gemini 展開自由流暢的對話,甚至可以像在普通電話中一樣打斷或改變話題,而無需打字。
谷歌在博客中這樣描述:你可以與 Gemini Live (通過 Gemini app)交談,并從 10 種新的自然聲音中選擇一種來回應,(而 OpenAI 僅提供 3 種聲音)。你甚至可以按照自己的節奏說話,或者在回答過程中打斷它并提出其他問題,就像在平時對話中一樣。
<script src="https://lf6-cdn-tos.bytescm.com/obj/cdn-static-resource/tt_player/tt.player.js?v=20160723"></script>
Gemini Live 是可以直接喚醒的,你可以在應用程序在后臺運行或手機鎖屏時繼續與 Gemini 對話,且對話可以隨時暫停和恢復。
Gemini Live 還將與多種安卓應用的功能(如 Keep)集成,從而提高 Gemini 的可用性。
今日起,谷歌開始在 Android 手機的 Gemini Advanced 用戶推出該功能,僅限英語,并將在未來幾周內擴展到 iOS 和更多語言版本。
不過,在現場演示中,當現場人員問到演唱會海報的相關信息時,Gemini Live 失敗了兩次,需要演示者更換手機才能正常工作。雖然演示過程中遇到了一些問題,但最終成功了,Gemini Live 最終從圖片中提取相關信息并連接日歷,為用戶提供了準確結果。
視頻鏈接:https://mp.weixin.qq.com/s?__biz=MzA3MzI4MjgzMw==&mid=2650930230&idx=2&sn=822b96951da8ef70408c0c546c6c5ae5&chksm=84e43848b393b15e320f663d6c311ccab54157b0885da6dee24ce8e5260beed4153dfb2a432a&token=2010422951&lang=zh_CN#rd
值得注意的是,據產品經理 Leland Rechis 介紹,谷歌不允許 Gemini Live 模仿這 10 種聲音以外的任何聲音。谷歌這樣做可能是為了避免與版權法發生沖突。此前,OpenAI 就因為使用了寡姐的聲音而被后者告到法庭。
總體而言,該功能似乎是一種比使用簡單的 Google 搜索更自然地深入研究主題的好方法。谷歌指出,Gemini Live 是 Project Astra 邁出的一步,Project Astra 是該公司在 Google I/O 期間首次亮相的多模態 AI 模型。目前,Gemini Live 僅支持語音對話,谷歌希望在未來增加實時視頻理解功能。
芯片加持,谷歌硬件全家桶來了
在 Gemini Live 推出的同時,谷歌也推出了新一代智能硬件設備,比蘋果和華為更早。
今天凌晨新發布的硬件包括 Pixel 9、Pixel 9 Pro 和 Pixel 9 Pro XL,還有一款折疊屏手機 Pixel 9 Pro Fold,它們均由全新的 Google Tensor G4 芯片提供支持,可以帶來各種生成式 AI 能力。
Pixel 9 手機采用全新外觀,將攝像頭置于正面和中心位置,改進了標志性的攝像頭模組,提升了手感。谷歌宣稱,這些手機的耐用性是 Pixel 8 的兩倍。
這一次,Pixel Pro 機型首次提供兩種不同尺寸:Pixel 9 Pro(6.3 英寸)和 Pixel 9 Pro XL(6.8 英寸),均配備了 Super Actua 顯示屏、42 MP 前置攝像頭。除了顯示屏尺寸、充電速度和電池外,Pixel 9 Pro 和 Pixel 9 Pro XL 擁有相同的規格和功能。
值得注意的是,Pixel 9 手機采用谷歌全新的定制芯片 Tensor G4。這是全新一代高性能手機芯片,旨在改善日常用例,例如更快地打開應用程序、瀏覽網頁等等。
Tensor G4 由 Google DeepMind 設計,三星代工生產,使用 Arm 架構。經過優化,G4 可運行最先進的人工智能模型。它將是第一款運行多模態 Gemini Nano 模型的處理器 —— 僅在手機端側,就可以實現大模型理解文本、圖像和音頻等任務。
從目前的消息可知,Tensor G4 與前代產品相同,使用的核心是當前一代的技術 —— 這意味著它很快會在 9 月份成為落后的芯片組,名為 Mali 的靜態 GPU 核心也意味著不支持光線追蹤(支持的版本名為 Immortalis)。盡管如此,自己和自己比,相對前一代產品的性能提升還是很可觀的。
當然,作為 DeepMind 參與研發的芯片,Tensor G4 擁有不錯的 AI 算力,谷歌透露它擁有「業界領先」的每秒 45 token 輸出速度。
為了確保設備上的 AI 體驗運行順暢,谷歌也升級了 Pixel 9 系列的內存,它們配備 12GB RAM,Pixel 9 Pro 和 Pixel 9 Pro XL 配備 16GB RAM。
Pixel 系列一直是谷歌技術應用的標桿,新的手機接入了 Gemini Live,且將在 8 月開賣。谷歌表示,Pixel 9 Pro、Pixel 9 Pro XL 和 Pixel 9 Pro Fold 用戶在購買手機后均可享受一年的 Gemini Advanced 訂閱。看來相比搭載 OpenAI 大模型的 iPhone 16 系列,谷歌這次做到了快人一步。
谷歌介紹了 Pixel 的一系列生成式 AI 能力。
其中,Pixel Studio 可以幫助你在手機上就能將想法轉化為圖像。它由運行在 Tensor G4 上的設備端擴散模型和云端的 Imagen 3 文本到圖像模型相結合而成。
谷歌的文生圖新模型 Imagen 3 最早是在 5 月份的 I/O 大會上發布的。該模型在生成細節、光照、干擾等方面進行了優化升級,并且理解 Prompt 的能力顯著增強。隨著今天的發布會,Google DeepMind 在 arXiv 上提交了 Imagen 3 的論文:
Pixel Screenshots 可幫助你保存、整理和回憶想要記住的重要信息,以供日后使用。
假設你有朋友喜歡松鼠,她即將過生日。你可以在 Google Chrome 上尋找禮物,截取松鼠襯衫、松鼠杯墊等所有松鼠相關的東西的屏幕截圖。Pixel Screenshots 將分析所有這些圖像的內容,并幫你在應用中搜索這些信息。隨后,你只需打開應用并搜索「松鼠」,這些結果就會彈出。它還會包含你找到的所有內容的鏈接,以及正在查看的內容的摘要和相關信息。
人們在手機上最常做的事情之一就是查看天氣。Pixel Weather 可以提供更加精確的天氣信息,Gemini Nano 還會生成自定義人工智能天氣報告,讓人們了解當天的天氣情況。
在所有手機都卷的拍照上,Pixel 9 增加了 AI 拍攝功能來提升出片效率。
通常,集體照中會遺漏一位指定攝影師。使用 Add Me,你就可以與在場的每個人合影,而無需攜帶三腳架或向陌生人尋求幫助。
利用重新設計的 Panorama,現在即使在弱光下也能拍攝出細節豐富的照片。這是所有智能手機上質量最高的弱光全景圖。
此外,Google Photos 中的 Magic Editor 具有新的編輯功能,你可以拍攝出想要的照片,自動取景功能可以重新構圖,你只需輸入想要看到的內容(例如:在空曠的田野中添加野花)即可以給照片重新構圖,把想法變為現實。
大模型的智能通話記錄現在也被集成在了安卓系統重。Clear Calling 功能進一步提高了音頻質量,新的通話記錄(Call Notes)功能會在用戶掛斷電話后立即發送私人摘要和完整的通話記錄。因此,當你接到回電時,無需手忙腳亂地尋找紙筆進行記錄。為了保護隱私,通話記錄完全在設備上運行。
最新的 Pixel 9 設備是首批配備全新衛星 SOS 功能的 Android 手機,因此,即使沒有移動網絡,用戶也可以通過衛星聯系緊急救援人員并分享位置。衛星 SOS 將首先在美國的 Pixel 9 設備上推出,無論你使用的運營商套餐是什么。在 Pixel 上的前兩年,此功能將免費提供。
最后是定價,Pixel 9、Pixel 9 Pro 和 Pixel 9 Pro XL 均已開放預訂,起價分別為 799 美元、999 美元和 1099 美元。Pixel 9 和 Pixel 9 Pro XL 將于 8 月 22 日在 Google 商店和谷歌零售合作伙伴上市。Pixel 9 Pro 將于 9 月 4 日在美國上市,同時 Pixel 9 Pro Fold 也將在接下來的幾周內在其他市場上市。
參考內容:
https://blog.google/products/pixel/google-pixel-9-pro-xl/
https://www.androidauthority.com/google-tensor-g4-explained-3466184/