Maison  >  Article  >  Quelle fonction Java puis-je utiliser sur macOS pour diffuser le son d'alerte approprié au volume approprié sur l'appareil approprié ?

Quelle fonction Java puis-je utiliser sur macOS pour diffuser le son d'alerte approprié au volume approprié sur l'appareil approprié ?

王林
王林avant
2024-02-22 12:40:20447parcourir

éditeur php Xiaoxin Dans la séance de questions-réponses Java, un lecteur a posé une question : « Quelle fonction Java puis-je utiliser sur macOS pour diffuser le son d'alarme approprié au volume approprié sur l'appareil approprié ? le contrôle de l'appareil pour qu'il émette des sons d'alarme sur le système doit être implémenté en combinaison avec la bibliothèque de traitement audio Java. Les méthodes de fonctionnement et les appels de fonction spécifiques peuvent être résolus par une étude approfondie des connaissances pertinentes en matière de traitement audio Java.

Contenu de la question

Je souhaite que mon application Java suive les paramètres macOS dans Paramètres système... lors de la lecture des sons d'alerte. › Son › Effets sonores .

Par exemple, chaque fois que quelqu'un appuie sur backspace et que le curseur se trouve à la position la plus à gauche dans jTextField, le programme émettra un "son d'alerte" configuré par l'utilisateur.

Il existe un besoin similaire de diffuser le même son d'alarme dans d'autres fonctions de mon application. Mais je n'ai pas trouvé de bibliothèque permettant à mon application de diffuser le "son d'alerte" approprié au système au volume approprié sur l'appareil approprié.

Je souhaite que mon application suive les paramètres système macOS suivants :

  • Sons d'alarme (noms des sons)
  • Jouer des effets sonores via (nom de l'appareil)
  • Volume de l'alarme (réglage du curseur)

Que dois-je faire ?

Solution

J'ai essayé Toolkit.beep sur Macos et il semble faire ce que vous voulez. Je n'ai pas vérifié que jtextfield appelle toolkit.beep, mais il semble l'appeler. On peut consulter le code source d'openjdk et peut-être avoir une meilleure idée.

Sous Windows, jtextfield semble utiliser un bip par défaut. Et boîte à outils.beep.

Tant que la boîte à outils par défaut fonctionne (ce qui fonctionne pour moi), vous pouvez placer les éléments suivants dans votre application partout où vous avez besoin d'alerter l'utilisateur.

toolkit tk = toolkit.getdefaulttoolkit();
tk.beep();

Ceci est mon exemple mcv.

import java.awt.event.*;
import java.awt.BorderLayout;
import java.awt.Toolkit;
import javax.swing.*;

public class Alert extends JFrame {
   private Toolkit tk = Toolkit.getDefaultToolkit();
   public Alert () {
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      JTextField tf = new JTextField();
      JButton bbeep = new JButton(new AbstractAction() {
         public void actionPerformed (ActionEvent e) {tk.beep();}
      });
      setLayout(new BorderLayout());
      getContentPane().add(tf, BorderLayout.NORTH);
      getContentPane().add(bbeep, BorderLayout.SOUTH);
      pack();
      setVisible(true);
   }

   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
         public void run() { new Alert(); }
      });
   }
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer