Android 集成 EaseUi
来源:互联网 发布:ar9271 linux驱动 编辑:程序博客网 时间:2024/05/20 11:49
EaseUi是环信封装了 IM 功能常用的控件、fragment 等等的一个 UI 库。里面已经包含了所需要的库,所以,我们在项目中就不用在导入jar包了,直接引用easeui就行了。
————————-下载demo的请点这—————————
注册登录效果如下:
聊天效果:
*****************************分割线*********************************************************
第一步:导入easeUI,首先从官网下载sdk,然后如下图,引用sdk里example里的easeui就行了,
在导入前,需要把easeui里的build.gradle 给删除了,因为android studio 会自动生成一个,如果用自带的可能会报错。
删除后就可以放心的import的啦
第二步:让项目 添加 module 依赖
第三步:初始化
写一个类继承 Application 在里面 初始化 :
public class MyApp extends Application{ @Override public void onCreate() { super.onCreate(); //第二个参数也可以填 null,这样就使用它们初始化好的 //EaseUI.getInstance().init(this, null); EMOptions options = new EMOptions(); //这里我设置的是true 代表 添加好友时不需要验证 options.setAcceptInvitationAlways(true); EaseUI.getInstance().init(this, options); }}
第四步:就是在AndroidManifest.xml 中配置相关信息
在这里,可以根据官方文档添加permission 和 环信 需要的东西。
<!-- Required --> <uses-permission android:name="android.permission.VIBRATE" /> <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.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <!-- 这个是查看大图的activity--> <activity android:name="com.hyphenate.easeui.ui.EaseShowBigImageActivity" android:screenOrientation="portrait" android:theme="@style/horizontal_slide" /> <!-- 设置环信应用的AppKey --> <meta-data android:name="EASEMOB_APPKEY" android:value="1138161209115045#testeaseui" /> <!-- 声明SDK所需的service SDK核心功能 --> <service android:name="com.hyphenate.chat.EMChatService" android:exported="true" /> <service android:name="com.hyphenate.chat.EMJobService" android:exported="true" android:permission="android.permission.BIND_JOB_SERVICE" /> <!-- 声明SDK所需的receiver --> <receiver android:name="com.hyphenate.chat.EMMonitorReceiver"> <intent-filter> <action android:name="android.intent.action.PACKAGE_REMOVED" /> <data android:scheme="package" /> </intent-filter> <!-- 可选filter --> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.USER_PRESENT" /> </intent-filter> </receiver>
如果需要地图,就需要在百度地图开发者平台申请密钥,并加上如下代码:
<!-- 查看地图的activity --> <activity android:name="com.hyphenate.easeui.ui.EaseBaiduMapActivity" android:screenOrientation="portrait" android:theme="@style/horizontal_slide" /> <!--百度地图 --> <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote" /> <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="Ncrll9O7bzPiginIlacQEY5mtGjrhoZV" />
其他的东西就可以根据官方给出的demo来写了,
需要注意的是:
在写好友列表时,我是直接使用的 Easeui里的EaseContactListFragment,需要给Fragment设置好友列表,而且这个方法必须放在子线程中才管用。
new Thread(new Runnable() { @Override public void run() { //这个方法必须放在子线程中 easeContactListFragment.setContactsMap(getContact()); } }).start(); /** * 获取联系人 * * @return */ private Map<String, EaseUser> getContact() { Map<String, EaseUser> map = new HashMap<>(); try { List<String> userNames = EMClient.getInstance().contactManager().getAllContactsFromServer(); Log.e("aaa", "userNames.size-->:" + userNames.size()); for (String userId : userNames) { Log.e("aaa", "userId : " + userId); map.put(userId, new EaseUser(userId)); } } catch (HyphenateException e) { e.printStackTrace(); } return map; }
还有就是给联系人和会话列表设置监听事件,并在回调方法中处理拿到的数据
//监听会话和好友列表EMClient.getInstance().chatManager().addMessageListener(msgListener);EMClient.getInstance().contactManager().setContactListener(emContactListener);EMMessageListener msgListener = new EMMessageListener() { @Override public void onMessageReceived(List<EMMessage> messages) { Log.e("aaa", "收到消息--》" + messages.toString()); //收到消息 if (conversationListFragment != null) { conversationListFragment.refresh(); } EaseUI.getInstance().getNotifier().onNewMesg(messages); } @Override public void onCmdMessageReceived(List<EMMessage> messages) { //收到透传消息 Log.e("aaa", "收到透传消息"); } @Override public void onMessageRead(List<EMMessage> messages) { //收到已读回执 Log.e("aaa", "收到已读回执"); } @Override public void onMessageDelivered(List<EMMessage> message) { //收到已送达回执 Log.e("aaa", "收到已送达回执"); } @Override public void onMessageRecalled(List<EMMessage> messages) { //消息被撤回 Log.e("aaa", "消息被撤回"); } @Override public void onMessageChanged(EMMessage message, Object change) { //消息状态变动 Log.e("aaa", "消息状态变动"); } };EMContactListener emContactListener = new EMContactListener() { @Override public void onContactAdded(String s) { Log.e("aaa", "onContactAdded"); new Thread() {//需要在子线程中调用 @Override public void run() { //需要设置联系人列表才能启动fragment easeContactListFragment.setContactsMap(getContact()); easeContactListFragment.refresh(); } }.start(); } @Override public void onContactDeleted(String s) { Log.e("aaa", "onContactDeleted"); new Thread() {//需要在子线程中调用 @Override public void run() { //需要设置联系人列表才能启动fragment easeContactListFragment.setContactsMap(getContact()); easeContactListFragment.refresh(); } }.start(); } @Override public void onContactInvited(String s, String s1) { Log.e("aaa", "onContactInvited"); //收到好友邀请 } @Override public void onFriendRequestAccepted(String s) { Log.e("aaa", "onFriendRequestAccepted"); } @Override public void onFriendRequestDeclined(String s) { Log.e("aaa", "onFriendRequestDeclined"); } };
还有就是要判断手机6.0的权限 需要的包可以从demo中复制过来
@TargetApi(23) private void requestPermissions() { PermissionsManager.getInstance().requestAllManifestPermissionsIfNecessary(this, new PermissionsResultAction() { @Override public void onGranted() {// Toast.makeText(MainActivity.this, "All permissions have been granted", Toast.LENGTH_SHORT).show(); } @Override public void onDenied(String permission) { //Toast.makeText(MainActivity.this, "Permission " + permission + " has been denied", Toast.LENGTH_SHORT).show(); } }); }
还有一个小问题
Button setText 时,小写字母变成了大写比如:
只要在button的xml的属性中加上下面的属性就行了
android:textAllCaps="false"
阅读全文
0 0
- Android 集成 EaseUi
- Android 集成环信EaseUI
- Android使用EaseUI集成环信3.0
- Android环信EaseUI的快速集成
- Android集成环信3.0的easeui
- Android 使用集成环信EaseUI
- android端快速集成EaseUI,跳过那些坑
- Android如何快速集成环信EaseUI(最强修改版)
- Android环信IM简单集成(EaseUI)
- studio集成环信EaseUI
- Android 使用easeui 3.0 集成环信即时通讯 我踩过的坑
- Android使用EaseUI集成环信3.0 设置头像和用户名 三
- Android集成环信easeui,设置圆形头像,修改气泡和扩展栏,跳过打包冲突
- Android环信换新即时聊天集成EaseUI的使用v3.0
- Android集成环信EaseUI混淆打包后遇到的问题
- ios 快速集成环信EaseUI
- 即时通信(环信) EaseUI 集成视频
- 环信EaseUI集成遇到的问题
- Javascript(七)
- HDU1205 吃糖果
- JavaScript作用域个人理解
- C++11 并发指南九(综合运用: C++11 多线程下生产者消费者模型详解)
- spring boot应用
- Android 集成 EaseUi
- 300.18删除集合中的abc
- 基于ionic+cordova+angularJs
- 605. Can Place Flowers
- js string常用的函数
- radio点击选中,再次点击取消选中
- 新手之eclipse debug入门简易教程
- 微信公众平台技术文档地址
- 七牛图片瘦身