Add BBBRtmpPlayer ANE
This commit is contained in:
parent
7dfe3f3093
commit
07e723a904
@ -1,389 +1,390 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<application xmlns="http://ns.adobe.com/air/application/29.0">
|
||||
|
||||
<!-- Adobe AIR Application Descriptor File Template.
|
||||
|
||||
Specifies parameters for identifying, installing, and launching AIR applications.
|
||||
|
||||
xmlns - The Adobe AIR namespace: http://ns.adobe.com/air/application/3.5
|
||||
The last segment of the namespace specifies the version
|
||||
of the AIR runtime required for this application to run.
|
||||
|
||||
minimumPatchLevel - The minimum patch level of the AIR runtime required to run
|
||||
the application. Optional.
|
||||
-->
|
||||
|
||||
<!-- A universally unique application identifier. Must be unique across all AIR applications.
|
||||
Using a reverse DNS-style name as the id is recommended. (Eg. com.example.ExampleApplication.) Required. -->
|
||||
<id>com.bigbluebutton.AIRClient</id>
|
||||
|
||||
<!-- Used as the filename for the application. Required. -->
|
||||
<filename>BigBlueButton</filename>
|
||||
|
||||
<!-- The name that is displayed in the AIR application installer.
|
||||
May have multiple values for each language. See samples or xsd schema file. Optional. -->
|
||||
<name>BigBlueButton</name>
|
||||
|
||||
<!-- A string value of the format <0-999>.<0-999>.<0-999> that represents application version which can be used to check for application upgrade.
|
||||
Values can also be 1-part or 2-part. It is not necessary to have a 3-part value.
|
||||
An updated version of application must have a versionNumber value higher than the previous version. Required for namespace >= 2.5 .
|
||||
For iOS Apps, this represents build number. -->
|
||||
<versionNumber>0.1.0</versionNumber>
|
||||
|
||||
<!-- A string value (such as "v1", "2.5", or "Alpha 1") that represents the version of the application, as it should be shown to users.
|
||||
For iOS Apps, this represents application version number and format should be (<0-999>.<0-999>.<0-999>).
|
||||
If this tag is not specified or the value is not according to the format, then this tag will be ignored
|
||||
and <versionNumber> will be used for application version number. Optional. -->
|
||||
<!-- <versionLabel></versionLabel> -->
|
||||
|
||||
<!-- Description, displayed in the AIR application installer.
|
||||
May have multiple values for each language. See samples or xsd schema file. Optional. -->
|
||||
<!-- <description></description> -->
|
||||
|
||||
<!-- Copyright information. Optional -->
|
||||
<!-- <copyright></copyright> -->
|
||||
|
||||
<!-- Publisher ID. Used if you're updating an application created prior to 1.5.3 -->
|
||||
<!-- <publisherID></publisherID> -->
|
||||
|
||||
<!-- Settings for the application's initial window. Required. -->
|
||||
<initialWindow>
|
||||
<!-- The main SWF or HTML file of the application. Required. -->
|
||||
<!-- Note: In Flash Builder, the SWF reference is set automatically. -->
|
||||
<content>Main.swf</content>
|
||||
|
||||
<!-- The title of the main window. Optional. -->
|
||||
<!-- <title></title> -->
|
||||
|
||||
<!-- The type of system chrome to use (either "standard" or "none"). Optional. Default standard. -->
|
||||
<!-- <systemChrome></systemChrome> -->
|
||||
|
||||
<!-- Whether the window is transparent. Only applicable when systemChrome is none. Optional. Default false. -->
|
||||
<!-- <transparent></transparent> -->
|
||||
|
||||
<!-- Whether the window is initially visible. Optional. Default false. -->
|
||||
<!-- <visible></visible> -->
|
||||
|
||||
<!-- Whether the user can minimize the window. Optional. Default true. -->
|
||||
<!-- <minimizable></minimizable> -->
|
||||
|
||||
<!-- Whether the user can maximize the window. Optional. Default true. -->
|
||||
<!-- <maximizable></maximizable> -->
|
||||
|
||||
<!-- Whether the user can resize the window. Optional. Default true. -->
|
||||
<!-- <resizable></resizable> -->
|
||||
|
||||
<!-- The window's initial width in pixels. Optional. -->
|
||||
<!-- <width></width> -->
|
||||
|
||||
<!-- The window's initial height in pixels. Optional. -->
|
||||
<!-- <height></height> -->
|
||||
|
||||
<!-- The window's initial x position. Optional. -->
|
||||
<!-- <x></x> -->
|
||||
|
||||
<!-- The window's initial y position. Optional. -->
|
||||
<!-- <y></y> -->
|
||||
|
||||
<!-- The window's minimum size, specified as a width/height pair in pixels, such as "400 200". Optional. -->
|
||||
<!-- <minSize></minSize> -->
|
||||
|
||||
<!-- The window's initial maximum size, specified as a width/height pair in pixels, such as "1600 1200". Optional. -->
|
||||
<!-- <maxSize></maxSize> -->
|
||||
|
||||
<!-- The aspect ratio of the app ("portrait" or "landscape" or "any"). Optional. Mobile only. Default is the natural orientation of the device -->
|
||||
|
||||
<!-- <aspectRatio></aspectRatio> -->
|
||||
|
||||
<!-- Whether the app will begin auto-orienting on launch. Optional. Mobile only. Default false -->
|
||||
|
||||
<!-- <autoOrients></autoOrients> -->
|
||||
|
||||
<!-- Whether the app launches in full screen. Optional. Mobile only. Default false -->
|
||||
|
||||
<!-- <fullScreen></fullScreen> -->
|
||||
|
||||
<!-- The render mode for the app (either auto, cpu, gpu, or direct). Optional. Default auto -->
|
||||
|
||||
<renderMode>direct</renderMode>
|
||||
|
||||
<!-- Whether the default direct mode rendering context allocates storage for depth and stencil buffers. Optional. Default false. -->
|
||||
<!-- <depthAndStencil></depthAndStencil> -->
|
||||
|
||||
<!-- Whether or not to pan when a soft keyboard is raised or lowered (either "pan" or "none"). Optional. Defaults "pan." -->
|
||||
<!-- <softKeyboardBehavior></softKeyboardBehavior> -->
|
||||
|
||||
<!-- Display Resolution for the app (either "standard" or "high"). Optional, OSX-only. Default "standard" -->
|
||||
<!-- <requestedDisplayResolution></requestedDisplayResolution> -->
|
||||
<autoOrients>true</autoOrients>
|
||||
<fullScreen>false</fullScreen>
|
||||
<visible>true</visible>
|
||||
<softKeyboardBehavior>none</softKeyboardBehavior>
|
||||
</initialWindow>
|
||||
|
||||
<!-- We recommend omitting the supportedProfiles element, -->
|
||||
<!-- which in turn permits your application to be deployed to all -->
|
||||
<!-- devices supported by AIR. If you wish to restrict deployment -->
|
||||
<!-- (i.e., to only mobile devices) then add this element and list -->
|
||||
<!-- only the profiles which your application does support. -->
|
||||
<!-- <supportedProfiles>desktop extendedDesktop mobileDevice extendedMobileDevice</supportedProfiles> -->
|
||||
|
||||
<!-- Languages supported by application -->
|
||||
<!-- Only these languages can be specified -->
|
||||
<!-- <supportedLanguages>en de cs es fr it ja ko nl pl pt ru sv tr zh</supportedLanguages> -->
|
||||
|
||||
<!-- The subpath of the standard default installation location to use. Optional. -->
|
||||
<!-- <installFolder></installFolder> -->
|
||||
|
||||
<!-- The subpath of the Programs menu to use. (Ignored on operating systems without a Programs menu.) Optional. -->
|
||||
<!-- <programMenuFolder></programMenuFolder> -->
|
||||
|
||||
<!-- The icon the system uses for the application. For at least one resolution,
|
||||
specify the path to a PNG file included in the AIR package. Optional. -->
|
||||
<icon>
|
||||
<!-- http://help.adobe.com/en_US/air/build/WSfffb011ac560372f2fea1812938a6e463-8000.html#WSfffb011ac560372f-6fd06f0f1293d3b33ea-7ffc -->
|
||||
<image29x29>assets/icons/icon-29.png</image29x29>
|
||||
<image36x36>assets/icons/icon-36.png</image36x36>
|
||||
<image40x40>assets/icons/icon-40.png</image40x40>
|
||||
<image44x44>assets/icons/icon-44.png</image44x44>
|
||||
<image48x48>assets/icons/icon-48.png</image48x48>
|
||||
<image50x50>assets/icons/icon-50.png</image50x50>
|
||||
<image57x57>assets/icons/icon-57.png</image57x57>
|
||||
<image58x58>assets/icons/icon-58.png</image58x58>
|
||||
<image60x60>assets/icons/icon-60.png</image60x60>
|
||||
<image66x66>assets/icons/icon-66.png</image66x66>
|
||||
<image72x72>assets/icons/icon-72.png</image72x72>
|
||||
<image75x75>assets/icons/icon-75.png</image75x75>
|
||||
<image76x76>assets/icons/icon-76.png</image76x76>
|
||||
<image80x80>assets/icons/icon-80.png</image80x80>
|
||||
<image87x87>assets/icons/icon-87.png</image87x87>
|
||||
<image96x96>assets/icons/icon-96.png</image96x96>
|
||||
<image100x100>assets/icons/icon-100.png</image100x100>
|
||||
<image114x114>assets/icons/icon-114.png</image114x114>
|
||||
<image120x120>assets/icons/icon-120.png</image120x120>
|
||||
<image128x128>assets/icons/icon-128.png</image128x128>
|
||||
<image144x144>assets/icons/icon-144.png</image144x144>
|
||||
<image152x152>assets/icons/icon-152.png</image152x152>
|
||||
<image167x167>assets/icons/icon-167.png</image167x167>
|
||||
<image180x180>assets/icons/icon-180.png</image180x180>
|
||||
<image192x192>assets/icons/icon-192.png</image192x192>
|
||||
<image512x512>assets/icons/icon-512.png</image512x512>
|
||||
<image732x412>assets/icons/icon-732.png</image732x412>
|
||||
<image1024x1024>assets/icons/icon-1024.png</image1024x1024>
|
||||
</icon>
|
||||
|
||||
<!-- Whether the application handles the update when a user double-clicks an update version
|
||||
of the AIR file (true), or the default AIR application installer handles the update (false).
|
||||
Optional. Default false. -->
|
||||
<!-- <customUpdateUI></customUpdateUI> -->
|
||||
|
||||
<!-- Whether the application can be launched when the user clicks a link in a web browser.
|
||||
Optional. Default false. -->
|
||||
<allowBrowserInvocation>true</allowBrowserInvocation>
|
||||
|
||||
<!-- Listing of file types for which the application can register. Optional. -->
|
||||
<!-- <fileTypes> -->
|
||||
|
||||
<!-- Defines one file type. Optional. -->
|
||||
<!-- <fileType> -->
|
||||
|
||||
<!-- The name that the system displays for the registered file type. Required. -->
|
||||
<!-- <name></name> -->
|
||||
|
||||
<!-- The extension to register. Required. -->
|
||||
<!-- <extension></extension> -->
|
||||
|
||||
<!-- The description of the file type. Optional. -->
|
||||
<!-- <description></description> -->
|
||||
|
||||
<!-- The MIME content type. -->
|
||||
<!-- <contentType></contentType> -->
|
||||
|
||||
<!-- The icon to display for the file type. Optional. -->
|
||||
<!-- <icon>
|
||||
<image16x16></image16x16>
|
||||
<image32x32></image32x32>
|
||||
<image48x48></image48x48>
|
||||
<image128x128></image128x128>
|
||||
</icon> -->
|
||||
|
||||
<!-- </fileType> -->
|
||||
<!-- </fileTypes> -->
|
||||
|
||||
<!-- iOS specific capabilities -->
|
||||
<!-- <iPhone> -->
|
||||
<!-- A list of plist key/value pairs to be added to the application Info.plist -->
|
||||
<!-- <InfoAdditions>
|
||||
<![CDATA[
|
||||
<key>UIDeviceFamily</key>
|
||||
<array>
|
||||
<string>1</string>
|
||||
<string>2</string>
|
||||
</array>
|
||||
<key>UIStatusBarStyle</key>
|
||||
<string>UIStatusBarStyleBlackOpaque</string>
|
||||
<key>UIRequiresPersistentWiFi</key>
|
||||
<string>YES</string>
|
||||
]]>
|
||||
</InfoAdditions> -->
|
||||
<!-- A list of plist key/value pairs to be added to the application Entitlements.plist -->
|
||||
<!-- <Entitlements>
|
||||
<![CDATA[
|
||||
<key>keychain-access-groups</key>
|
||||
<array>
|
||||
<string></string>
|
||||
<string></string>
|
||||
</array>
|
||||
]]>
|
||||
</Entitlements> -->
|
||||
<!-- Display Resolution for the app (either "standard" or "high"). Optional. Default "standard" -->
|
||||
<!-- <requestedDisplayResolution></requestedDisplayResolution> -->
|
||||
<!-- Forcing Render Mode CPU for the devices mentioned. Optional -->
|
||||
<!-- <forceCPURenderModeForDevices></forceCPURenderModeForDevices> -->
|
||||
<!-- File containing line separated list of external swf paths. These swfs won't be
|
||||
packaged inside the application and corresponding stripped swfs will be output in
|
||||
externalStrippedSwfs folder. -->
|
||||
<!-- <externalSwfs></externalSwfs> -->
|
||||
<!-- </iPhone> -->
|
||||
|
||||
<!-- Specify Android specific tags that get passed to AndroidManifest.xml file. -->
|
||||
<!--<android> -->
|
||||
<!-- <manifestAdditions>
|
||||
<![CDATA[
|
||||
<manifest android:installLocation="auto">
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
|
||||
<uses-feature android:required="true" android:name="android.hardware.touchscreen.multitouch"/>
|
||||
<application android:enabled="true">
|
||||
<activity android:excludeFromRecents="false">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
</intent-filter>
|
||||
</activity>
|
||||
</application>
|
||||
</manifest>
|
||||
]]>
|
||||
</manifestAdditions> -->
|
||||
<!-- Color depth for the app (either "32bit" or "16bit"). Optional. Default 16bit before namespace 3.0, 32bit after -->
|
||||
<!-- <colorDepth></colorDepth> -->
|
||||
<!-- Indicates if the app contains video or not. Necessary for ordering of video planes with graphics plane, especially in Jellybean - if you app does video this must be set to true - valid values are true or false -->
|
||||
<!-- <containsVideo></containsVideo> -->
|
||||
<!-- Indicates if webContents (HTML/CSS/JavaScript) can be inspected in browser. Optional . Default value is 'false' -->
|
||||
<!-- <webContentsDebuggingEnabled></webContentsDebuggingEnabled> -->
|
||||
<!-- </android> -->
|
||||
<!-- End of the schema for adding the android specific tags in AndroidManifest.xml file -->
|
||||
|
||||
|
||||
<android>
|
||||
<colorDepth>32bit</colorDepth>
|
||||
<containsVideo>true</containsVideo>
|
||||
<manifestAdditions>
|
||||
<![CDATA[
|
||||
<manifest android:installLocation="auto">
|
||||
<!--See the Adobe AIR documentation for more information about setting Google Android permissions-->
|
||||
<!--Removing the permission android.permission.INTERNET will have the side effect
|
||||
of preventing you from debugging your application on your device-->
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
|
||||
<!--The DISABLE_KEYGUARD and WAKE_LOCK permissions should be toggled together
|
||||
in order to access AIR's SystemIdleMode APIs-->
|
||||
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK"/>
|
||||
<uses-permission android:name="android.permission.CAMERA"/>
|
||||
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
|
||||
<!--The ACCESS_NETWORK_STATE and ACCESS_WIFI_STATE permissions should be toggled
|
||||
together in order to use AIR's NetworkInfo APIs-->
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
|
||||
|
||||
<uses-feature android:name="android.hardware.camera" android:required="false"/>
|
||||
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
|
||||
|
||||
<application android:enabled="true">
|
||||
<activity android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
|
||||
<!-- Test for URL scheme -->
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
<!-- <data android:scheme="http" android:host="bbb.mobi" android:pathPattern=".*" />-->
|
||||
<data android:scheme="bigbluebutton" />
|
||||
<data android:scheme="bigbluebuttons" />
|
||||
</intent-filter>
|
||||
<!-- End Test for URL scheme -->
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
<data android:scheme="bigbluebuttons" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<service android:name="com.juankpro.ane.localnotif.LocalNotificationIntentService"/>
|
||||
<receiver android:name="com.juankpro.ane.localnotif.AlarmIntentService" />
|
||||
<receiver android:name="com.juankpro.ane.localnotif.AlarmRestoreOnBoot" >
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
</application>
|
||||
</manifest>
|
||||
|
||||
]]>
|
||||
</manifestAdditions>
|
||||
</android>
|
||||
<iPhone>
|
||||
|
||||
<assetsCar>Assets.car</assetsCar>
|
||||
|
||||
<InfoAdditions>
|
||||
<![CDATA[
|
||||
<key>UIDeviceFamily</key>
|
||||
<array>
|
||||
<string>1</string>
|
||||
<string>2</string>
|
||||
</array>
|
||||
|
||||
<key>NSCameraUsageDescription</key>
|
||||
<string>Share your webcam to join video conference</string>
|
||||
|
||||
<key>NSMicrophoneUsageDescription</key>
|
||||
<string>Share your microphone to join audio conference</string>
|
||||
|
||||
<key>CFBundleIconName</key>
|
||||
<string>AppIcon</string>
|
||||
|
||||
<key>CFBundleURLTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleURLSchemes</key>
|
||||
<array>
|
||||
<string>bigbluebutton</string>
|
||||
<string>bigbluebuttons</string>
|
||||
</array>
|
||||
<key>CFBundleURLName</key>
|
||||
<string>org.bigbluebutton</string>
|
||||
</dict>
|
||||
</array>
|
||||
|
||||
<key>UIPrerenderedIcon</key>
|
||||
<true/>
|
||||
]]>
|
||||
</InfoAdditions>
|
||||
<requestedDisplayResolution>high</requestedDisplayResolution>
|
||||
</iPhone>
|
||||
|
||||
<extensions>
|
||||
<extensionID>com.freshplanet.AirCapabilities</extensionID>
|
||||
<extensionID>com.juankpro.ane.LocalNotification</extensionID>
|
||||
</extensions>
|
||||
</application>
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<application xmlns="http://ns.adobe.com/air/application/29.0">
|
||||
|
||||
<!-- Adobe AIR Application Descriptor File Template.
|
||||
|
||||
Specifies parameters for identifying, installing, and launching AIR applications.
|
||||
|
||||
xmlns - The Adobe AIR namespace: http://ns.adobe.com/air/application/3.5
|
||||
The last segment of the namespace specifies the version
|
||||
of the AIR runtime required for this application to run.
|
||||
|
||||
minimumPatchLevel - The minimum patch level of the AIR runtime required to run
|
||||
the application. Optional.
|
||||
-->
|
||||
|
||||
<!-- A universally unique application identifier. Must be unique across all AIR applications.
|
||||
Using a reverse DNS-style name as the id is recommended. (Eg. com.example.ExampleApplication.) Required. -->
|
||||
<id>com.bigbluebutton.Main</id>
|
||||
|
||||
<!-- Used as the filename for the application. Required. -->
|
||||
<filename>BigBlueButton</filename>
|
||||
|
||||
<!-- The name that is displayed in the AIR application installer.
|
||||
May have multiple values for each language. See samples or xsd schema file. Optional. -->
|
||||
<name>BigBlueButton</name>
|
||||
|
||||
<!-- A string value of the format <0-999>.<0-999>.<0-999> that represents application version which can be used to check for application upgrade.
|
||||
Values can also be 1-part or 2-part. It is not necessary to have a 3-part value.
|
||||
An updated version of application must have a versionNumber value higher than the previous version. Required for namespace >= 2.5 .
|
||||
For iOS Apps, this represents build number. -->
|
||||
<versionNumber>0.1.0</versionNumber>
|
||||
|
||||
<!-- A string value (such as "v1", "2.5", or "Alpha 1") that represents the version of the application, as it should be shown to users.
|
||||
For iOS Apps, this represents application version number and format should be (<0-999>.<0-999>.<0-999>).
|
||||
If this tag is not specified or the value is not according to the format, then this tag will be ignored
|
||||
and <versionNumber> will be used for application version number. Optional. -->
|
||||
<!-- <versionLabel></versionLabel> -->
|
||||
|
||||
<!-- Description, displayed in the AIR application installer.
|
||||
May have multiple values for each language. See samples or xsd schema file. Optional. -->
|
||||
<!-- <description></description> -->
|
||||
|
||||
<!-- Copyright information. Optional -->
|
||||
<!-- <copyright></copyright> -->
|
||||
|
||||
<!-- Publisher ID. Used if you're updating an application created prior to 1.5.3 -->
|
||||
<!-- <publisherID></publisherID> -->
|
||||
|
||||
<!-- Settings for the application's initial window. Required. -->
|
||||
<initialWindow>
|
||||
<!-- The main SWF or HTML file of the application. Required. -->
|
||||
<!-- Note: In Flash Builder, the SWF reference is set automatically. -->
|
||||
<content>Main.swf</content>
|
||||
|
||||
<!-- The title of the main window. Optional. -->
|
||||
<!-- <title></title> -->
|
||||
|
||||
<!-- The type of system chrome to use (either "standard" or "none"). Optional. Default standard. -->
|
||||
<!-- <systemChrome></systemChrome> -->
|
||||
|
||||
<!-- Whether the window is transparent. Only applicable when systemChrome is none. Optional. Default false. -->
|
||||
<!-- <transparent></transparent> -->
|
||||
|
||||
<!-- Whether the window is initially visible. Optional. Default false. -->
|
||||
<!-- <visible></visible> -->
|
||||
|
||||
<!-- Whether the user can minimize the window. Optional. Default true. -->
|
||||
<!-- <minimizable></minimizable> -->
|
||||
|
||||
<!-- Whether the user can maximize the window. Optional. Default true. -->
|
||||
<!-- <maximizable></maximizable> -->
|
||||
|
||||
<!-- Whether the user can resize the window. Optional. Default true. -->
|
||||
<!-- <resizable></resizable> -->
|
||||
|
||||
<!-- The window's initial width in pixels. Optional. -->
|
||||
<!-- <width></width> -->
|
||||
|
||||
<!-- The window's initial height in pixels. Optional. -->
|
||||
<!-- <height></height> -->
|
||||
|
||||
<!-- The window's initial x position. Optional. -->
|
||||
<!-- <x></x> -->
|
||||
|
||||
<!-- The window's initial y position. Optional. -->
|
||||
<!-- <y></y> -->
|
||||
|
||||
<!-- The window's minimum size, specified as a width/height pair in pixels, such as "400 200". Optional. -->
|
||||
<!-- <minSize></minSize> -->
|
||||
|
||||
<!-- The window's initial maximum size, specified as a width/height pair in pixels, such as "1600 1200". Optional. -->
|
||||
<!-- <maxSize></maxSize> -->
|
||||
|
||||
<!-- The aspect ratio of the app ("portrait" or "landscape" or "any"). Optional. Mobile only. Default is the natural orientation of the device -->
|
||||
|
||||
<!-- <aspectRatio></aspectRatio> -->
|
||||
|
||||
<!-- Whether the app will begin auto-orienting on launch. Optional. Mobile only. Default false -->
|
||||
|
||||
<!-- <autoOrients></autoOrients> -->
|
||||
|
||||
<!-- Whether the app launches in full screen. Optional. Mobile only. Default false -->
|
||||
|
||||
<!-- <fullScreen></fullScreen> -->
|
||||
|
||||
<!-- The render mode for the app (either auto, cpu, gpu, or direct). Optional. Default auto -->
|
||||
|
||||
<renderMode>direct</renderMode>
|
||||
|
||||
<!-- Whether the default direct mode rendering context allocates storage for depth and stencil buffers. Optional. Default false. -->
|
||||
<!-- <depthAndStencil></depthAndStencil> -->
|
||||
|
||||
<!-- Whether or not to pan when a soft keyboard is raised or lowered (either "pan" or "none"). Optional. Defaults "pan." -->
|
||||
<!-- <softKeyboardBehavior></softKeyboardBehavior> -->
|
||||
|
||||
<!-- Display Resolution for the app (either "standard" or "high"). Optional, OSX-only. Default "standard" -->
|
||||
<!-- <requestedDisplayResolution></requestedDisplayResolution> -->
|
||||
<autoOrients>true</autoOrients>
|
||||
<fullScreen>false</fullScreen>
|
||||
<visible>true</visible>
|
||||
<softKeyboardBehavior>none</softKeyboardBehavior>
|
||||
</initialWindow>
|
||||
|
||||
<!-- We recommend omitting the supportedProfiles element, -->
|
||||
<!-- which in turn permits your application to be deployed to all -->
|
||||
<!-- devices supported by AIR. If you wish to restrict deployment -->
|
||||
<!-- (i.e., to only mobile devices) then add this element and list -->
|
||||
<!-- only the profiles which your application does support. -->
|
||||
<!-- <supportedProfiles>desktop extendedDesktop mobileDevice extendedMobileDevice</supportedProfiles> -->
|
||||
|
||||
<!-- Languages supported by application -->
|
||||
<!-- Only these languages can be specified -->
|
||||
<!-- <supportedLanguages>en de cs es fr it ja ko nl pl pt ru sv tr zh</supportedLanguages> -->
|
||||
|
||||
<!-- The subpath of the standard default installation location to use. Optional. -->
|
||||
<!-- <installFolder></installFolder> -->
|
||||
|
||||
<!-- The subpath of the Programs menu to use. (Ignored on operating systems without a Programs menu.) Optional. -->
|
||||
<!-- <programMenuFolder></programMenuFolder> -->
|
||||
|
||||
<!-- The icon the system uses for the application. For at least one resolution,
|
||||
specify the path to a PNG file included in the AIR package. Optional. -->
|
||||
<icon>
|
||||
<!-- http://help.adobe.com/en_US/air/build/WSfffb011ac560372f2fea1812938a6e463-8000.html#WSfffb011ac560372f-6fd06f0f1293d3b33ea-7ffc -->
|
||||
<image29x29>assets/icons/icon-29.png</image29x29>
|
||||
<image36x36>assets/icons/icon-36.png</image36x36>
|
||||
<image40x40>assets/icons/icon-40.png</image40x40>
|
||||
<image44x44>assets/icons/icon-44.png</image44x44>
|
||||
<image48x48>assets/icons/icon-48.png</image48x48>
|
||||
<image50x50>assets/icons/icon-50.png</image50x50>
|
||||
<image57x57>assets/icons/icon-57.png</image57x57>
|
||||
<image58x58>assets/icons/icon-58.png</image58x58>
|
||||
<image60x60>assets/icons/icon-60.png</image60x60>
|
||||
<image66x66>assets/icons/icon-66.png</image66x66>
|
||||
<image72x72>assets/icons/icon-72.png</image72x72>
|
||||
<image75x75>assets/icons/icon-75.png</image75x75>
|
||||
<image76x76>assets/icons/icon-76.png</image76x76>
|
||||
<image80x80>assets/icons/icon-80.png</image80x80>
|
||||
<image87x87>assets/icons/icon-87.png</image87x87>
|
||||
<image96x96>assets/icons/icon-96.png</image96x96>
|
||||
<image100x100>assets/icons/icon-100.png</image100x100>
|
||||
<image114x114>assets/icons/icon-114.png</image114x114>
|
||||
<image120x120>assets/icons/icon-120.png</image120x120>
|
||||
<image128x128>assets/icons/icon-128.png</image128x128>
|
||||
<image144x144>assets/icons/icon-144.png</image144x144>
|
||||
<image152x152>assets/icons/icon-152.png</image152x152>
|
||||
<image167x167>assets/icons/icon-167.png</image167x167>
|
||||
<image180x180>assets/icons/icon-180.png</image180x180>
|
||||
<image192x192>assets/icons/icon-192.png</image192x192>
|
||||
<image512x512>assets/icons/icon-512.png</image512x512>
|
||||
<image732x412>assets/icons/icon-732.png</image732x412>
|
||||
<image1024x1024>assets/icons/icon-1024.png</image1024x1024>
|
||||
</icon>
|
||||
|
||||
<!-- Whether the application handles the update when a user double-clicks an update version
|
||||
of the AIR file (true), or the default AIR application installer handles the update (false).
|
||||
Optional. Default false. -->
|
||||
<!-- <customUpdateUI></customUpdateUI> -->
|
||||
|
||||
<!-- Whether the application can be launched when the user clicks a link in a web browser.
|
||||
Optional. Default false. -->
|
||||
<allowBrowserInvocation>true</allowBrowserInvocation>
|
||||
|
||||
<!-- Listing of file types for which the application can register. Optional. -->
|
||||
<!-- <fileTypes> -->
|
||||
|
||||
<!-- Defines one file type. Optional. -->
|
||||
<!-- <fileType> -->
|
||||
|
||||
<!-- The name that the system displays for the registered file type. Required. -->
|
||||
<!-- <name></name> -->
|
||||
|
||||
<!-- The extension to register. Required. -->
|
||||
<!-- <extension></extension> -->
|
||||
|
||||
<!-- The description of the file type. Optional. -->
|
||||
<!-- <description></description> -->
|
||||
|
||||
<!-- The MIME content type. -->
|
||||
<!-- <contentType></contentType> -->
|
||||
|
||||
<!-- The icon to display for the file type. Optional. -->
|
||||
<!-- <icon>
|
||||
<image16x16></image16x16>
|
||||
<image32x32></image32x32>
|
||||
<image48x48></image48x48>
|
||||
<image128x128></image128x128>
|
||||
</icon> -->
|
||||
|
||||
<!-- </fileType> -->
|
||||
<!-- </fileTypes> -->
|
||||
|
||||
<!-- iOS specific capabilities -->
|
||||
<!-- <iPhone> -->
|
||||
<!-- A list of plist key/value pairs to be added to the application Info.plist -->
|
||||
<!-- <InfoAdditions>
|
||||
<![CDATA[
|
||||
<key>UIDeviceFamily</key>
|
||||
<array>
|
||||
<string>1</string>
|
||||
<string>2</string>
|
||||
</array>
|
||||
<key>UIStatusBarStyle</key>
|
||||
<string>UIStatusBarStyleBlackOpaque</string>
|
||||
<key>UIRequiresPersistentWiFi</key>
|
||||
<string>YES</string>
|
||||
]]>
|
||||
</InfoAdditions> -->
|
||||
<!-- A list of plist key/value pairs to be added to the application Entitlements.plist -->
|
||||
<!-- <Entitlements>
|
||||
<![CDATA[
|
||||
<key>keychain-access-groups</key>
|
||||
<array>
|
||||
<string></string>
|
||||
<string></string>
|
||||
</array>
|
||||
]]>
|
||||
</Entitlements> -->
|
||||
<!-- Display Resolution for the app (either "standard" or "high"). Optional. Default "standard" -->
|
||||
<!-- <requestedDisplayResolution></requestedDisplayResolution> -->
|
||||
<!-- Forcing Render Mode CPU for the devices mentioned. Optional -->
|
||||
<!-- <forceCPURenderModeForDevices></forceCPURenderModeForDevices> -->
|
||||
<!-- File containing line separated list of external swf paths. These swfs won't be
|
||||
packaged inside the application and corresponding stripped swfs will be output in
|
||||
externalStrippedSwfs folder. -->
|
||||
<!-- <externalSwfs></externalSwfs> -->
|
||||
<!-- </iPhone> -->
|
||||
|
||||
<!-- Specify Android specific tags that get passed to AndroidManifest.xml file. -->
|
||||
<!--<android> -->
|
||||
<!-- <manifestAdditions>
|
||||
<![CDATA[
|
||||
<manifest android:installLocation="auto">
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
|
||||
<uses-feature android:required="true" android:name="android.hardware.touchscreen.multitouch"/>
|
||||
<application android:enabled="true">
|
||||
<activity android:excludeFromRecents="false">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
</intent-filter>
|
||||
</activity>
|
||||
</application>
|
||||
</manifest>
|
||||
]]>
|
||||
</manifestAdditions> -->
|
||||
<!-- Color depth for the app (either "32bit" or "16bit"). Optional. Default 16bit before namespace 3.0, 32bit after -->
|
||||
<!-- <colorDepth></colorDepth> -->
|
||||
<!-- Indicates if the app contains video or not. Necessary for ordering of video planes with graphics plane, especially in Jellybean - if you app does video this must be set to true - valid values are true or false -->
|
||||
<!-- <containsVideo></containsVideo> -->
|
||||
<!-- Indicates if webContents (HTML/CSS/JavaScript) can be inspected in browser. Optional . Default value is 'false' -->
|
||||
<!-- <webContentsDebuggingEnabled></webContentsDebuggingEnabled> -->
|
||||
<!-- </android> -->
|
||||
<!-- End of the schema for adding the android specific tags in AndroidManifest.xml file -->
|
||||
|
||||
|
||||
<android>
|
||||
<colorDepth>32bit</colorDepth>
|
||||
<containsVideo>true</containsVideo>
|
||||
<manifestAdditions>
|
||||
<![CDATA[
|
||||
<manifest android:installLocation="auto">
|
||||
<!--See the Adobe AIR documentation for more information about setting Google Android permissions-->
|
||||
<!--Removing the permission android.permission.INTERNET will have the side effect
|
||||
of preventing you from debugging your application on your device-->
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
|
||||
<!--The DISABLE_KEYGUARD and WAKE_LOCK permissions should be toggled together
|
||||
in order to access AIR's SystemIdleMode APIs-->
|
||||
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK"/>
|
||||
<uses-permission android:name="android.permission.CAMERA"/>
|
||||
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
|
||||
<!--The ACCESS_NETWORK_STATE and ACCESS_WIFI_STATE permissions should be toggled
|
||||
together in order to use AIR's NetworkInfo APIs-->
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
|
||||
|
||||
<uses-feature android:name="android.hardware.camera" android:required="false"/>
|
||||
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
|
||||
|
||||
<application android:enabled="true">
|
||||
<activity android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
|
||||
<!-- Test for URL scheme -->
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
<!-- <data android:scheme="http" android:host="bbb.mobi" android:pathPattern=".*" />-->
|
||||
<data android:scheme="bigbluebutton" />
|
||||
<data android:scheme="bigbluebuttons" />
|
||||
</intent-filter>
|
||||
<!-- End Test for URL scheme -->
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
<data android:scheme="bigbluebuttons" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<service android:name="com.juankpro.ane.localnotif.LocalNotificationIntentService"/>
|
||||
<receiver android:name="com.juankpro.ane.localnotif.AlarmIntentService" />
|
||||
<receiver android:name="com.juankpro.ane.localnotif.AlarmRestoreOnBoot" >
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
</application>
|
||||
</manifest>
|
||||
|
||||
]]>
|
||||
</manifestAdditions>
|
||||
</android>
|
||||
<iPhone>
|
||||
|
||||
<assetsCar>Assets.car</assetsCar>
|
||||
|
||||
<InfoAdditions>
|
||||
<![CDATA[
|
||||
<key>UIDeviceFamily</key>
|
||||
<array>
|
||||
<string>1</string>
|
||||
<string>2</string>
|
||||
</array>
|
||||
|
||||
<key>NSCameraUsageDescription</key>
|
||||
<string>Share your webcam to join video conference</string>
|
||||
|
||||
<key>NSMicrophoneUsageDescription</key>
|
||||
<string>Share your microphone to join audio conference</string>
|
||||
|
||||
<key>CFBundleIconName</key>
|
||||
<string>AppIcon</string>
|
||||
|
||||
<key>CFBundleURLTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleURLSchemes</key>
|
||||
<array>
|
||||
<string>bigbluebutton</string>
|
||||
<string>bigbluebuttons</string>
|
||||
</array>
|
||||
<key>CFBundleURLName</key>
|
||||
<string>org.bigbluebutton</string>
|
||||
</dict>
|
||||
</array>
|
||||
|
||||
<key>UIPrerenderedIcon</key>
|
||||
<true/>
|
||||
]]>
|
||||
</InfoAdditions>
|
||||
<requestedDisplayResolution>high</requestedDisplayResolution>
|
||||
</iPhone>
|
||||
|
||||
<extensions>
|
||||
<extensionID>com.freshplanet.AirCapabilities</extensionID>
|
||||
<extensionID>com.juankpro.ane.LocalNotification</extensionID>
|
||||
<extensionID>org.bigbluebutton.BBBRtmpPlayer</extensionID>
|
||||
</extensions>
|
||||
</application>
|
||||
|
162
clients/flash/air-client/src/org/bigbluebutton/air/common/views/IOSVideoView.as
Executable file
162
clients/flash/air-client/src/org/bigbluebutton/air/common/views/IOSVideoView.as
Executable file
@ -0,0 +1,162 @@
|
||||
package org.bigbluebutton.air.common.views
|
||||
{
|
||||
import mx.core.UIComponent;
|
||||
|
||||
import spark.components.Image;
|
||||
|
||||
import org.bigbluebutton.BBBRtmpPlayer;
|
||||
import org.bigbluebutton.BBBRtmpPlayerEvent;
|
||||
|
||||
public class IOSVideoView extends UIComponent {
|
||||
|
||||
protected var _image:Image;
|
||||
|
||||
protected var player:BBBRtmpPlayer;
|
||||
|
||||
protected var originalVideoWidth:Number;
|
||||
|
||||
protected var originalVideoHeight:Number;
|
||||
|
||||
public function IOSVideoView():void {
|
||||
_image = new Image();
|
||||
addChild(_image);
|
||||
}
|
||||
|
||||
public function startStream(uri:String, streamName:String, imgWidth:Number, imgHeight:Number, meetingId:String, authToken:String, externalUserId:String):void {
|
||||
|
||||
if(player) {
|
||||
close();
|
||||
}
|
||||
|
||||
this.originalVideoWidth = imgWidth;
|
||||
this.originalVideoHeight = imgHeight;
|
||||
|
||||
var url:String = uri + "/" + streamName + " live=1 conn=S:" + meetingId + " conn=S:" + externalUserId + " conn=S:" + authToken;
|
||||
|
||||
player = new BBBRtmpPlayer(url);
|
||||
|
||||
player.addEventListener(BBBRtmpPlayerEvent.NEW_IMAGE, onNewImage);
|
||||
player.addEventListener(BBBRtmpPlayerEvent.CONNECTING, onConnecting);
|
||||
player.addEventListener(BBBRtmpPlayerEvent.CONNECTION_FAILED, onConnectionFailed);
|
||||
player.addEventListener(BBBRtmpPlayerEvent.DISCONNECTED, onDisconnected);
|
||||
|
||||
player.play();
|
||||
|
||||
}
|
||||
|
||||
private function onConnecting(e:BBBRtmpPlayerEvent):void {
|
||||
trace("EVENT: " + e.type + " MESSAGE: " + e.getMessage());
|
||||
}
|
||||
|
||||
private function onNewImage(e:BBBRtmpPlayerEvent):void {
|
||||
_image.source = player.getLastImage();
|
||||
}
|
||||
|
||||
private function onConnectionFailed(e:BBBRtmpPlayerEvent):void {
|
||||
close();
|
||||
}
|
||||
|
||||
private function onDisconnected(e:BBBRtmpPlayerEvent):void {
|
||||
close();
|
||||
}
|
||||
|
||||
public function close():void {
|
||||
player.removeEventListener(BBBRtmpPlayerEvent.NEW_IMAGE, onNewImage);
|
||||
player.removeEventListener(BBBRtmpPlayerEvent.CONNECTION_FAILED, onConnectionFailed);
|
||||
player.removeEventListener(BBBRtmpPlayerEvent.DISCONNECTED, onDisconnected);
|
||||
_image = new Image();
|
||||
}
|
||||
|
||||
override protected function updateDisplayList(w:Number, h:Number):void {
|
||||
super.updateDisplayList(w, h);
|
||||
|
||||
if (player) {
|
||||
resizeForPortrait();
|
||||
}
|
||||
}
|
||||
|
||||
public function resizeForPortrait():void {
|
||||
// if we have device where screen width less than screen height e.g. phone
|
||||
if (width < height) {
|
||||
// make the video width full width of the screen
|
||||
_image.width = width;
|
||||
// calculate height based on a video width, it order to keep the same aspect ratio
|
||||
_image.height = (_image.width / originalVideoWidth) * originalVideoHeight;
|
||||
// if calculated height appeared to be bigger than screen height, recalculuate the video size based on width
|
||||
if (height < _image.height) {
|
||||
// make the video height full height of the screen
|
||||
_image.height = height;
|
||||
// calculate width based on a video height, it order to keep the same aspect ratio
|
||||
_image.width = ((originalVideoWidth * _image.height) / originalVideoHeight);
|
||||
}
|
||||
} // if we have device where screen height less than screen width e.g. tablet
|
||||
else {
|
||||
// make the video height full height of the screen
|
||||
_image.height = height;
|
||||
// calculate width based on a video height, it order to keep the same aspect ratio
|
||||
_image.width = ((originalVideoWidth * _image.height) / originalVideoHeight);
|
||||
// if calculated width appeared to be bigger than screen width, recalculuate the video size based on height
|
||||
if (width < _image.width) {
|
||||
// make the video width full width of the screen
|
||||
_image.width = width;
|
||||
// calculate height based on a video width, it order to keep the same aspect ratio
|
||||
_image.height = (_image.width / originalVideoWidth) * originalVideoHeight;
|
||||
}
|
||||
}
|
||||
|
||||
_image.x = width - _image.width;
|
||||
_image.y = height - _image.height;
|
||||
}
|
||||
|
||||
public function resizeForLandscape():void {
|
||||
if (height < width) {
|
||||
_image.height = width;
|
||||
_image.width = ((originalVideoWidth * _image.height) / originalVideoHeight);
|
||||
if (width < _image.width) {
|
||||
_image.width = height;
|
||||
_image.height = (_image.width / originalVideoWidth) * originalVideoHeight;
|
||||
}
|
||||
} else {
|
||||
_image.width = height;
|
||||
_image.height = (_image.width / originalVideoWidth) * originalVideoHeight;
|
||||
if (height < _image.height) {
|
||||
_image.height = width;
|
||||
_image.width = ((originalVideoWidth * _image.height) / originalVideoHeight);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function rotateVideo(rotation:Number):void {
|
||||
if (_image && stage.contains(_image)) {
|
||||
removeChild(_image);
|
||||
}
|
||||
_image = new Image();
|
||||
switch (rotation) {
|
||||
case 0:
|
||||
resizeForPortrait();
|
||||
_image.x = width / 2 - _image.width / 2;
|
||||
_image.y = height / 2 - _image.height / 2; // + topMenuBarHeight;
|
||||
break;
|
||||
case -90:
|
||||
resizeForLandscape();
|
||||
_image.x = (width / 2) - (_image.height / 2);
|
||||
_image.y = (height / 2) + (_image.width / 2); // + topMenuBarHeight;
|
||||
break;
|
||||
case 90:
|
||||
resizeForLandscape();
|
||||
_image.x = (width / 2) + (_image.height / 2);
|
||||
_image.y = (height / 2) - (_image.width / 2); // + topMenuBarHeight;
|
||||
break;
|
||||
case 180:
|
||||
resizeForPortrait();
|
||||
_image.x = width / 2 + _image.width / 2;
|
||||
_image.y = (height / 2) + (_image.height / 2); // + topMenuBarHeight
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
_image.rotation = rotation;
|
||||
addChild(_image);
|
||||
}
|
||||
}
|
||||
}
|
@ -12,8 +12,8 @@ package org.bigbluebutton.air.main.models {
|
||||
function get pageTransitionStartSignal():ISignal;
|
||||
function get currentPage():String;
|
||||
function get lastPage():String;
|
||||
function popPage(animation:int = TransitionAnimationEnum.APPEAR):void;
|
||||
function pushPage(value:String, details:Object = null, animation:int = TransitionAnimationEnum.APPEAR):void;
|
||||
function popPage(animation:int = 0):void;
|
||||
function pushPage(value:String, details:Object = null, animation:int = 0):void;
|
||||
function get currentPageDetails():Object;
|
||||
}
|
||||
}
|
||||
|
@ -40,7 +40,9 @@ package org.bigbluebutton.air.main.views {
|
||||
// If we are in the Flash Builder debugger the InvokeEvent will never be fired
|
||||
if (Capabilities.isDebugger) {
|
||||
//var url:String = "bigbluebutton://test-install.blindsidenetworks.com/bigbluebutton/api/join?fullName=AIR&meetingID=Demo+Meeting&password=mp&redirect=false&checksum=3fdf56e9915c1031c3ea012b4ec8823cedd7c272";
|
||||
var url:String = "bigbluebutton://test-install.blindsidenetworks.com/bigbluebutton/api/join?fullName=User+2021828&meetingID=Demo+Meeting&password=ap&redirect=true&checksum=8751963df96437c7d435eac8124e4fb3ec147115";
|
||||
//var url:String = "bigbluebutton://test-install.blindsidenetworks.com/bigbluebutton/api/join?fullName=User+2021828&meetingID=Demo+Meeting&password=ap&redirect=true&checksum=8751963df96437c7d435eac8124e4fb3ec147115";
|
||||
//var url:String = "bigbluebuttons://dev21.bigbluebutton.org/bigbluebutton/api/join?meetingID=Demo+Meeting&fullName=AAA&password=mp&checksum=5516fb6f7d7330d0c02fd94c8e1fb683957e2da4a1c7013f66004b68148d4478";
|
||||
var url:String = "bigbluebutton://206.47.241.19/bigbluebutton/api/join?meetingID=Demo+Meeting&fullName=AAA&password=mp&checksum=94cc8981bf215b13101fa4d3307d3aca8512578b23b91b7be8042f65abd4a007";
|
||||
joinRoom(url);
|
||||
}
|
||||
}
|
||||
|
@ -1,29 +1,48 @@
|
||||
package org.bigbluebutton.air.video.views {
|
||||
import flash.net.NetConnection;
|
||||
import flash.system.Capabilities;
|
||||
|
||||
import spark.components.Group;
|
||||
|
||||
import org.bigbluebutton.air.common.views.VideoView;
|
||||
import org.bigbluebutton.air.common.views.IOSVideoView;
|
||||
import org.bigbluebutton.air.common.views.VideoView;
|
||||
|
||||
public class WebcamDock extends Group {
|
||||
|
||||
private var _video:VideoView;
|
||||
private var _iosVideoView:IOSVideoView;
|
||||
|
||||
public function WebcamDock() {
|
||||
super();
|
||||
|
||||
_video = new VideoView();
|
||||
_video.percentHeight = 100;
|
||||
_video.percentWidth = 100;
|
||||
addElement(_video);
|
||||
if (Capabilities.version.indexOf("IOS") >= 0) {
|
||||
_iosVideoView = new IOSVideoView();
|
||||
_iosVideoView.percentWidth = 100;
|
||||
_iosVideoView.percentHeight = 100;
|
||||
addElement(_iosVideoView);
|
||||
} else {
|
||||
_video = new VideoView();
|
||||
_video.percentHeight = 100;
|
||||
_video.percentWidth = 100;
|
||||
addElement(_video);
|
||||
}
|
||||
}
|
||||
|
||||
public function startStream(connection:NetConnection, name:String, streamName:String, userId:String, oWidth:Number, oHeight:Number):void {
|
||||
_video.startStream(connection, name, streamName, userId, oWidth, oHeight);
|
||||
public function startStream(connection:NetConnection, name:String, streamName:String, userId:String, oWidth:Number, oHeight:Number, meetingId:String, authToken:String, externalUserId:String):void {
|
||||
|
||||
if (Capabilities.version.indexOf("IOS") >= 0) {
|
||||
_iosVideoView.startStream(connection.uri, streamName, oWidth, oHeight, meetingId, authToken, externalUserId);
|
||||
} else {
|
||||
_video.startStream(connection, name, streamName, userId, oWidth, oHeight);
|
||||
}
|
||||
}
|
||||
|
||||
public function closeStream():void {
|
||||
_video.close();
|
||||
if (Capabilities.version.indexOf("IOS") >= 0) {
|
||||
_iosVideoView.close();
|
||||
} else {
|
||||
_video.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,11 +1,12 @@
|
||||
package org.bigbluebutton.air.video.views {
|
||||
import org.bigbluebutton.air.main.models.IConferenceParameters;
|
||||
import org.bigbluebutton.air.main.models.IMeetingData;
|
||||
import org.bigbluebutton.air.main.models.IUserSession;
|
||||
import org.bigbluebutton.air.video.models.VideoProfile;
|
||||
import org.bigbluebutton.air.video.models.WebcamChangeEnum;
|
||||
import org.bigbluebutton.air.video.models.WebcamStreamInfo;
|
||||
|
||||
import robotlegs.bender.bundles.mvcs.Mediator;
|
||||
import robotlegs.bender.bundles.mvcs.Mediator;
|
||||
|
||||
public class WebcamDockMediator extends Mediator {
|
||||
|
||||
@ -18,6 +19,9 @@ package org.bigbluebutton.air.video.views {
|
||||
[Inject]
|
||||
public var userSession:IUserSession;
|
||||
|
||||
[Inject]
|
||||
public var conferenceParameters:IConferenceParameters;
|
||||
|
||||
override public function initialize():void {
|
||||
meetingData.webcams.webcamChangeSignal.add(onWebcamChangeSignal);
|
||||
|
||||
@ -65,7 +69,7 @@ package org.bigbluebutton.air.video.views {
|
||||
private function startWebcam(webcam:WebcamStreamInfo):void {
|
||||
var videoProfile:VideoProfile = userSession.videoProfileManager.getVideoProfileByStreamName(webcam.streamId);
|
||||
if (videoProfile) {
|
||||
view.startStream(userSession.videoConnection.connection, webcam.name, webcam.streamId, webcam.userId, videoProfile.width, videoProfile.height);
|
||||
view.startStream(userSession.videoConnection.connection, webcam.name, webcam.streamId, webcam.userId, videoProfile.width, videoProfile.height, conferenceParameters.meetingID, conferenceParameters.authToken, conferenceParameters.externUserID);
|
||||
meetingData.webcams.viewedWebcamStream = webcam.streamId;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user