用户工具

站点工具


open:android接入指南

Android接入指南

一、简介

本文档为了指导开发者更快使用微吼直播SDK在Android系统上进行开发,默认读者已经熟悉IDE的基本使用方法(本文以Eclipse为例),以及具有一定的编程知识基础等。

发起端功能列表如下:

初始化直播设备 发起直播 关闭直播

观看端功能列表如下:

创建观看view 开始播放 停止播放 回放视频观看

二、向微吼申请开通权限

请点击 API&SDK权限申请 立即沟通申请,申请后客户经理会在线上与您直接联系。

审核通过后,可以获取开发应用的权限信息:App_Key、Secret_Key,点击查看

三、下载微吼直播SDK文件

文件名称 版本号 更新日期 更新内容 下载
流媒体直播SDK V2.1.1 2016/3/31 修复bug 点击下载

注:此SDK为原来“全文位版SDK”的升级

四、将SDK添加到工程

1、导入SO库与JAR包

将SO库与JAR包放入项目根目录的libs文件夹内,目录结构如图:

五、发起观看直播

1、使用权限配置

使用App_Key、Secret_Key,调用API可获取到Token和StreamName。 点击查看API文档

2、发起直播

2.1 初始化直播设备

在Activity的onCreate方法中,创建CameraView,并且初始化

/*
Activity activity: SurfaceView所在的activity
SurfaceView surfaceView
*/
public CameraView(Activity activity, SurfaceView surfaceView) {}
/*
int below_id:指定surfaceview放在哪个id的下面
ViewGroup.LayoutParams layoutParams: surfaceview所在的layout类型
int cameraId:指定摄像头
boolean isAutoFocus: true表示开启自动对焦,false表示开启手动对焦
*/
public void init(int below_id, ViewGroup.LayoutParams layoutParams, int cameraId, boolean isAutoFocus) {}

2.2 发起直播

/**
	 * 发起直播
	 */
	private void startPublish() {
		if (param == null)
			return;
		if (NativeLive.SetParam(param.getParamStr()) < 0) {
			showAlert("直播参数错误");
			finish();
		}
		if (TextUtils.isEmpty(url) || TextUtils.isEmpty(stream_token) || TextUtils.isEmpty(roomid)) {
			showAlert("参数为空");
			return;
		}
		String publishUrl = url + "?token=" + stream_token + "/" + roomid;
		if (NativeLive.StartPublish(publishUrl) < 0) {
			showAlert("开始直播失败");
			finish();
		} else {
			mProcessDialog.show();
			if (attend != null)
				attend.attend();
		}
	}(String publishUrl)

2.3 关闭直播

/**
	 * 停止直播
	 */
	private void stopPublish() {
		if (isPublishing) {
			mProcessDialog.dismiss();
			mCameraView.stopPublish();
			stopAudioCapture();
			NativeLive.StopPublish();
		}
		isPublishing = false;
		mPublishBtn.setText("开始直播");
		if (attend != null)
			attend.disAttend();
	}

3、观看直播

3.1 开始观看直播

   private void startWatch() {
		if (NativeLive.StartRecv(url) < 0) {
			// Toast.makeText(MainActivity.this, "StartRecv error",
			// Toast.LENGTH_SHORT).show();
			showAlert("开始观看失败");
			finish();
		} else {
			mProcessDialog.show();
		}
	}

3.2 观看过程回调

private LiveCallback mLiveCallBack = new LiveCallback() {
		@Override
		public void notifyVideoData(byte[] data) {
			// Log.e(TAG, "videoData:" + data.length);
			if (mPlayView != null && mPlayView.isReady()) {
				mPlayView.UpdateScreenAll(data);
			}
		}
 
		@Override
		public int notifyAudioData(byte[] data, int size) {
			// Log.e(TAG, "audioData:" + data.length + "size:" + size);
			if (!isWatching)
				return 1;
			if (mAudioPlay != null) 
				mAudioPlay.play(data, size);
				return 1;
 
		}
 
		@Override
		public void notifyEvent(int resultCode, String content) {
			if (handler != null) {
				try {
					Message message = new Message();
					message.what = resultCode;
					message.obj = content;
					handler.sendMessage(message);
				} catch (Exception e) {
				}
			}
		}
 
		@Override
		public void onH264Video(byte[] data, int size, int type) {
 
		}
 
	};

3.3 停止观看直播

private void stopWatch() {
		if (isWatching) {
			int num = NativeLive.StopRecv();
			isWatching = false;
			watch_btn.setText("开始观看");
			mProcessDialog.dismiss();
		}
		if (attend != null)
			attend.disAttend();
 
	}
open/android接入指南.txt · 最后更改: 2016/03/31 15:39 由 yong.xu