Author: solomax
Date: Tue Jan 14 16:24:44 2014
New Revision: 1558098
URL: http://svn.apache.org/r1558098
Log:
[OPENMEETINGS-857] possibility to play sound on screensharing disconnect is
added; code clean up
Added:
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/AudioTone.java
Modified:
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPSScreenShare.java
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPScreenShare.java
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPTScreenShare.java
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenSharerFrame.java
Added:
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/AudioTone.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/AudioTone.java?rev=1558098&view=auto
==============================================================================
---
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/AudioTone.java
(added)
+++
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/AudioTone.java
Tue Jan 14 16:24:44 2014
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") + you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.screen.webstart;
+
+import javax.sound.sampled.AudioFormat;
+import javax.sound.sampled.AudioSystem;
+import javax.sound.sampled.LineUnavailableException;
+import javax.sound.sampled.SourceDataLine;
+
+public class AudioTone {
+ public static final float SAMPLE_RATE = 44100F;
+
+ public static void play() {
+ byte[] buf = new byte[1];
+
+ SourceDataLine sdl = null;
+ try {
+ AudioFormat af = new AudioFormat(SAMPLE_RATE, 8, 1, true,
false);
+ sdl = AudioSystem.getSourceDataLine(af);
+ sdl = AudioSystem.getSourceDataLine(af);
+ sdl.open(af);
+ sdl.start();
+ for (int i = 0; i < (int)SAMPLE_RATE; ++i) {
+ double angle = i / (SAMPLE_RATE / 440) * 2.0 * Math.PI;
+ buf[0] = (byte) (Math.sin(angle) * 128);
+ sdl.write(buf, 0, 1);
+ }
+ } catch (LineUnavailableException e) {
+ //no-op
+ } finally {
+ if (sdl != null) {
+ sdl.drain();
+ sdl.stop();
+ sdl.close();
+ }
+ }
+ }
+}
Modified:
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java?rev=1558098&r1=1558097&r2=1558098&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
(original)
+++
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
Tue Jan 14 16:24:44 2014
@@ -81,6 +81,7 @@ public class CoreScreenShare implements
public float Ampl_factor = 1f;
public boolean isConnected = false;
private boolean readyToRecord = false;
+ private boolean audioNotify = false;
public Map<Integer, Boolean> currentPressedKeys = new HashMap<Integer,
Boolean>();
@@ -671,4 +672,12 @@ public class CoreScreenShare implements
log.error("[resultReceived]", err);
}
}
+
+ public boolean isAudioNotify() {
+ return audioNotify;
+ }
+
+ public void setAudioNotify(boolean audioNotify) {
+ this.audioNotify = audioNotify;
+ }
}
Modified:
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPSScreenShare.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPSScreenShare.java?rev=1558098&r1=1558097&r2=1558098&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPSScreenShare.java
(original)
+++
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPSScreenShare.java
Tue Jan 14 16:24:44 2014
@@ -31,9 +31,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class RTMPSScreenShare extends RTMPSClient implements
ClientExceptionHandler, IScreenShare {
-
- private static final Logger logger = LoggerFactory
- .getLogger(RTMPSScreenShare.class);
+ private static final Logger logger =
LoggerFactory.getLogger(RTMPSScreenShare.class);
private CoreScreenShare core = null;
@@ -76,6 +74,9 @@ public class RTMPSScreenShare extends RT
public void connectionClosed(RTMPConnection conn, RTMP rtmp) {
logger.debug("connection closed");
super.connectionClosed(conn, rtmp);
+ if (core.isAudioNotify()) {
+ AudioTone.play();
+ }
core.stopStream();
}
Modified:
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPScreenShare.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPScreenShare.java?rev=1558098&r1=1558097&r2=1558098&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPScreenShare.java
(original)
+++
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPScreenShare.java
Tue Jan 14 16:24:44 2014
@@ -28,9 +28,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class RTMPScreenShare extends RTMPClient implements
ClientExceptionHandler, IScreenShare {
-
- private static final Logger logger = LoggerFactory
- .getLogger(RTMPScreenShare.class);
+ private static final Logger logger =
LoggerFactory.getLogger(RTMPScreenShare.class);
private CoreScreenShare core = null;
@@ -58,6 +56,9 @@ public class RTMPScreenShare extends RTM
public void connectionClosed(RTMPConnection conn, RTMP rtmp) {
logger.debug("connection closed");
super.connectionClosed(conn, rtmp);
+ if (core.isAudioNotify()) {
+ AudioTone.play();
+ }
core.stopStream();
}
Modified:
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPTScreenShare.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPTScreenShare.java?rev=1558098&r1=1558097&r2=1558098&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPTScreenShare.java
(original)
+++
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/RTMPTScreenShare.java
Tue Jan 14 16:24:44 2014
@@ -56,6 +56,9 @@ public class RTMPTScreenShare extends RT
public void connectionClosed(RTMPConnection conn, RTMP rtmp) {
logger.debug("connection closed");
super.connectionClosed(conn, rtmp);
+ if (core.isAudioNotify()) {
+ AudioTone.play();
+ }
core.stopStream();
}
Modified:
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenSharerFrame.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenSharerFrame.java?rev=1558098&r1=1558097&r2=1558098&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenSharerFrame.java
(original)
+++
openmeetings/trunk/singlewebapp/src/screenshare/java/org/apache/openmeetings/screen/webstart/gui/ScreenSharerFrame.java
Tue Jan 14 16:24:44 2014
@@ -39,6 +39,7 @@ import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.ImageIcon;
import javax.swing.JButton;
+import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
@@ -108,6 +109,7 @@ public class ScreenSharerFrame extends J
private String reduceYLabel;
private String recordingTipLabel;
private String publishingTipLabel;
+ private JCheckBox audioNotify;
private class PublishTextField extends JTextField {
private static final long serialVersionUID =
-2104245360975135871L;
@@ -281,6 +283,14 @@ public class ScreenSharerFrame extends J
JLabel lblSelectArea = new JLabel(getTextLabel(textLabels, 4));
//#id 734
JPanel panelStatus = new JPanel();
+ audioNotify = new JCheckBox(getTextLabel(textLabels, 36));
//#id 1589
+ audioNotify.setBackground(Color.WHITE);
+ audioNotify.setSelected(core.isAudioNotify());
+ audioNotify.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ core.setAudioNotify(audioNotify.isSelected());
+ }
+ });
GroupLayout gl_contentPane = new GroupLayout(contentPane);
gl_contentPane.setHorizontalGroup(
@@ -289,7 +299,9 @@ public class ScreenSharerFrame extends J
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addGap(7)
-
.addComponent(lblStartSharing))
+
.addComponent(lblStartSharing)
+ .addGap(15)
+
.addComponent(audioNotify))
.addGroup(gl_contentPane.createSequentialGroup()
.addGap(21)
.addComponent(btnStartStopSharing, 200, 200, 200)
@@ -315,7 +327,7 @@ public class ScreenSharerFrame extends J
.addComponent(lblStartSharing)
.addGap(4)
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
-
.addComponent(btnStartStopSharing, 32, 32, 32)
+
.addComponent(btnStartStopSharing, 32, 32, 32).addComponent(audioNotify, 32,
32, 32)
)
.addGap(4)
.addComponent(lblSelectArea)