Pregunta

Estoy revisando un programa de estación de escáner de ID que construimos hace años y tengo una solicitud de los usuarios para hacer un pitido del sistema. Estamos considerando mover el sistema a un navegador web, pero ¿es posible invocar un pitido de altavoz a través de JavaScript o algo así? No necesita ser compatible con varios navegadores, pero probablemente deba funcionar en Windows o Linux. Las estaciones en cuestión no están equipadas con una tarjeta de sonido o altavoces externos , de ahí la solicitud de acceso a un altavoz para PC.

Sé que alguien lo va a decir, así que abordaré esto por adelantado: no me importa lo que pienses sobre las aplicaciones que hacen ruido, esto no es para ti . Los usuarios lo solicitan, tiene sentido, y el escáner de hardware ya hace ruido de todos modos. Sí, brindamos retroalimentación visual, con texto y color distinguibles, pero descubrimos que las personas aceptan el pitido existente como retroalimentación positiva y ayudaría a agregar más contexto de audio.

¿Fue útil?

Solución

Usar JavaScript es imposible: JavaScript no tiene acceso a la computadora cliente, excepto las cookies y el nuevo almacenamiento local HTML5.

Sin embargo, lo que puede hacer es usar un applet de Java que se pueda controlar a través de JavaScript, oculto o no.

Puede encontrar un ejemplo aquí .

Esto requiere que Java runtime esté instalado en la computadora cliente.

Otros consejos

Es posible con JavaScript hoy.

Aquí hay un rápido & amp; función sucia que escribí ...

var beep = function(duration, type, finishedCallback) {

    if (!(window.audioContext || window.webkitAudioContext)) {
        throw Error("Your browser does not support Audio Context.");
    }

    duration = +duration;

    // Only 0-4 are valid types.
    type = (type % 5) || 0;

    if (typeof finishedCallback != "function") {
        finishedCallback = function() {};   
    }

    var ctx = new (window.audioContext || window.webkitAudioContext);
    var osc = ctx.createOscillator();

    osc.type = type;

    osc.connect(ctx.destination);
    osc.noteOn(0);

    setTimeout(function() {
        osc.noteOff(0);
        finishedCallback();
    }, duration);

};

jsFiddle .

Pruebe de la siguiente manera: puede ser fácil para usted ...

function play_beep() {
  var snd = new Audio("http://www.externalharddrive.com/waves/computer/hello.wav");
  snd.play();
  return false;
}
<input type="submit" value="Play Beep" onclick="return play_beep();" />

Creo que tu mejor opción sería un applet de Java haciendo el trabajo ...

Esto no es posible con Javascript nativo. Sin embargo, podría escribir un control ActiveX para hacerlo.

La solución de Alex me dio TypeError no capturado: osc.noteOn no es una función

Sin embargo, esto lo hizo:

Play = (function() {
  
  var ctx = new(AudioContext || webkitAudioContext);
  
  return function(duration, freq, finishedCallback) {
    duration = +duration;
    if (typeof finishedCallback != "function") {
      finishedCallback = function() {};
    }
    var osc = ctx.createOscillator();
    osc.type = 0;
    osc.connect(ctx.destination);
    osc.frequency.value = freq;
    
    if (osc.start) osc.start();
    else osc.noteOn(0);
    
    setTimeout(
      function() {
        if (osc.stop) osc.stop(0);
        else osc.noteOff(0);
        finishedCallback();
      }, duration
    );
  };
})();
Play(42, 666)

Lo tomó desde aquí

Espero que esto te ahorre algo de tiempo

Sinceramente, no he probado esto, pero valdría la pena echarle un vistazo,

Java real cómo emitir un pitido pero depende de que pueda asegurarse de que su cliente tenga instalada una versión adecuada del JDK en cada máquina a la que se dirige.

En realidad, esto es posible, probablemente debido a las nuevas funciones implementadas en Java mientras tanto. Aquí hay un breve ejemplo:

var context = new AudioContext();
var o = context.createOscillator();
o.type = "sine";
o.connect(context.destination);
o.start();
setTimeout(function(){ 
        o.stop();
}, 100);

Para obtener más información, visite este sitio https: // marcgg. com / blog / 2016/11/01 / javascript-audio / donde encontré la solución.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top