https://github.com/kaltura/player-sdk-native-android
Kaltura Android Player SDK
https://github.com/kaltura/player-sdk-native-android
Last synced: 3 months ago
JSON representation
Kaltura Android Player SDK
- Host: GitHub
- URL: https://github.com/kaltura/player-sdk-native-android
- Owner: kaltura
- License: agpl-3.0
- Created: 2013-10-09T11:46:58.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2023-03-31T21:21:08.000Z (over 2 years ago)
- Last Synced: 2025-06-08T15:07:59.235Z (4 months ago)
- Language: Java
- Homepage: http://player.kaltura.com
- Size: 55.1 MB
- Stars: 92
- Watchers: 40
- Forks: 55
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: COPYING
Awesome Lists containing this project
README
:heavy_exclamation_mark: Please note this project is **deprecated**, please see [Kaltura Player for Android](https://github.com/kaltura/kaltura-player-android).
---------------------------
[](https://travis-ci.org/kaltura/player-sdk-native-android)Player SDK Native Android
=========================> **Note: A new version of the Kaltura Player SDK (V3) will be available for beta very soon. The new SDK is fully native and introduces significant performance improvements.**
> If you are planning to begin a new project based on the SDK, you may want to wait for the new version.
The Kaltura player-sdk-native component enables embedding the [kaltura player](http://player.kaltura.com) into native environments. This enables full HTML5 player platform, without limitations of HTML5 video tag API in Android platforms. Currently for Android this enables:
* Inline playback with HTML controls ( disable controls during ads etc. )
* Widevine DRM support
* AutoPlay
* Volume Control
* Full [player.kaltura.com](http://player.kaltura.com) feature set for themes and plugins
* HLS Playback
* DFP IMA SDKFor a full list of native embed advantages see native controls table within the [player toolkit basic usage guide](http://knowledge.kaltura.com/kaltura-player-v2-toolkit-theme-skin-guide).
The Kaltura player-sdk-native component can be embedded into both native apps, and hybrid native apps ( via standard dynamic embed syntax )
Future support will include:
* PlayReady DRM
* Multiple stream playback
* Offline viewingArchitecture Overview
=====
Quick Start Guide
======```
1. git clone https://github.com/kaltura/player-sdk-native-android.git to the same folder of your app.
```
```
2. Add reference to PlayerSDK module from your project:
```#####Select _`settings.gradle`_ and add:
```
include ':googlemediaframework'
project(':googlemediaframework').projectDir=new File('../player-sdk-native-android/googlemediaframework')include ':playerSDK'
project(':playerSDK').projectDir=new File('../player-sdk-native-android/playerSDK')```
#####Right click on your app folder ->_`Open Module Settings`_.
#####Select _`Dependencies`_ tab -> click on the _`+`_ button and choos the _`playerSDK`_ module:
Now, you are linked to the playerSDK by reference. Be sure that you cloned the playerSDK to the same folder of your project.
Make sure that you cloned the **_player-sdk-native-android_** project to the same folder of your project, if you prefer to clone it else where, you should update the _**`settings.gradle`**_.
API Overview
=====###Loading Kaltura player into Fragment - OVP:
```public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {// Inflate the layout for this fragment
if(mFragmentView == null) {
mFragmentView = inflater.inflate(R.layout.fragment_fullscreen, container, false);
}mPlayerView = (PlayerViewController) mFragmentView.findViewById(R.id.player);
mPlayerView.loadPlayerIntoActivity(getActivity());KPPlayerConfig config = new KPPlayerConfig("http://cdnapi.kaltura.com", "26698911", "1831271");
config.setEntryId("1_o426d3i4");
mPlayerView.initWithConfiguration(config); mPlayerView.addEventListener(new KPEventListener() {
@Override
public void onKPlayerStateChanged(PlayerViewController playerViewController, KPlayerState state) {
Log.d("KPlayer State Changed", state.toString());
}@Override
public void onKPlayerPlayheadUpdate(PlayerViewController playerViewController, float currentTime) {
Log.d("KPlayer State Changed", Float.toString(currentTime));
}@Override
public void onKPlayerFullScreenToggeled(PlayerViewController playerViewController, boolean isFullscreen) {
Log.d("KPlayer toggeled", Boolean.toString(isFullscreen));
}
});
return mFragmentView;
}
```###Loading Kaltura player into Fragment - OTT:
```public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {// Inflate the layout for this fragment
if(mFragmentView == null) {
mFragmentView = inflater.inflate(R.layout.fragment_fullscreen, container, false);
}mPlayerView = (PlayerViewController) mFragmentView.findViewById(R.id.player);
mPlayerView.loadPlayerIntoActivity(getActivity());
KPPlayerConfig config = null;
try {
config = KPPlayerConfig.fromJSONObject(new JSONObject(getConfigJson("123","456","tvpapi_000")));
} catch (JSONException e) {
e.printStackTrace();
}mPlayerView.initWithConfiguration(config); mPlayerView.addEventListener(new KPEventListener() {
@Override
public void onKPlayerStateChanged(PlayerViewController playerViewController, KPlayerState state) {
Log.d("KPlayer State Changed", state.toString());
}@Override
public void onKPlayerPlayheadUpdate(PlayerViewController playerViewController, float currentTime) {
Log.d("KPlayer State Changed", Float.toString(currentTime));
}@Override
public void onKPlayerFullScreenToggeled(PlayerViewController playerViewController, boolean isFullscreen) {
Log.d("KPlayer toggeled", Boolean.toString(isFullscreen));
}
});
return mFragmentView;
}public String getConfigJson(String mediaID, String uiConfID, String tvpApi) {
String json = "{\n" +
" \"base\": {\n" +
" \"server\": \"http://192.168.160.160/html5.kaltura/mwEmbed/mwEmbedFrame.php\",\n" +
" \"partnerId\": \"\",\n" +
" \"uiConfId\": \"" + uiConfID + "\",\n" +
" \"entryId\": \"" + mediaID + "\"\n" +
" },\n" +
" \"extra\": {\n" +
" \"controlBarContainer.hover\": true,\n" +
" \"controlBarContainer.plugin\": true,\n" +
" \n" +
" \"liveCore.disableLiveCheck\": true,\n" +
" \"tvpapiGetLicensedLinks.plugin\": true,\n" +
" \"TVPAPIBaseUrl\": \"http://tvpapi-stg.as.tvinci.com/v3_9/gateways/jsonpostgw.aspx?m=\",\n" +
" \"proxyData\": {\n";// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2 /*4.3*/) {
// json = json + "\"config\": {\n" +
// " \"flavorassets\": {\n" +
// " \"filters\": {\n" +
// " \"include\": {\n" +
// " \"Format\": [\n" +
// " \"dash Main\"\n" +
// " ]\n" +
// " }\n" +
// " }\n" +
// " }\n" +
// " },";
// }
json = json + " \"MediaID\": \"" + mediaID + "\",\n" +
" \"iMediaID\": \"" + mediaID + "\",\n" +
" \"mediaType\": \"0\",\n" +
" \"picSize\": \"640x360\",\n" +
" \"withDynamic\": \"false\",\n" +
" \"initObj\": {\n" +
" \"ApiPass\": \"11111\",\n" +
" \"ApiUser\": \"" + tvpApi + "\",\n" +
" \"DomainID\": 0,\n" +
" \"Locale\": {\n" +
" \"LocaleCountry\": \"null\",\n" +
" \"LocaleDevice\": \"null\",\n" +
" \"LocaleLanguage\": \"null\",\n" +
" \"LocaleUserState\": \"Unknown\"\n" +
" },\n" +
" \"Platform\": \"Cellular\",\n" +
" \"SiteGuid\": \"\",\n" +
" \"UDID\": \"aa5e1b6c96988d68\"\n" +
" }\n" +
" }\n" +
" }\n" +
"}\n";
return json;
}
```###Fetching duration:
For fetching the duration of a video, the player must be in READY state:```
mPlayerView.addEventListener(new KPEventListener() {
@Override
public void onKPlayerStateChanged(PlayerViewController playerViewController, KPlayerState state) {
Log.d("KPlayer State Changed", state.toString());
if (state == KPlayerState.READY) {
Log.d("Duration", Double.toString(playerViewController.getDurationSec()) );
}
}@Override
public void onKPlayerPlayheadUpdate(PlayerViewController playerViewController, float currentTime) {
Log.d("KPlayer State Changed", Float.toString(currentTime));
}@Override
public void onKPlayerFullScreenToggeled(PlayerViewController playerViewController, boolean isFullscreen) {
Log.d("KPlayer toggeled", Boolean.toString(isFullscreen));
}
});
```
DEMO - Better Than Words
=====You can check out our demo which will help you to better understand our SDK:
[Kaltura Demos](https://github.com/kaltura/player-sdk-native-android/tree/develop/KalturaDemos)License and Copyright Information
===All player-sdk-native-ios code is released under the AGPLv3 unless a different license for a particular library is specified in the applicable library path