# EasyWebrtc
**Repository Path**: Eurigo/EasyWebrtc
## Basic Information
- **Project Name**: EasyWebrtc
- **Description**: Android WebRtc
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2022-06-17
- **Last Updated**: 2022-06-20
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
集成
启动本地视频
建立连接
销毁
关于几个重要回调说明
其他问题
# EasyWebrtc
### Android的WebRtc实现
> 只需要几行带代码就可以视频通话
### 集成
+ 在项目级 `build.gradle`添加
```groovy
allprojects {
repositories {
maven { url 'https://jitpack.io' }
}
}
```
+ 在app模块下的`build.gradle`文件中加入,Tag[](https://jitpack.io/#eurigo/EasyWebrtc)
```groovy
dependencies {
implementation 'com.github.eurigo:EasyWebrtc:Tag'
}
```
+ 在app模块下的AndroidManifest.xml添加权限
```xml
/>
```
### 启动本地视频
```java
// 配置STUN服务器地址,设置回调
EasyRtc.create(Constant.STUN, new EasyRtcCallBack);
EasyRtc.setLocalView(localVideoView);
EasyRtc.setRemoteView(remoteVideoView);
// 开启本地视频
EasyRtc.startLocalVideo();
```
### 建立连接
```java
// 配置STUN服务器地址,设置回调
EasyRtc.createOffer();
```
### 销毁
```
// 在onDestory时release
EasyRtc.release();
```
### 关于几个重要回调说明
```java
/**
* 发送 offer sdp
* @param sessionDescription sdp
* 在创建offer之后需要把sdp发送给对方,可以使用webSocket、http等都可以
* 被呼叫方收到offer之后需要EasyRtc.setRemoteSdp(SessionDescription sessionDescription);
*/
@Override
public void onSendOffer(SessionDescription sessionDescription) {
WsData wsData = new WsData(EventType.SEND_OFFER, DeviceUtils.getAndroidID(), "");
wsData.setSessionDescription(sessionDescription);
WsManager.getInstance().send(GsonUtils.toJson(wsData));
}
/**
* 发送 answer sdp
* @param sessionDescription sdp
* 本质上也是sdp的发送
* 被呼叫方收到Answer之后需要EasyRtc.setRemoteSdp(SessionDescription sessionDescription);
*/
@Override
public void onSendAnswer(SessionDescription sessionDescription) {
WsData wsData = new WsData(EventType.SEND_ANSWER, DeviceUtils.getAndroidID(), "");
wsData.setSessionDescription(sessionDescription);
WsManager.getInstance().send(GsonUtils.toJson(wsData));
}
/**
* 发送 Ice
* 类似sdp,需要发STUN返回的Ice发送给远端
* 被呼叫方收到Ice之后需要EasyRtc.setRemoteIce(IceCandidate iceCandidate);
*/
@Override
public void onSendIce(IceCandidate iceCandidate) {
WsData wsData = new WsData(EventType.SEND_ICE, DeviceUtils.getAndroidID(), "");
wsData.setIceCandidate(iceCandidate);
WsManager.getInstance().send(GsonUtils.toJson(wsData));
}
@Override
public void onConnectStateChange(PeerConnection.PeerConnectionState newState) {
}
@Override
public void onRtcConnected() {
// ice已连接
}
@Override
public void onRtcDisconnect() {
// ice已断开
}
@Override
public void onRtcConnectFailed() {
// ice连接失败,通常fail发生在连接断开之后
}
@Override
public void onChannelMessage(DataChannel.Buffer buffer) {
// P2P Channel接收到消息
}
```
### 其他问题
参考MainActivity