<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 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("Mic: ",m); | |
var t = this; | |
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); | |
this.setAttribute("micactive", event.activating); | |
</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; | |
} | |
var tVal = null; | |
//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 | |
if (level>8) { | |
tVal = true; | |
} else { | |
tVal = false; | |
} | |
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; | |
} | |
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(); | |
//canvas.videoComp_lc.send(canvas.videoComp_lc_name, "sendNotification", this.objMessage); | |
</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> |