setClientRole切换为主播,返回-9为什么?怎么解决

直播模式下,我先以CLIENT_ROLE_AUDIENCE 身份加入直播间,然后在然后在setClientRole切换为主播,返回-9为什么?怎么解决

1、请确认是否有在 /app/src/main/AndroidManifest.xml 文件中添加如下行,获取相应的设备权限:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="io.agora.tutorials1v1acall">

   <uses-permission android:name="android.permission.READ_PHONE_STATE" />   
   <uses-permission android:name="android.permission.INTERNET" />
   <uses-permission android:name="android.permission.RECORD_AUDIO" />
   <uses-permission android:name="android.permission.CAMERA" />
   <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
   <uses-permission android:name="android.permission.BLUETOOTH" />
   <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
   // 如果你的场景中涉及读取外部存储,需添加如下权限:
   <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
   // 如果你使用的是 Android 10.0 及以上设备,还需要添加如下权限:
   <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />

...
</manifest>

如果你的 targetSdkVersion >= 29,还需要在 AndroidManifest.xml 文件的 <application> 区域添加如下行:

   <application
      android:requestLegacyExternalStorage="true">
      ...
   </application>

2、如果你一开始以观众角色加入频道时,APP 没有获取到麦克风和摄像头权限,那么后续是无法动态申请媒体设备权限的,即使申请到了可能也会不生效,此时则会无法切换为主播角色进行推流。所以我们建议在 APP 启动时就获取需要的权限。然后在主播开播前,再通过系统方法检测一下是否有对应权限,如果没有,需要提醒用户去获取权限。