环信camerahelper怎么获取

2025-04-05 23:13:53
推荐回答(1个)
回答1:

在清单文件AndroidManifest.xml里加入以下权限,以及写上你注册的appkey
1.权限配置:


package="Your Package"
android:versionCode="100"
android:versionName="1.0.0">


















应用包名及appkey替换:
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:name="Your Application">








2.初始化SDK

要求在application的oncreate方法中做初始化

EMChat.getInstance().init(applicationContext);

/**
* debugMode == true 时为打开,sdk 会在log里输入调试信息
* @param debugMode
* 在做代码混淆的时候需要设置成false
*/
EMChat.getInstance().setDebugMode(true);

//在做打包混淆时,要关闭debug模式,避免消耗不必要的资源

3.注册

注册模式分两种,开放注册和授权注册。只有开放注册时,才可以客户端注册。

开放注册是为了测试使用,正式环境中不推荐使用该方式注册环信账号, 授权注册的流程应该是您服务器通过环信提供的rest api注册,之后保存到您的服务器或返回给客户端。

注册用户名会自动转为小写字母,所以建议用户名均以小写注册(强烈建议开发者通过后台调用rest接口去注册环信id,客户端注册方法不提倡使用)

new Thread(new Runnable() {
public void run() {
try {
// 调用sdk注册方法
EMChatManager.getInstance().createAccountOnServer(username, pwd);
} catch (final EaseMobException e) {
//注册失败
int errorCode=e.getErrorCode();
if(errorCode==EMError.NONETWORK_ERROR){
Toast.makeText(getApplicationContext(), "网络异常,请检查网络!", Toast.LENGTH_SHORT).show();
}else if(errorCode==EMError.USER_ALREADY_EXISTS){
Toast.makeText(getApplicationContext(), "用户已存在!", Toast.LENGTH_SHORT).show();
}else if(errorCode==EMError.UNAUTHORIZED){
Toast.makeText(getApplicationContext(), "注册失败,无权限!", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getApplicationContext(), "注册失败: " + e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
}).start();

4.登录

登陆聊天服务器

需要注意: 登陆成功后需要调用

EMGroupManager.getInstance().loadAllGroups();

从本地数据库加载群组到内存的操作,如果你的应用中有群组,请加上这句话(要求在每次进入应用的时候调用)

EMChatManager.getInstance().loadAllConversations();

从本地数据库加载聊天记录到内存的操作(强烈建议在每次进入应用的时候调用) 以上两个方法是为了保证进入主页面后本地会话和群组都load完毕。另外如果登陆过,app长期在后台再进的时候也可能会导致加载到内存的群组和会话为 空,可以在主页面的oncreate里也加上这两句代码,当然,更好的办法应该是放在程序的开屏页,可参考demo的SplashActivity。

EMChatManager.getInstance().login(userName,password,new EMCallBack() {//回调
@Override
public void onSuccess() {
runOnUiThread(new Runnable() {
public void run() {
EMGroupManager.getInstance().loadAllGroups();
EMChatManager.getInstance().loadAllConversations();
Log.d("main", "登陆聊天服务器成功!");
}
});
}

@Override
public void onProgress(int progress, String status) {

}

@Override
public void onError(int code, String message) {
Log.d("main", "登陆聊天服务器失败!");
}
});

自动登录

即首次登录成功后,不需要再次调用登录方法,在下次app启动时,SDK会自动为您登录。并且如果您自动登录失败,也可以读取到之前的会话信息(以上情况是在未调用登出的情况下实现的)。 配置是否进行自动登录

SDK中自动登录属性默认是true打开的,如果不需要自动登录,在初始化SDK之前,调用

EMChat.getInstance().setAutoLogin(false);

设置为false关闭

自动登录

自动登录在以下几种情况下会被取消

用户调用了SDK的登出动作;

用户在别的设备上更改了密码, 导致此设备上自动登陆失败;

用户的账号被从服务器端删除;

用户从另一个设备登录,把当前设备上登陆的用户踢出.

重连

当掉线时,Android SDK会自动重连,无需进行任何操作。

//注册一个监听连接状态的listener
EMChatManager.getInstance().addConnectionListener(new MyConnectionListener());

//实现ConnectionListener接口
private class MyConnectionListener implements EMConnectionListener {
@Override
public void onConnected() {
//已连接到服务器
}
@Override
public void onDisconnected(final int error) {
runOnUiThread(new Runnable() {

@Override
public void run() {
if(error == EMError.USER_REMOVED){
// 显示帐号已经被移除
}else if (error == EMError.CONNECTION_CONFLICT) {
// 显示帐号在其他设备登陆
} else {
if (NetUtils.hasNetwork(MainActivity.this))
//连接不到聊天服务器
else
//当前网络不可用,请检查网络设置
}
}
});
}
}

退出聊天登陆
EMChatManager.getInstance().logout();//此方法为同步方法
//此方法为异步方法
EMChatManager.getInstance().logout(new EMCallBack() {

@Override
public void onSuccess() {
// TODO Auto-generated method stub

}

@Override
public void onProgress(int progress, String status) {
// TODO Auto-generated method stub

}

@Override
public void onError(int code, String message) {
// TODO Auto-generated method stub

}
});