返回

从零到一 | 轻松掌握 Android 端 WebRTC 开发

Android

在学习 WebRTC 的过程中,学习的一个基本步骤是先通过 JS 学习 WebRTC的整体流程,在熟悉了整体流程之后,再学习其它端如何使用 WebRTC 进行互联互通。本文将讲解 Android 端是如何使用 WebRTC 的,至于 P2P 穿越、STUN/TURN/ICE、RTCP、RTP、SDP 等概念,可参考上一篇文章中 JS 的相关内容。

1. 搭建开发环境

  • 安装 Android Studio

  • 配置 Android SDK

  • 安装 WebRTC Android 库

2. 获取权限

在使用 WebRTC 之前,需要在 AndroidManifest.xml 文件中声明以下权限:

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />

3. 配置依赖

在 app/build.gradle 文件中添加以下依赖:

implementation 'org.webrtc:google-webrtc:1.0.34414'

4. 创建项目

打开 Android Studio,创建一个新的项目,选择“Empty Activity”模板。

5. 添加 WebRTC 库

将 WebRTC 库添加到项目中,方法是将其复制到 app/libs 目录下。

6. 配置 ProGuard

在 app/proguard-rules.pro 文件中添加以下配置:

-keep class org.webrtc.** { *; }

7. 编写代码

在 MainActivity.java 文件中添加以下代码:

import org.webrtc.PeerConnectionFactory;
import org.webrtc.SurfaceViewRenderer;

public class MainActivity extends AppCompatActivity {

  private PeerConnectionFactory peerConnectionFactory;
  private SurfaceViewRenderer localView;
  private SurfaceViewRenderer remoteView;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // 创建 PeerConnectionFactory
    PeerConnectionFactory.InitializationOptions initializationOptions =
        PeerConnectionFactory.InitializationOptions.builder(this).createInitializationOptions();
    PeerConnectionFactory.initialize(initializationOptions);
    peerConnectionFactory = PeerConnectionFactory.builder().createPeerConnectionFactory();

    // 创建本地视频视图和远程视频视图
    localView = findViewById(R.id.local_view);
    remoteView = findViewById(R.id.remote_view);

    // 创建 PeerConnection
    PeerConnection peerConnection = peerConnectionFactory.createPeerConnection(null, null);

    // 设置本地视频源
    VideoSource videoSource = peerConnectionFactory.createVideoSource(false);
    peerConnection.addVideoTrack(videoSource.capturer().createTrack(id));

    // 设置本地音频源
    AudioSource audioSource = peerConnectionFactory.createAudioSource(false);
    peerConnection.addAudioTrack(audioSource.capturer().createTrack(id));

    // 创建 SDP offer
    peerConnection.createOffer(new SdpOfferObserver(), new MediaConstraints());
  }

  private class SdpOfferObserver implements SdpObserver {
    @Override
    public void onCreateSuccess(SessionDescription sessionDescription) {
      // 发送 SDP offer
    }

    @Override
    public void onCreateFailure(String s) {
      // 处理错误
    }
  }
}

8. 运行程序

运行程序,即可看到本地视频和远程视频视图。

9. 进阶学习

本文只是简单介绍了如何使用 WebRTC 在 Android 端进行开发。有关更多详细信息,请参阅 WebRTC 官方文档。