From c6a5f1d1e0512d12ade2721c01ae8fb4f7616e5a Mon Sep 17 00:00:00 2001 From: acgist <289547414@qq.com> Date: Sat, 22 Apr 2023 15:38:29 +0800 Subject: [PATCH] =?UTF-8?q?[+]=20load=E9=94=99=E8=AF=AF=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E8=A7=A3=E5=86=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/acgist/taoyao/client/MainActivity.java | 4 ++-- .../media/src/main/cpp/include/MediaManager.hpp | 2 ++ .../media/src/main/cpp/webrtc/MediaManager.cpp | 13 +++++++++++++ .../taoyao/media/src/main/cpp/webrtc/Room.cpp | 9 ++++----- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/taoyao-client-android/taoyao/client/src/main/java/com/acgist/taoyao/client/MainActivity.java b/taoyao-client-android/taoyao/client/src/main/java/com/acgist/taoyao/client/MainActivity.java index cb5e2a2..5c3ce4f 100644 --- a/taoyao-client-android/taoyao/client/src/main/java/com/acgist/taoyao/client/MainActivity.java +++ b/taoyao-client-android/taoyao/client/src/main/java/com/acgist/taoyao/client/MainActivity.java @@ -182,8 +182,8 @@ public class MainActivity extends AppCompatActivity implements Serializable { } this.threadHandler.post(() -> { // 进入房间 -// Taoyao.taoyao.roomEnter("91f81c0a-0556-4087-b9a4-5889fac36fb6", null); - Taoyao.taoyao.sessionCall("taoyao"); + Taoyao.taoyao.roomEnter("4ca4b920-a422-473d-9954-660df424270f", null); +// Taoyao.taoyao.sessionCall("taoyao"); }); } diff --git a/taoyao-client-android/taoyao/media/src/main/cpp/include/MediaManager.hpp b/taoyao-client-android/taoyao/media/src/main/cpp/include/MediaManager.hpp index 0cc210c..13410d2 100644 --- a/taoyao-client-android/taoyao/media/src/main/cpp/include/MediaManager.hpp +++ b/taoyao-client-android/taoyao/media/src/main/cpp/include/MediaManager.hpp @@ -4,6 +4,8 @@ #include "Log.hpp" #include "mediasoupclient.hpp" +#include "sdk/android/src/jni/jvm.h" + namespace acgist { } \ No newline at end of file diff --git a/taoyao-client-android/taoyao/media/src/main/cpp/webrtc/MediaManager.cpp b/taoyao-client-android/taoyao/media/src/main/cpp/webrtc/MediaManager.cpp index cfcf221..38f391e 100644 --- a/taoyao-client-android/taoyao/media/src/main/cpp/webrtc/MediaManager.cpp +++ b/taoyao-client-android/taoyao/media/src/main/cpp/webrtc/MediaManager.cpp @@ -2,8 +2,21 @@ namespace acgist { + /** + * 非常重要 + * 如果没有配置很多方法莫名其妙报错 + * + * @param env JNIEnv + */ + void initWebrtcJni(JNIEnv* env) { + JavaVM* javaVM; + env->GetJavaVM(&javaVM); + webrtc::jni::InitGlobalJniVariables(javaVM); + } + extern "C" JNIEXPORT void JNICALL Java_com_acgist_taoyao_media_MediaManager_nativeInit(JNIEnv* env, jobject me) { + initWebrtcJni(env); std::string version = mediasoupclient::Version(); LOG_I("加载MediasoupClient", version.data()); mediasoupclient::Initialize(); diff --git a/taoyao-client-android/taoyao/media/src/main/cpp/webrtc/Room.cpp b/taoyao-client-android/taoyao/media/src/main/cpp/webrtc/Room.cpp index 2ee8e95..0e2b39a 100644 --- a/taoyao-client-android/taoyao/media/src/main/cpp/webrtc/Room.cpp +++ b/taoyao-client-android/taoyao/media/src/main/cpp/webrtc/Room.cpp @@ -360,11 +360,10 @@ namespace acgist { jlong factoryPointer, jobject jRtcConfiguration ) { Room* room = (Room*) nativeRoomPointer; - webrtc::PeerConnectionInterface::RTCConfiguration rtcConfiguration(webrtc::PeerConnectionInterface::RTCConfigurationType::kSafe); -// webrtc::jni::JavaToNativeMediaConstraints(); -// webrtc::PeerConnectionInterface::RTCConfiguration rtcConfiguration(webrtc::PeerConnectionInterface::RTCConfigurationType::kAggressive); -// TODO:为什么不能转换?测试是否因为stun配置问题 - webrtc::JavaParamRef jRtcConfigurationRef(jRtcConfiguration); +// webrtc::PeerConnectionInterface::RTCConfiguration rtcConfiguration(webrtc::PeerConnectionInterface::RTCConfigurationType::kSafe); + webrtc::PeerConnectionInterface::RTCConfiguration rtcConfiguration(webrtc::PeerConnectionInterface::RTCConfigurationType::kAggressive); + webrtc::JavaParamRef jRtcConfigurationRef(env, jRtcConfiguration); + // 注意 webrtc::jni::JavaToNativeRTCConfiguration(env, jRtcConfigurationRef, &rtcConfiguration); const char* rtpCapabilities = env->GetStringUTFChars(jRtpCapabilities, nullptr); room->enterRoom(