Java模擬微信來電提醒示例
引言
前幾天在抖音刷到一個(gè)老哥做的章魚哥來電提醒,感覺挺好玩的,于是就用Java搞了一個(gè)。
大致流程如下
- 章魚哥來電提醒
- 文本一朗讀
- 點(diǎn)擊鼠標(biāo)特效,緊接著攝像機(jī)移動(dòng)到電腦右下角
- 中間穿插這章魚哥朗誦視頻(無聲,聲源是文本內(nèi)容)
- 右下角彈出章魚哥來電提醒
- 右下角來電倒計(jì)時(shí)+文本二+文本三
- 播放章魚哥朗誦 章魚哥朗誦視頻+zhyg.wav聲音
開搞 ??!
效果圖如下
代碼思路
是用java.swing 的 JFrame做的,它原生的按鈕太難看,于是想著用Jlabel放個(gè)圖片,加個(gè)監(jiān)聽時(shí)間,代替按鈕的功能。
//去掉窗口的裝飾,title,最大化,最小,關(guān)閉按鈕 this.setUndecorated(true);
章魚哥的頭像是用PS處理過的,調(diào)試了一下大小,圖片的像素是100 x 100,使用的網(wǎng)格布局GridLayout,會(huì)自動(dòng)往右邊排列。
//章魚哥頭像 JLabel jLabel = new JLabel(); jLabel.setPreferredSize(new Dimension(100, 100)); //把圖片放到resource下面,最好是用PS導(dǎo)出png透明格式 URL url = ImageIcon.class.getResource("/zhyg.png"); Icon icon = new ImageIcon(url); jLabel.setIcon(icon); jHeadPanel.add(jLabel);
中間的倒計(jì)時(shí)是JTextField,設(shè)置一下字體格式,楷體,30大小就行, 接聽按鈕和掛斷按鈕是像素是40 x 40,上面還有兩個(gè)透明的JLabel用來占位置,要不然按鈕會(huì)顯示在上面。
值得一提的是,播放音頻的時(shí)候需要啟動(dòng)一個(gè)線程,要不然會(huì)阻塞,意思是代碼執(zhí)行完了才會(huì)執(zhí)行,或者播放完了才會(huì)執(zhí)行倒計(jì)時(shí),反正各種奇怪的問題。
//啟動(dòng)播放微信來電語(yǔ)音 PlayMp3 p = new PlayMp3(); new Thread(p).start();
加載音樂的時(shí)候試了下mp3格式的,好像不行,可以用ffmpge或者AE處理一下,導(dǎo)出wav格式的,家里有條件的可以買正版軟件。
File f = new File("wechat_call.wav"); URI uri2 = f.toURI(); URL url2 = uri2.toURL(); //這里處理了一下加載路徑的位置,要不然加載不到,這個(gè)URI和File加載的方式不一樣 String filename = url2.toString().replace("wechat_call.wav", "mail/src/main/resources/wechat_call.wav"); URL url = URI.create(filename).toURL(); AudioClip clip = Applet.newAudioClip(url); // 控制音樂的播放與停止 clip.play(); Thread.sleep(10000); clip.stop();
總結(jié)
起初我以為Java做不出來這個(gè)效果,沒想到還挺神似的,就是細(xì)節(jié)方面沒有處理,大概實(shí)現(xiàn)了一下,之后打算加個(gè)待辦列表,倒計(jì)時(shí)的時(shí)候提醒這個(gè)。有機(jī)會(huì)的話用Java Swing畫一下微信裝裝X,點(diǎn)擊通話的時(shí)候再顯示這個(gè)就更真實(shí)了,以假亂真。
以上就是Java模擬微信來電提醒示例的詳細(xì)內(nèi)容,更多關(guān)于Java模擬微信來電提醒的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
springboot集成fastDfs過程代碼實(shí)例
這篇文章主要介紹了springboot集成fastDfs過程代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12Java?Apache?common-pool對(duì)象池介紹
這篇文章主要介紹了Java Apache?common-pool對(duì)象池介紹,文章通過圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下2022-09-09線程池運(yùn)用不當(dāng)引發(fā)的一次線上事故解決記錄分析
遇到了一個(gè)比較典型的線上問題,剛好和線程池有關(guān),另外涉及到死鎖、jstack命令的使用、JDK不同線程池的適合場(chǎng)景等知識(shí)點(diǎn),同時(shí)整個(gè)調(diào)查思路可以借鑒,特此記錄和分享一下2024-01-01java開發(fā)使用StringUtils.split避坑詳解
這篇文章主要為大家介紹了java開發(fā)使用StringUtils.split避坑詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11SpringBoot 自定義+動(dòng)態(tài)切換數(shù)據(jù)源教程
這篇文章主要介紹了SpringBoot 自定義+動(dòng)態(tài)切換數(shù)據(jù)源教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12IDEA運(yùn)行SpringBoot項(xiàng)目的超詳細(xì)步驟截圖
在當(dāng)前的開發(fā)中Spring Boot開發(fā)框架已經(jīng)成為主流,下面這篇文章主要給大家介紹了關(guān)于IDEA運(yùn)行SpringBoot項(xiàng)目的超詳細(xì)步驟截圖,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11SpringBoot實(shí)現(xiàn)多租戶架構(gòu)
在SpringBoot中可以通過多數(shù)據(jù)源和動(dòng)態(tài)路由來實(shí)現(xiàn)多租戶機(jī)制,本文主要介紹了SpringBoot實(shí)現(xiàn)多租戶架構(gòu),具有一定的參考價(jià)值,感興趣的可以里哦啊接一下2024-03-03使用Java實(shí)現(xiàn)大小寫轉(zhuǎn)換實(shí)例代碼
最近在開發(fā)項(xiàng)目中遇到一個(gè)比較好用的方法,那就是對(duì)字符串中的字母大小進(jìn)行轉(zhuǎn)換,所以下面這篇文章主要給大家介紹了關(guān)于如何使用Java實(shí)現(xiàn)大小寫轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考下2022-06-06