qq_40425311 2024-03-30 14:57 采纳率: 50%
浏览 6

android,集成实时音视频,调用屏幕分享,出现102015错误?

android 集成实时音视频,出现如下错误
ERR_SCREEN_SHARE_NOT_AUTHORIZED -102015 没有权限上行辅路
https://github.com/LiteAVSDK/TRTC_Android 这个demo默认使用正常,但把compileSdkVersion,targetSdkVersion改成33,因项目上架原因,需要将targetSdkVersion设置为31以上,设置后就出现102015错误,我查看官方文档,也没看到出现该问题的相关解释,请问如何解决该问题?

经过本地测试,TRTC-API-Example项目targetSdkVersion=29 就出现
ERR_SCREEN_SHARE_NOT_AUTHORIZED -102015 没有权限上行辅路
这个错

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-03-30 14:57
    关注

    引自免费微信小程序:皆我百晓生

    在Android Studio中集成实时音视频,并调用屏幕分享出现"ERR_SCREEN_share_not_authenticated - 102015"错误时,主要原因是目标API版本不兼容导致的权限限制问题。TRTC API 是 Google 提供的音频、视频通话和屏幕共享功能,它主要用于设备之间的高清音频和视频传输。以下是解决此问题的详细步骤:

    1. 检查 compileSdkVersion 和 targetSdkVersion 设置

    确保你的 Android 开发环境已经正确安装了最新版本的 Android SDK 并且这两个版本都与你的项目的目标 API(例如,33 或更高)匹配。你可以通过以下命令更新 your-sdk.sh 文件中的这些值:

    ./gradlew updateReleaseAndroid
    

    这将下载并更新到你当前项目中的 latest-release-release-android 目录下的 android-jdk 'stable'。

    2. 检查 Trtc 库的版本与你的 project 的 Target API Level 适配

    你需要确认 Trtc 库所依赖的版本与你的项目目标 API 权限要求保持一致。请参阅以下 Trtc 官方文档中的关于目标 API 版本与库版本关系的部分:

    • https://trtc.github.io/trtc-api-docs/releases/v0.7.13/

    按照以下步骤检查 Trtc 在你项目的源码目录中的版本:

    a. 打开 build.gradle 文件,找到 <dependencies> 子句:

      ```groovy
      implementation 'com.google.android.media:media-api:26.1.4'
      implementation 'com.google.android.gms:play-services-media:18.1.0'
      implementation 'com.google.android.googleglass:google-glass-auth:0.1.1'
      implementation 'com.google.android.material:material:1.5.0-alpha07'
      ```
    

    b. 查看以下依赖项中的 API 版本:

      ```
      implementation 'com.google.android.googleglass:google-glass-auth:[18.1.0]'
      implementation 'com.google.android.material:material:[1.5.0-alpha07]'
      ```
    

    c. 如果使用的是 Android 10 或更高版本,确定与 API 版本相对应的最小 SDK version 是否已包含目标 API 的最低版本号:

      ```java
      minSdkVersion = context.getBuildConfigMinSdk();
      targetSdkVersion = context.getBuildConfigTargetSdk();
      ```
    

    d. 如果目标 API 是 Android 10 及以下版本,则保证 >= 29。例如,目标 API 是 26,那么 Trtc 库至少需要支持 Android 26 级别:

      ```java
      minSdkVersion = 26;
      targetSdkVersion = 29;
      ```
    

    3. 解决目标 API 版本与 Trtc 库版本冲突的问题

    • 更换编译 SDK 版本

      a. 更新 build.gradle 文件中的 dependencies 命令,从上述 implementation 'com.google.android.media:media-api:26.1.4' 更改为:

        ```groovy
        implementation 'com.google.android.media:media-api:26.1.4 (>= 29)'
        implementation 'com.google.android.gms:play-services-media:18.1.0 (>= 29)'
        implementation 'com.google.android.googleglass:google-glass-auth:0.1.1 (>= 29)'
        implementation 'com.google.android.material:material:1.5.0-alpha07 (>= 29)'
        ```
      
    • 检查 Trtc 调用位置

    确保 TRTC 库函数能够正确地访问和处理正确的 API 层面。特别是在 startStreaming() 方法中,如以下所示的代码示例:

    public void startStreaming(
        MediaSession mediaSession,
        String audioOutputId,
        CameraMetadata cameraMetadata) {
        Log.d(TAG, "Starting streaming session");
        try {
            TrtcMediaSession.MediaStreamRequest.Builder builder =
                    new TrtcMediaSession.MediaStreamRequest.Builder(mediaSession)
                            .setAudioOutputId(audioOutputId)
                            .setCameraMetadata(cameraMetadata);
    
            if (cameraMetadata != null && !cameraMetadata.hasAppInfo()) {
                cameraMetadata.setAppInfo(
                        new MediaMetadata.Builder()
                                .setCategory(MediaMetadata.CATEGORY_AUDIO)
                                .setApplicationName("Your App Name")
                                .build());
            }
    
            // 创建 TrtcMediaSession.Session.Builder 对象并构建用于发送请求的 ObjectBuilder
            TrtcMediaSession.Session.Builder sessionBuilder = TrtcMediaSession.Session.newBuilder();
    
            // 添加 request builder to the session builder
            sessionBuilder.setMediaStreamRequests(builder.build());
    
            // 设置 MediaSession 中预定义的初始监听器
            MediaSession.setInitialEventListener(
                    new MediaSession.InitialListener() {
                        @Override
                        public void onMediaSessionCreated(
                                MediaSession mediaSession) {
                            Log.d(TAG, "Media session created");
                            // ...
                        }
                    });
    
            // 构建 TrtcMediaSession.Session对象并发送给 MediaSession
            mediaSession.startSession(sessionBuilder.build());
        } catch (Exception e) {
            Log.e(TAG, "Error starting streaming session", e);
            // 处理异常并重新尝试启动会话
            try {
                mediaSession.startSession(
                        sessionBuilder.build());
            } catch (Exception reExeption) {
                Log.e(TAG, "Error starting streaming session after retries", reExeption);
                throw reExeption;
            }
        }
    }
    
    • 更新配置文件(application.properties / gradle.properties)

    如果尚未应用或修改 application.properties 文件中的 TRTC_CLIENT_KEYTRTC_CLIENT_SECRET 字段,确保它们的值与提供的 JSON 键相匹配。根据上面的代码示例,你应该在 application.properties 文件中添加以下配置:

    TRTC_CLIENT_KEY=your_client_key_here
    TRTC_CLIENT_SECRET=your_client_secret_here
    
    • 更新 Trtc 库的 Gradle 插件

    确保在 build.gradle 文件的插件层中引入以下 com.google.android.gms:trtc:singleplayer 插件,并替换其中的 YOUR_TRTC_API_KEYYOUR_TRTC_API_SECRETYOUR_TRTC_STREAMING_ENDPOINT 值与对应的 JSON 键对应:

    dependencies {
        implementation 'com.google.android.gms:trtc:singleplayer:29.0.0'
    }
    
    • 重启 buildToolsVersion()

    运行 ./gradlew clean build 以删除在编译过程中产生的临时依赖,然后重新进行构建以反映以上更改:

    ./gradlew clean build
    

    4. 重新初始化目标 API 环境

    若首次出现问题,可能是因为目标 API 环境未被初始化。首先,确保已经正确启用目标 API 环境:

    a. 在 AndroidManifest.xml 文件中添加以下 `uses-permission` 标签以允许目标 API 接入系统权限:
    
    <uses-permission android:name="android.permission.SEND_SMS"/>
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>
    <uses-permission android:name="android.permission.MANAGE_SIMS"/>
    

    b. 确保目标 API 环境已存在于你的项目中:

    a. 使用 Android Studio Pro 工具包或 Git 分支管理工具(如 GitLab or GitHub)查询项目的 build.gradle 文件内容:
    
        ```
        cd your_project_directory
        find . -name 'build.gradle'
        ```
    
        或者
    
        ```
        git clone https://github.com/LiteAVSDK/TRTC.git
        cd trtc
        ```
    
    b. 找到你的 build.gradle 文件中的 `apply plugin: 'com.google.android.gms:trtc:singleplayer'` 和相应的 `.gradle` 文件,并打开 `build.gradle` 文件并编辑以下内容:
    
        ```groovy
        apply plugin: 'com.google.android.gms:trtc:singleplayer'
    
        dependencies {
            implementation 'com.google.android.gms:play-services-media:18.1.0'
            implementation 'com.google.android.googleglass:google-glass-auth:0.1.1'
            implementation 'com.google.android.material:material:1.5.0-alpha07'
            implementation 'com.google.android.gms:recyclerview-v7:18.0.0'
            implementation 'com.google.firebase:firebase-messaging:24.0.0'
            implementation 'com.google.android.gms:firestore-gson:19.0.0'
            implementation 'com.google.firebase:firebase-auth:24.0.0'
            implementation 'com.google.firebase:firebase-analytics:24.0.0'
            implementation 'com.google.firebase:firebase-admob-common:24.0.0'
            implementation 'com.google.firebase:firebase-database:24.0.0'
            implementation 'com.google.firebase:firebase-firestore:24.0.0'
            implementation 'com.google.firebase:firebase-bidder-admob-intents:24.0.0'
            implementation 'com.google.firebase:firebase-analytics:24.0.0'
            implementation 'com.google.firebase:firebase-admob-analytics:24.0.0'
            implementation 'com.google.firebase:firebase-iab-provider:24.0.0'
            implementation 'com.google.firebase:firebase-appengine-backend-service:24.0.0'
            implementation 'com.google.firebase:firebase-crashlytics:24
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 3月30日

悬赏问题

  • ¥100 文本摘要任务泄露问题
  • ¥15 js调用对象时报错,但是我看是有这个对象的,是不是调用方法不对
  • ¥15 希沃零度软件界面按钮传参分析
  • ¥15 可任意设置即使长度的倒计时器电路设计
  • ¥15 MusePose 部署安装问题,安装后无法启动
  • ¥15 Psexec获得电脑system权限该怎么操作,有偿
  • ¥50 python+flask实现流式api接口的问题
  • ¥20 关于#vue.js#的问题:后端返回的代码如下,根据后端返回的数据在页面上重新展示
  • ¥15 visual studio 社区版离线激活失败了
  • ¥15 Flask应用部署到阿里云服务器失败,无法访问网页,问题出在哪里?