简单做了个集成融云视频通话的demo,这里是为了方便测试所以就固定了2个token!
首先看一个项目目录
上面是目录结构比较简单,在融云官网将下面的下载下来
上面的压缩包包含了我们需要的SDK,然后在studio 中用Import Moudle 方式将这几个文件导入项目中然后在app的gradle中添加依赖
在这个之前最好先去融云官网注册一个账号,注册好后,在平台上建好项目
这个是我建立的一个项目,开通了音视频服务,免费送了1000分钟,这样可以够测试用,先不用充值!这样就为后面获取appkey 和token 做好准备!
可以根据官网的集成的文档将你建立项目的appkey写入IMLIB中!
下面来看看项目:
比较简单:
@Override
public void onCreate() {
super.onCreate();
RongIM.init(this);
}
public static String getCurProcessName(Context context) {
int pid = android.os.Process.myPid();
ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningAppProcessInfo appProcess : activityManager.getRunningAppProcesses()) {
if (appProcess.pid == pid) {
return appProcess.processName;
}
}
return null;
}
在onCreat()进行 RongIM.init(this)的初始化!
package rongtong.gisocn.com;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import com.bailingcloud.bailingvideo.engine.binstack.util.FinLog;
import java.math.RoundingMode;
import java.util.Locale;
import io.rong.callkit.RongCallAction;
import io.rong.callkit.RongCallModule;
import io.rong.callkit.RongVoIPIntent;
import io.rong.calllib.IRongReceivedCallListener;
import io.rong.calllib.RongCallClient;
import io.rong.calllib.RongCallSession;
import io.rong.imkit.RongIM;
import io.rong.imlib.RongIMClient;
import io.rong.imlib.model.Conversation;
public class MainActivity extends AppCompatActivity {
private String useid;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String s ="mrzAPLdV0WJBEVGMw3KMVnsVVRJw+MrQAVLcaePa/G0glSLp1g90djAx7DeKB9IEY8TmxTTgZ/5dD5uY7OydJQ=="
;
login(s);
}
public void login(String cacheToken){
if (getApplicationInfo().packageName.equals(App.getCurProcessName(getApplicationContext()))) {
RongIM.connect(cacheToken, new RongIMClient.ConnectCallback() {
@Override
public void onTokenIncorrect() {
}
@Override
public void onSuccess(String s) {
Log.d("LoginActivity", "--onSuccess" + s);
Toast.makeText(MainActivity.this, "成功", Toast.LENGTH_LONG).show();
useid=s;
}
@Override
public void onError(RongIMClient.ErrorCode e) {
}
});
}
}
public void startTalk(View view){
Intent intent = new Intent(RongVoIPIntent.RONG_INTENT_ACTION_VOIP_SINGLEAUDIO);
intent.putExtra("conversationType", Conversation.ConversationType.PRIVATE.getName().toLowerCase());
intent.putExtra("targetId", "as");
intent.putExtra("callAction", RongCallAction.ACTION_OUTGOING_CALL.getName());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setPackage(getPackageName());
getApplicationContext().startActivity(intent);
// RongCallKit.startSingleCall(mContext,"kevin", RongCallKit.CallMediaType.CALL_MEDIA_TYPE_VIDEO);
}
public void starVoide(View view){
Intent intent = new Intent(RongVoIPIntent.RONG_INTENT_ACTION_VOIP_SINGLEVIDEO);
intent.putExtra("conversationType", Conversation.ConversationType.PRIVATE.getName().toLowerCase(Locale.US));
intent.putExtra("targetId", "as");
intent.putExtra("callAction", RongCallAction.ACTION_OUTGOING_CALL.getName());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setPackage(getPackageName());
getApplicationContext().startActivity(intent);
}
}
上面就是通话的代码!
String s =“mrzAPLdV0WJBEVGMw3KMVnsVVRJw+MrQAVLcaePa/G0glSLp1g90djAx7DeKB9IEY8TmxTTgZ/5dD5uY7OydJQ==”
这个就是我们在项目添加了人员后,同过平台上的api调试,根据userID获取到的,这个userId是个人自己创建的!比如我们想由A和B通话,在token处填写的 是A的, intent.putExtra(“targetId”, “as”)在这里填写的是B的userId!另外就是因为只是单纯的通话没有列表之类的,所以RongCallModule类里的 private boolean mViewLoaded =true;设置为true不然无法被呼叫方无法调出接听界面!