Java simule le rappel d'appel WeChat

Il y a quelques jours sur Douyin, j'ai reçu un appel d'une pieuvre passé par un frère aîné, c'était très intéressant, alors j'en ai passé un à Java.

Le processus général est le suivant

  1. rappel d'appel de poulpe
  2. lecture de texte
  3. Cliquez sur l'effet de la souris, puis déplacez la caméra vers le coin inférieur droit de l'ordinateur
  4. Entrecoupé de cette vidéo de récitation de poulpe (silencieux, la source sonore est le contenu du texte)
  5. Dans le coin inférieur droit, le rappel d'appel de Brother Octopus apparaît
  6. Compte à rebours des appels entrants dans le coin inférieur droit + texte deux + texte trois
  7. Lire Octopus récitant Octopus récitant vidéo + son zhyg.wav

Faisons-le! !

Les rendus sont les suivants (je ne posterai pas de vidéo, juste la regarder)

image.png

image.png

image.png

image.png

L'idée de code est la suivante : Il est fait de JFrame de java.swing Son bouton natif est trop moche, j'ai donc pensé à utiliser Jlabel pour mettre une image et ajouter un temps de surveillance pour remplacer la fonction du bouton.

//去掉窗口的装饰,title,最大化,最小,关闭按钮
this.setUndecorated(true);

L'avatar de Brother Octopus a été traité avec PS, et la taille a été ajustée. Les pixels de l'image sont de 100 x 100. La disposition de la grille utilisée sera automatiquement disposée à droite.

//章鱼哥头像
JLabel jLabel = new JLabel();
jLabel.setPreferredSize(new Dimension(100, 100));
//把图片放到resource下面,最好是用PS导出png透明格式
URL url = ImageIcon.class.getResource("/zhyg.png");
Icon icon = new ImageIcon(url);
jLabel.setIcon(icon);
jHeadPanel.add(jLabel);

Le compte à rebours au milieu est JTextField, définissez le format de la police, l'italique, la taille 30, le bouton de réponse et le bouton de raccrochage sont de 40 x 40 pixels, et il y a deux JLabels transparents dessus pour occuper l'espace, sinon le bouton sera affiché dessus.

Il convient de mentionner qu'un thread doit être démarré lors de la lecture audio, sinon il se bloquera, ce qui signifie que le code sera exécuté une fois l'exécution terminée, ou le compte à rebours sera exécuté une fois la lecture terminée. de problèmes étranges.

//启动播放微信来电语音
PlayMp3 p = new PlayMp3();
new Thread(p).start();

Lors du chargement de la musique, j'ai essayé le format mp3, mais cela ne semble pas fonctionner. Je peux utiliser ffmpge ou AE pour le traiter et l'exporter au format wav. Si vous avez les conditions à la maison, vous pouvez acheter un logiciel authentique.

 File f = new File("wechat_call.wav");
            URI uri2 = f.toURI();
            URL url2 = uri2.toURL();
            //这里处理了一下加载路径的位置,要不然加载不到,这个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();

Résumé : Au début, je pensais que Java ne pouvait pas obtenir cet effet, mais je ne m'attendais pas à ce qu'il soit tout à fait similaire, mais les détails n'ont pas été traités. Je m'en suis probablement rendu compte, puis j'ai prévu d'ajouter une tâche liste et rappelez-le lorsque le compte à rebours est terminé. Si vous en avez la possibilité, utilisez Java Swing pour dessiner WeChat prétendre X, puis affichez-le lorsque vous cliquez pour appeler, ce sera plus réel et ce sera faux.

Je suppose que tu aimes

Origine juejin.im/post/7120584877879066660
conseillé
Classement