package com.kaltura.multipledtgplayer;
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView;
import android.widget.LinearLayout;
import android.widget.Toast;
import com.kaltura.playersdk.KPPlayerConfig;
import com.kaltura.playersdk.PlayerViewController;
import com.kaltura.playersdk.events.KPErrorEventListener;
import com.kaltura.playersdk.events.KPStateChangedEventListener;
import com.kaltura.playersdk.events.KPlayerState;
import com.kaltura.playersdk.types.KPError;
import static com.kaltura.playersdk.utils.LogUtils.LOGD;
public class MainActivity extends AppCompatActivity implements KPErrorEventListener, KPStateChangedEventListener {
private static final String TAG = "MainActivity";
private PlayerViewController mPlayer;
private ViewGroup mPlayerContainer;
private VideoItemsLoader mVideoItemsLoader;
private PlayerViewController.SourceURLProvider mSourceURLProvider = new PlayerViewController.SourceURLProvider() {
@Override
public String getURL(String entryId, String currentURL) {
String playbackURL = mVideoItemsLoader.getUrl(entryId);
return playbackURL;
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}
mPlayerContainer = (ViewGroup) findViewById(R.id.layout_player_container);
LinearLayout mContainer = (LinearLayout) findViewById(R.id.items);
mVideoItemsLoader = new VideoItemsLoader(this);
mVideoItemsLoader.loadItems("content.json");
mVideoItemsLoader.attachToParent(mContainer);
findViewById(R.id.btn_play).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
VideoItem item = mVideoItemsLoader.getSelectedItem();
if (item != null) {
getPlayer(item.config);
}
}
});
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
}
private PlayerViewController getPlayer(KPPlayerConfig config) {
if (mPlayer == null) {
mPlayer = new PlayerViewController(this);
mPlayerContainer.addView(mPlayer, new ViewGroup.LayoutParams(mPlayerContainer.getLayoutParams()));
mPlayer.loadPlayerIntoActivity(this);
mPlayer.initWithConfiguration(config);
mPlayer.setCustomSourceURLProvider(mSourceURLProvider);
mPlayer.setOnKPErrorEventListener(this);
mPlayer.setOnKPStateChangedEventListener(this);
} else {
mPlayer.changeConfiguration(config);
}
return mPlayer;
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case 1: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission was granted, yay! Do the
// contacts-related task you need to do.
} else {
// permission denied, boo! Disable the
// functionality that depends on this permission.
Toast.makeText(MainActivity.this, "Permission denied to read your External storage", Toast.LENGTH_SHORT).show();
}
return;
}
// other 'case' lines to check for other
// permissions this app might request
}
}
@Override
public void onKPlayerStateChanged(PlayerViewController playerViewController, KPlayerState state) {
Log.d("onKPlayerStateChanged:", " " + state);
}
@Override
public void onKPlayerError(PlayerViewController playerViewController, KPError error) {
Log.d("onKPlayerError", error.getErrorMsg());
}
}