#Connect SDK Android
Connect SDK is an open source framework that connects your mobile apps with multiple TV platforms. Because most TV platforms support a variety of protocols, Connect SDK integrates and abstracts the discovery and connectivity between all supported protocols. This project can be built in Android Studio or directly with Gradle. Eclipse IDE is not supported since 1.5.0 version.
For more information, visit our website.
##Dependencies This project has the following dependencies, some of which require manual setup. If you would like to use a version of the SDK which has no manual setup, consider using the lite version of the SDK.
This project has the following dependencies.
- Connect-SDK-Android-Core submodule
- Requires Java-WebSocket library
- Requires jmDNS library
- Connect-SDK-Android-Google-Cast submodule
- Requires GoogleCast.framework
- Connect-SDK-Android-FireTV submodule
- Requires AmazonFling.framework
##Including Connect SDK in your app with Android Studio Edit your project's build.gradle to add this in the "dependencies" section
dependencies {
//...
compile 'com.connectsdk:connect-sdk-android:1.6.0'
}
This prebuilt library doesn't have Amazon Fling SDK support, because it’s not available on maven. You need to set the project up from sources if you want to have Amazon Fling SDK support.
##Including Connect SDK in your app with Android Studio from sources
-
Open your terminal and execute these commands
cd your_project_folder git clone https://github.com/ConnectSDK/Connect-SDK-Android.git cd Connect-SDK-Android git submodule update --init
-
On the root of your project directory create/modify the settings.gradle file. It should contain something like the following:
include ':app', ':Connect-SDK-Android'
-
Edit your project's build.gradle to add this in the "dependencies" section:
dependencies { //... compile project(':Connect-SDK-Android') }
-
Setup FireTV submodule
-
Sync project with gradle files
-
Add permissions to your manifest
###Permissions to include in manifest
- Required for SSDP & Chromecast/Zeroconf discovery
android.permission.INTERNET
android.permission.CHANGE_WIFI_MULTICAST_STATE
- Required for interacting with devices
android.permission.ACCESS_NETWORK_STATE
android.permission.ACCESS_WIFI_STATE
- Required for storing device pairing information
android.permission.WRITE_EXTERNAL_STORAGE
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
###Metadata for application tag This metadata tag is necessary to enable Chromecast support.
<application ... >
...
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
</application>
###Proguard configuration
Add the following line to your proguard configuration file (otherwise DiscoveryManager
won't be able to set any DiscoveryProvider
).
-keep class com.connectsdk.** { * ; }
###Tests Connect SDK has unit tests for some parts of the code, and we are continuing to increase the test coverage. These tests are based on third party libraries such as Robolectric, Mockito and PowerMock. You can easily run these tests with Gradle:
gradle test
Also the project has a target for generating test coverage report with Jacoco. Use this command for generating it.
gradle jacocoTestReport
The test coverage report will be in this folder Connect-SDK-Android/build/reports/jacoco/jacocoTestReport/html
.
##Limitations/Caveats
###Subtitles
- DLNA service support
SRT
format only. Since there is no official specification for them, subtitles may not work on all DLNA-compatible devices. This feature has been tested and works on LG WebOS and Netcast TVs. - FireTV service supports
WebVTT
format only. Subtitles on Fire TV are hidden by default. To display them, the user should manually pick one in the media player (click the "Options" button on the remote). The Fling SDK doesn't provide any way to make them appear remotely. - Google Cast service supports
WebVTT
format only. Servers providing subtitles and media files should support CORS headers, otherwise they are not displayed. The simplest change is to send this HTTP response header for your subtitles:Access-Control-Allow-Origin: *
. More information is here: https://developers.google.com/cast/docs/android_sender#cors-requirements. - Netcast service support
SRT
format only. It uses DLNA and has the same restrictions as DLNA service. - WebOS service supports
WebVTT
format only. The server providing subtitles should support CORS headers, similarly to Cast service's requirements.
##Contact
- Twitter @ConnectSDK
- Ask a question on Stack Overflow with the Connect-SDK tag (or TV tag)
- General Inquiries [email protected]
- Developer Support [email protected]
- Partnerships [email protected]
##Credits Connect SDK for Android makes use of the following projects, some of which are open-source.
- Amazon Fling SDK
- Android-DLNA (Apache License, Version 2.0)
- Google Cast SDK
- Java-WebSocket (MIT)
- JmDNS (Apache License, Version 2.0)
These projects are used in tests:
- Mockito (MIT)
- Robolectric (MIT)
- PowerMock (Apache License, Version 2.0)
- XMLUnit (Apache License, Version 2.0)
##License Copyright (c) 2013-2015 LG Electronics.
Licensed 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
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.