Android技术问题

1、SDK需要在每次登陆的时候都初始化吗?

        如果在每次退出的时候都没有调用释放SDK(ECDevice.unInitial())接口,那么下次登陆的时候不需要再次初始化SDK,因为SDK不能重复初始化,所以在集成的时候,需要通过if(!ECDevice.isInitialized())方法来判断SDK当前的初始状态,如果已经初始化了,则可以直接调用登陆接口实现登陆,如果没有初始化,则先调用onInitialized进行初始化,再调用登陆接口。
        

2、运行报错Couldn't find "libserphone.so"等找不到so的问题。

        控制台出现此异常,是找不到so库, 一般出现这种情况是因为用户在libs目录下添加了我们不支持的适配文件夹,因为我们目前的so只支持arm64-v8a,armeabi,armaebi-v7a这3中so文件,所以用户的libs目录里只能有这3个适配文件,如果再添加了其它的类型就会报错。
 解决方法:
1). 截图看下libs目录,看是否有除了arm以外的类型(X86,MIPS等不支持),删除。
2). 在build.gradle 里添加:
sourceSets {
         main {
             jniLibs.srcDirs = ['libs']
         }
 }
具体位置:
3). 添加armeabi-v7a目录,将armeabi目录下的so库都拷贝至armeabi-v7a目录。

3、发送消息的时候有传duration,但是为什么接受的时候返回duration=0?

我们现在的做法是收到了文件然后自己根据文件长度计算出来的。可参考Demo
/**
* 计算语音文件的时间长度
* @param file
* @return
*/
public static int calculateVoiceTime(String file) {
 File _file = new File(file);
if (!_file.exists()) {
return 0;
 }
// 650个字节就是1s
int duration = (int) Math.ceil(_file.length() / 650);
if (duration > 60) {
return 60;
 }
if (duration < 1) {
return 1;
 }
return duration;
 }
 

4、视频会议的view如何设置?

1,本地视频:创建者在创建之前设置,接收者在接收之前设置自己本地view,布局显示
2,进入视频会议,先获取当前会议成员
  • 然后循环请求其他人的view
代码实现如下:

5、来电弹起界面说明

1.如果用户初始化成功后注册了来电弹起界面,来电后就会弹起代码如下
如果用户没有在初始化的时候注册来电弹起界面,就会通过广播接收到来电代码如下