Java 类 TrayIcon,通知消息。如何用自定义声音替换系统声音?

Posted

技术标签:

【中文标题】Java 类 TrayIcon,通知消息。如何用自定义声音替换系统声音?【英文标题】:Java class TrayIcon, notification message. How to replace system sound with a custom one? 【发布时间】:2021-02-15 04:01:22 【问题描述】:

也许我需要静音系统声音并播放我的?有什么 exec 命令可以做到这一点吗?

更新:Windows 托盘上工作通知的重要组成部分

public void notifyIt() 
    if (SystemTray.isSupported()) 
        try 
            mPromptClock.displayTray();
         catch (AWTException e) 
            e.printStackTrace();
        
     else 
        System.err.println("System tray not supported!");
    


private void displayTray() throws AWTException 
    SystemTray tray = SystemTray.getSystemTray();
    File f = new File("./src/res/0.jpg");
    BufferedImage image = null;
    try 
        image = ImageIO.read(f);
     catch (IOException e) 
        e.printStackTrace();
    
    TrayIcon trayIcon = new TrayIcon(image, "Vaqt  bo'ldi");
    trayIcon.setImageAutoSize(true);
    trayIcon.setToolTip("1st message");
    tray.add(trayIcon);
    trayIcon.displayMessage("2nd message"+navbat, "Vaqtingiz bo'ldi", TrayIcon.MessageType.INFO);//Navbat

【问题讨论】:

嘿,那些超级 puper java 开发者在哪里 :( 。我无法在我的应用程序中替换 TrayIcon,因为它不会在打字时干扰。 【参考方案1】:

您无法使用 TrayIcon 执行此操作。

TrayIcon 的原生实现 displayMessage calls Shell_NotifyIconW 显示通知。您传递给此函数的 NOTIFYICONDATAW 数据不提供使用自定义音频文件的方法,但您可以设置 dwInfoFlags (NIIF_NOSOUND) 来禁用播放的声音。 TrayIcon 没有公开设置此集合的方法。

如果您想要相同的通知行为,您必须自己调用此函数并自己播放自己的声音。

【讨论】:

以上是关于Java 类 TrayIcon,通知消息。如何用自定义声音替换系统声音?的主要内容,如果未能解决你的问题,请参考以下文章

如何用Java程序来编写一个异常?

如何用Java编写一段代码引发内存泄露

ava SystemTray类(系统托盘)和TrayIcon类(托盘图标)

如何用 Python 发送告警通知到微信?

如何用WPF实现一个最简单的Mvvm示例

重磅消息!如何用一段代码证明JVM加载类是懒加载模式