Ich habe eine Webanwendung, die Ereignisse und Audio von einem speziellen Mikrofon verarbeitet verarbeitet. Die Audiodaten werden von einem Java-Applet verarbeitet, das auf der Webseite ausgeführt wird. Andere Ereignisse (Mikrofonverbindung, Mikrofonverbindung getrennt, Mikrofonschaltfläche gedrückt) werden jedoch von einem ActiveX-Objekt verarbeitet.laden ActiveX-Objekt in Applet
Das ActiveX-Objekt einfängt diese Ereignisse und ruft JavaScript-Code ihnen
<!-- Load the ActiveX control -->
<object id="PhilipsSpeechMikeCtrl" width="0" height="0" tabindex="-1"
classid="CLSID:AAA44754-CC81-4692-91AF-7064E58EB22A"
standby="Loading Philips SpeechMike component..."
type="application/x-oleobject">
</object>
<script type="text/javascript">
// This is Microsofts javascript way of trapping ActiveX object events.
function PhilipsSpeechMikeCtrl::SPMEventDeviceConnected(deviceID) {
// Call JavaScript code to handle the microphone connected event
}
function PhilipsSpeechMikeCtrl::SPMEventDeviceDisconnected(deviceID) {
// Call JavaScript code to handle the microphone disconnected event
}
function PhilipsSpeechMikeCtrl::SPMEventButton(deviceID, eventId) {
// Call JavaScript code to handle the microphone button pressed event
}
</script>
Natürlich zu behandeln ein Problem bei diesem Ansatz ist, dass es völlig IE abhängig. Ich würde es vorziehen, das ActiveX-Objekt innerhalb des Applet zu laden, die Ereignisse dort einzufangen und die Ereignisse entweder innerhalb des Applet oder JavaScript-Code aus dem Applet zu behandeln. Dies sollte mir dann ermöglichen, die App in jedem Browser auszuführen, der Applets unterstützt.
Ich bin mir nicht ganz sicher, wie man die oben vorgeschlagene Lösung implementiert, irgendwelche Vorschläge?
Update: Ich realisiere, dass die Lösung, die ich oben vorgeschlagen habe, noch IE abhängig sein würde, das ist in Ordnung. Mein unmittelbares Ziel ist es, alle Browser unter Windows zu unterstützen.
Es wurde vorgeschlagen, anstelle von ActiveX könnte ich JNI (oder JNA) verwenden, um auf die DLLs zuzugreifen, die dem ActiveX-Objekt zugrunde liegen. Allerdings möchte ich die Funktionen in den DLLs nicht wirklich aufrufen, ich möchte, dass die DLLs mich aufrufen, d. H. Einen Ereignishandler registrieren.
Danke, Don
ActiveX wird in anderen Browsern nicht unterstützt, aber Java ist. Sie können ActiveX von Java aus aufrufen. –
Wie nennt man ein 'ActiveX-Steuerelement' (mit grafischen Komponenten) von Java? – GreatDane