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)播放微信來電語音 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模擬微信來電提醒的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
springboot集成fastDfs過程代碼實(shí)例
這篇文章主要介紹了springboot集成fastDfs過程代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
線程池運(yùn)用不當(dāng)引發(fā)的一次線上事故解決記錄分析
遇到了一個(gè)比較典型的線上問題,剛好和線程池有關(guān),另外涉及到死鎖、jstack命令的使用、JDK不同線程池的適合場景等知識(shí)點(diǎn),同時(shí)整個(gè)調(diào)查思路可以借鑒,特此記錄和分享一下2024-01-01
java開發(fā)使用StringUtils.split避坑詳解
這篇文章主要為大家介紹了java開發(fā)使用StringUtils.split避坑詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
SpringBoot 自定義+動(dòng)態(tài)切換數(shù)據(jù)源教程
這篇文章主要介紹了SpringBoot 自定義+動(dòng)態(tài)切換數(shù)據(jù)源教程,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
IDEA運(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-11
SpringBoot實(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è)比較好用的方法,那就是對字符串中的字母大小進(jìn)行轉(zhuǎn)換,所以下面這篇文章主要給大家介紹了關(guān)于如何使用Java實(shí)現(xiàn)大小寫轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考下2022-06-06

