Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.webmons.disono.p2pPlayer;
- //adb logcat -b crash
- //adb logcat -c
- import android.app.Activity;
- import android.os.Bundle;
- import android.widget.Button;
- import android.widget.TextView;
- import com.dueeeke.videocontroller.StandardVideoController;
- import com.dueeeke.videoplayer.exo.ExoMediaPlayerFactory;
- import com.dueeeke.videoplayer.ijk.IjkPlayerFactory;
- import com.dueeeke.videoplayer.player.AndroidMediaPlayerFactory;
- import com.dueeeke.videoplayer.player.VideoView;
- import com.cdnbye.sdk.ChannelIdCallback;
- import com.cdnbye.sdk.P2pEngine;
- import com.cdnbye.sdk.P2pConfig;
- import com.cdnbye.sdk.P2pStatisticsListener;
- import com.cdnbye.sdk.LogLevel;
- import org.json.JSONException;
- import org.json.JSONObject;
- import java.util.List;
- import java.util.logging.Logger;
- import android.content.Context;
- import android.content.Intent;
- import android.content.IntentFilter;
- import android.content.BroadcastReceiver;
- import android.content.pm.ActivityInfo;
- import android.view.Window;
- import android.view.WindowManager;
- import android.view.KeyEvent;
- import android.view.View;
- public class P2PActivity extends Activity {
- private Activity activity;
- public static final String BROADCAST_LISTENER = "com.webmons.disono.p2pPlayer.Listener";
- private VideoView videoView;
- private StandardVideoController controller;
- private String VOD = "";
- private String LIVE = "";
- private Button replayBtn;
- private Button switchBtn;
- private Button vodBtn;
- private Button liveBtn;
- private String currentUrl = VOD;
- // private String currentUrl = LIVE;
- private double totalHttpDownloaded = 0;
- private double totalP2pDownloaded = 0;
- private double totalP2pUploaded = 0;
- private String _url;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- activity = this;
- _broadcastRCV();
- Intent intent = getIntent();
- _url = intent.getStringExtra("url");
- VOD = _url;
- LIVE = _url;
- currentUrl = _url;
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
- this.requestWindowFeature(Window.FEATURE_NO_TITLE);
- getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
- setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
- //.SEPARATOR.//
- setContentView(getResources().getIdentifier("p2p_player", "layout", getPackageName()));
- TextView versionV = findViewById(getResources().getIdentifier("version", "id", getPackageName()));
- versionV.setText("Version: " + P2pEngine.Version);
- P2pConfig config = new P2pConfig.Builder()
- .p2pEnabled(false)
- .logEnabled(true)
- .logLevel(LogLevel.DEBUG)
- .build();
- P2pEngine engine = P2pEngine.initEngine(getApplicationContext(), "free", config);
- engine.addP2pStatisticsListener(new P2pStatisticsListener() {
- @Override
- public void onHttpDownloaded(long value) {
- totalHttpDownloaded += (double)value;
- refreshRatio();
- checkIfConnected();
- }
- @Override
- public void onP2pDownloaded(long value) {
- totalP2pDownloaded += (double)value;
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- TextView offloadV = findViewById(getResources().getIdentifier("offload", "id", getPackageName()));
- String text = String.format("Offload: %.2fMB", totalP2pDownloaded/1024);
- offloadV.setText(text);
- refreshRatio();
- }
- });
- checkIfConnected();
- }
- @Override
- public void onP2pUploaded(long value) {
- totalP2pUploaded += (double)value;
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- TextView uploadV = findViewById(getResources().getIdentifier("upload", "id", getPackageName()));
- String text = String.format("Upload: %.2fMB", totalP2pUploaded/1024);
- uploadV.setText(text);
- }
- });
- checkIfConnected();
- }
- @Override
- public void onPeers(List<String> peers) {
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- TextView peersV = findViewById(getResources().getIdentifier("peers", "id", getPackageName()));
- String text = String.format("Peers: %d", peers.size());
- peersV.setText(text);
- }
- });
- checkIfConnected();
- }
- });
- startPlay(currentUrl);
- replayBtn = findViewById(getResources().getIdentifier("replay", "id", getPackageName()));
- switchBtn = findViewById(getResources().getIdentifier("switcher", "id", getPackageName()));
- vodBtn = findViewById(getResources().getIdentifier("vod", "id", getPackageName()));
- liveBtn = findViewById(getResources().getIdentifier("live", "id", getPackageName()));
- replayBtn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- // 清空数据
- clearData();
- startPlay(currentUrl);
- }
- });
- switchBtn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- if (currentUrl.equals(VOD)) {
- currentUrl = LIVE;
- } else {
- currentUrl = VOD;
- }
- // 清空数据
- clearData();
- startPlay(currentUrl);
- }
- });
- vodBtn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- // 清空数据
- clearData();
- currentUrl = VOD;
- startPlay(currentUrl);
- }
- });
- liveBtn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- // 清空数据
- clearData();
- currentUrl = LIVE;
- startPlay(currentUrl);
- }
- });
- }
- BroadcastReceiver br = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- if (intent != null) {
- String method = intent.getStringExtra("method");
- if (method != null) {
- switch (method) {
- case "pause":
- if (videoView.isPlaying()) {
- videoView.pause();
- }
- break;
- case "resume":
- if (!videoView.isPlaying()) {
- videoView.resume();
- }
- break;
- case "release":
- videoView.release();
- break;
- }
- }
- }
- }
- };
- private void _broadcastRCV() {
- IntentFilter filter = new IntentFilter(VideoPlayerP2P.BROADCAST_METHODS);
- activity.registerReceiver(br, filter);
- }
- private void _sendBroadCast(String methodName) {
- Intent intent = new Intent();
- intent.setAction(BROADCAST_LISTENER);
- intent.putExtra("method", methodName);
- activity.sendBroadcast(intent);
- }
- private void _sendBroadCast(String methodName, JSONObject object) {
- Intent intent = new Intent();
- intent.setAction(BROADCAST_LISTENER);
- intent.putExtra("method", methodName);
- intent.putExtra("data", object.toString());
- activity.sendBroadcast(intent);
- }
- private void startPlay(String url) {
- String parsedUrl = P2pEngine.getInstance().parseStreamUrl(url);
- videoView = findViewById(getResources().getIdentifier("player", "id", getPackageName()));
- videoView.setFocusable(true);
- videoView.setFocusableInTouchMode(true);
- videoView.release();
- videoView.setUrl(parsedUrl); //设置视频地址
- // 使用IjkPlayer解码
- // videoView.setPlayerFactory(IjkPlayerFactory.create(this));
- // 使用ExoPlayer解码
- videoView.setPlayerFactory(ExoMediaPlayerFactory.create(this));
- // 使用MediaPlayer解码
- // videoView.setPlayerFactory(AndroidMediaPlayerFactory.create(this));
- if (controller == null) {
- controller = new StandardVideoController(this);
- }
- videoView.setVideoController(controller); //设置控制器,如需定制可继承BaseVideoController
- videoView.start();
- }
- private void checkIfConnected() {
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- TextView connectedV = findViewById(getResources().getIdentifier("connected", "id", getPackageName()));
- String text = String.format("Connected: %s", P2pEngine.getInstance().isConnected()?"Yes":"No");
- connectedV.setText(text);
- TextView peerIdV = findViewById(getResources().getIdentifier("peerId", "id", getPackageName()));
- String text2 = String.format("Peer ID: %s", P2pEngine.getInstance().getPeerId());
- peerIdV.setText(text2);
- }
- });
- }
- private void refreshRatio() {
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- double ratio = 0;
- if (totalHttpDownloaded+totalP2pDownloaded != 0) {
- ratio = totalP2pDownloaded/(totalHttpDownloaded+totalP2pDownloaded);
- }
- TextView ratioV = findViewById(getResources().getIdentifier("ratio", "id", getPackageName()));
- String text = String.format("P2P Ratio: %.0f%%", ratio*100);
- ratioV.setText(text);
- }
- });
- }
- private void clearData() {
- totalHttpDownloaded = 0;
- totalP2pDownloaded = 0;
- totalP2pUploaded = 0;
- checkIfConnected();
- refreshRatio();
- }
- @Override
- protected void onPause() {
- super.onPause();
- videoView.pause();
- _sendBroadCast("onPause");
- }
- @Override
- protected void onResume() {
- super.onResume();
- videoView.resume();
- _sendBroadCast("onResume");
- }
- @Override
- protected void onDestroy() {
- super.onDestroy();
- videoView.release();
- _sendBroadCast("onDestroy");
- }
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- JSONObject obj = new JSONObject();
- try {
- obj.put("keyCode", keyCode);
- if (keyCode == KeyEvent.KEYCODE_BACK) {
- obj.put("isBackCode", true);
- } else {
- obj.put("isBackCode", false);
- }
- } catch (JSONException e) {
- e.printStackTrace();
- }
- _sendBroadCast("onKeyDown", obj);
- return super.onKeyDown(keyCode, event);
- }
- @Override
- public boolean onKeyUp(int keyCode, KeyEvent event) {
- JSONObject obj = new JSONObject();
- try {
- obj.put("keyCode", keyCode);
- if (keyCode == KeyEvent.KEYCODE_BACK) {
- obj.put("isBackCode", true);
- } else {
- obj.put("isBackCode", false);
- }
- } catch (JSONException e) {
- e.printStackTrace();
- }
- _sendBroadCast("onKeyUp", obj);
- return super.onKeyUp(keyCode, event);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement