<library> | |
<!-- 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. --> | |
<!--- extends the baseVideoStream with functions to catch Device Events | |
this Class uses Events from the Base Class baseVideoStream onmicro and oncamera, | |
which are thrown, once a device was set --> | |
<class name="baseVideoStreamDevice" extends="baseVideoStream"> | |
<switch> | |
<when property="$as3"> | |
<passthrough> | |
import flash.events.StatusEvent; | |
import flash.events.ActivityEvent; | |
</passthrough> | |
</when> | |
</switch> | |
<!--- Shows if there is Activity on the Microphone --> | |
<attribute name="micactive" value="false" type="boolean" /> | |
<!--- Level delegate, used to track level changes. | |
@keywords private --> | |
<attribute name="_leveldel" | |
value="$once{new LzDelegate(this, '_updateLevel')}" /> | |
<!--- Audio level, 0-100, the amount of sound detected by this microphone. | |
Reset to 0 when there is no audio (no activity or not allowed). | |
@keywords readonly --> | |
<attribute name="level" type="number" value="0" /> | |
<!--- Shows if there is Activity on the Camera --> | |
<attribute name="camactive" value="false" type="boolean" /> | |
<!--- Message to send to Clients --> | |
<attribute name="objMessage" value="null" /> | |
<!--- indicates if the message should be send, you can change the notification | |
level by changing the loudnessAcitviation in the public/config.xml --> | |
<attribute name="isgreater" value="false" type="boolean" /> | |
<attribute name="doSendNotification" value="true" type="boolean" /> | |
<!--- If true the component will send an event via LocalConnection when | |
sound is louder or less 5% --> | |
<attribute name="sendNotificationViaLocalConnection" value="true" | |
type="boolean" /> | |
<event name="sendCameraStatus" /> | |
<event name="sendMicroStatus" /> | |
<handler name="oncamera" args="c"> | |
//if ($debug) Debug.write("Cam: ",c); | |
c.addEventListener(ActivityEvent.ACTIVITY, onActivity); | |
c.addEventListener(StatusEvent.STATUS, onStatus); | |
</handler> | |
<method name="onStatus" args="stats"> | |
if ($debug) Debug.write("CamStatus: ",stats); | |
this.sendCameraStatus.sendEvent(stats.code); | |
</method> | |
<method name="onActivity" args="event"> | |
this.setAttribute("camactive", event.activating); | |
</method> | |
<handler name="onmicro" args="m"> | |
//if ($debug) Debug.write("onmicro: ",m); | |
var t = this; | |
//send mic active to true to start the onActivity callback Idle job | |
this.setAttribute("micactive", true); | |
m.addEventListener(ActivityEvent.ACTIVITY, onMicActivity); | |
m.addEventListener(StatusEvent.STATUS, onMicStatus); | |
</handler> | |
<method name="onMicStatus" args="stats"> | |
if ($debug) Debug.write("onMicStatus 1: ",stats); | |
this.sendMicroStatus.sendEvent(stats.code); | |
</method> | |
<method name="onMicActivity" args="event"> | |
if ($debug) Debug.write("onMicActivity: ",event); | |
</method> | |
<!--- Handler for the Flash Microphone onActivity callback. | |
@keywords private --> | |
<handler name="onmicactive"> | |
<![CDATA[ | |
if (this.onlevel) { | |
if (this.micactive) { | |
this._leveldel.register(lz.Idle, "onidle"); | |
} else { | |
this._leveldel.unregisterAll(); | |
this.setAttribute("level", 0); | |
} | |
} | |
]]> | |
</handler> | |
<!--- Handler for updating the microphone activity level attribute. | |
@keywords private --> | |
<method name="_updateLevel" args="arg"> | |
<![CDATA[ | |
if (this.micro == null) { | |
return; | |
} | |
var level = this.micro.activityLevel; | |
if (level < 0) { | |
level = 0; | |
} | |
if (level != this.level) { | |
this.setAttribute("level", level); | |
} | |
]]> | |
</method> | |
<!-- these methods send a Notification to all Connected users of a Room | |
about the onActivity-Change --> | |
<handler name="onlevel" args="level"> | |
<![CDATA[ | |
//if ($debug) Debug.write("onlevel ",this.level,level); | |
if (!this.doSendNotification) { | |
return; | |
} | |
//greater 5 means the green dot starts to blink if the loudness is greater then 5% | |
//it makes no sense to set this to zero as there will be 1000 of events send | |
//per minute to change the status just of this icon, swagner 12.02.2012 | |
var tVal = (level > 8); | |
if (this.isgreater != tVal) { | |
//if ($debug) Debug.write("Level sendNotification ",this.isgreater,tVal,level); | |
this.isgreater = tVal; | |
this.sendNotification(); | |
} | |
]]> | |
</handler> | |
<method name="sendNotification"> | |
//if ($debug) Debug.write("Level sendNotification ",this.isgreater); | |
if (!this.sendNotificationViaLocalConnection) { | |
return; | |
} | |
if (parent.parent._loudness != null) { | |
parent.parent._loudness.setSpeaking(this.isgreater); | |
} | |
this.objMessage = new Array (); | |
this.objMessage[0] = 'audioActivity'; | |
this.objMessage[1] = this.isgreater; | |
this.objMessage[2] = parent.parent.publicSID; | |
//if ($debug) Debug.write("Level sendNotification ",this.objMessage); | |
this.sendMessage.doCall(); | |
</method> | |
<netRemoteCallHib name="sendMessage" funcname="sendMessage" | |
remotecontext="$once{ canvas.thishib }" showLoading="false"> | |
<netparam><method name="getValue"> return parent.parent.objMessage; </method></netparam> | |
</netRemoteCallHib> | |
</class> | |
</library> |