参考:

基于环信即时通信云V2 SDK开发的聊天demo
Android基于环信SDK开发IM即时聊天(一)
android-使用环信SDK开发即时通信功能及源码下载

IM :

即时通信系统(IM,Instant Messenger)。

Android第三方即时聊天SDK的有:网易云信、环信和融云等。

参考:3款IM云服务产品对比 即时通讯云产品横向评测

这里以环信来做即时通讯demo达到两个效果:
1、用户登录,
2、用户间即时通讯

参考:Android开发课程之环信-即时通讯框架

环信的功能类似服务器。A和B用户的交互都要经过环信这个服务器。

环信框架集成

环信即时通讯云V2.0

环信即时通讯云V3.0

1、下载环信sdk开发包

环信sdk下载

下载后sdk目录如下:

2、注册成为环信开发者

开发者注册

3、在环信平台上创建应用程序,获取AppKey

4、在环信平台上注册用户

5、创建Android studio项目,导入SDK开发包中的库文件

5.1  将sdk包lib中的jar文件放到as项目中的libs中,并add library(可看源码即可)
5.2  as项目src/main中new 一个directory,命名为jniLibs,然后将sdk包lib中的其他三个文件夹放到jniLibs中。

6、添加权限
7、配置AppKey
8、声明SDK所需的Service和BroadcastReceiver

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.administrator.myapplication"><!-- 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" /><application
        android:name=".MyApplication"android:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activity android:name=".ChatActivity"></activity><!-- 设置环信应用的AppKey --><meta-data
            android:name="EASEMOB_APPKEY"android:value="1173170609178552#chatdemo" /><!-- 声明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></application></manifest>

9、SDK初始化

package com.example.administrator.myapplication;import android.app.Application;import com.hyphenate.chat.EMClient;
import com.hyphenate.chat.EMOptions;/*** Created by Administrator on 2017/6/9.*/public class MyApplication extends Application {@Overridepublic void onCreate() {super.onCreate();//配置环信sdkEMOptions emOptions = new EMOptions();emOptions.setAutoLogin(false);//初始化环信sdkEMClient.getInstance().init(this, emOptions);}
}

10、登录

界面:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:gravity="center"tools:context="com.example.administrator.myapplication.MainActivity"><ImageView
        android:layout_width="match_parent"android:layout_height="wrap_content"android:src="@mipmap/ic_launcher" /><EditText
        android:id="@+id/et_name_login"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:gravity="center"android:hint="请输入用户名" /><EditText
        android:id="@+id/et_pw_login"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:gravity="center"android:hint="请输入密码"android:inputType="textPassword" /><Button
        android:id="@+id/btn_login_login"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:paddingLeft="40dp"android:paddingRight="40dp"android:text="登录" />
</LinearLayout>

代码:

package com.example.administrator.myapplication;import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;import com.hyphenate.EMCallBack;
import com.hyphenate.chat.EMClient;import butterknife.BindView;
import butterknife.ButterKnife;public class MainActivity extends AppCompatActivity {@BindView(R.id.et_name_login)EditText etNameLogin;@BindView(R.id.et_pw_login)EditText etPwLogin;@BindView(R.id.btn_login_login)Button btnLoginLogin;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ButterKnife.bind(this);btnLoginLogin.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//执行登录功能EMClient.getInstance().login(etNameLogin.getText().toString(),//登录名称etPwLogin.getText().toString(),//登录密码new EMCallBack() {//子线程执行,不能更新UI@Overridepublic void onSuccess() {//登录成功startActivity(new Intent(MainActivity.this, ChatActivity.class));finish();}@Overridepublic void onError(int i, String s) {//登录失败}@Overridepublic void onProgress(int i, String s) {//进度更新}});}});}
}

11、发送消息,监听消息的获取

布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><TextView
        android:id="@+id/tv"android:text="0000"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_above="@+id/et_name_chat"android:background="@color/colorAccent" /><Button
        android:id="@+id/btn_send"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_alignParentRight="true"android:text="发送" /><EditText
        android:id="@+id/et_name_chat"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_above="@+id/et_content_chat"android:layout_toLeftOf="@+id/btn_send"android:hint="请输入要发送的人" /><EditText
        android:id="@+id/et_content_chat"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignBottom="@+id/btn_send"android:layout_toLeftOf="@+id/btn_send"android:hint="请输入要发送的内容" /></RelativeLayout>

代码:

package com.example.administrator.myapplication;import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;import com.hyphenate.EMMessageListener;
import com.hyphenate.chat.EMClient;
import com.hyphenate.chat.EMMessage;
import com.hyphenate.chat.EMTextMessageBody;import java.util.List;import butterknife.BindView;
import butterknife.ButterKnife;/*** Created by Administrator on 2017/6/9.*/public class ChatActivity extends AppCompatActivity {@BindView(R.id.tv)TextView tv;@BindView(R.id.btn_send)Button btnSend;@BindView(R.id.et_content_chat)EditText etContentChat;@BindView(R.id.et_name_chat)EditText etNameChat;private MyEMMessageListener ml;private Handler handler = new Handler();@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main_chat);ButterKnife.bind(this);//发送消息btnSend.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//创建消息对象:参数:消息内容,接收人>>>此处注意顺序,容易出错导致接收不到信息 EMMessage txtSendMessage = EMMessage.createTxtSendMessage(etContentChat.getText().toString(),etNameChat.getText().toString());//发送消息EMClient.getInstance().chatManager().sendMessage(txtSendMessage);}});ml = new MyEMMessageListener();EMClient.getInstance().chatManager().addMessageListener(ml);}/** 消息监听*/class MyEMMessageListener implements EMMessageListener {@Overridepublic void onMessageReceived(List<EMMessage> list) {//此方法子线程中执行//解析消息for (EMMessage node : list) {final String from = node.getFrom();//发送者final EMMessage.Type type = node.getType();//消息类型switch (type) {case TXT://文本内容EMTextMessageBody body = (EMTextMessageBody) node.getBody();final String message = body.getMessage();//将修改内容交给主线程来更新UIhandler.post(new Runnable() {@Overridepublic void run() {tv.append(from + "对我说:" + message);}});break;default:break;}}}@Overridepublic void onCmdMessageReceived(List<EMMessage> list) {}@Overridepublic void onMessageRead(List<EMMessage> list) {}@Overridepublic void onMessageDelivered(List<EMMessage> list) {}@Overridepublic void onMessageChanged(EMMessage emMessage, Object o) {}}//取消监听避免内存泄漏@Overrideprotected void onDestroy() {super.onDestroy();EMClient.getInstance().chatManager().removeMessageListener(ml);}
}

Android-IM即时通讯:环信相关推荐

  1. 即时通讯环信IM的集成使用

    点击进入我的个人博客 第三方即时通讯服务,环信 IM云的集成使用,我这里主要以 web集成为主,如何把单聊模块集成到自己的项目进行的操作讲解,更多详细操作可以参考官网提供的开发文档 文章目录 环信IM ...

  2. 基于android的即时通讯APP 聊天APP

    基于android的即时通讯APP 或者 聊天APP 一 项目概述 该项目是基于Android 的聊天APP系统,该APP包含前台,后台管理系统,前台包含用户通讯录,用户详情,用户聊天服务,用户二维码 ...

  3. 安卓(android)即时通讯

    安卓(android)即时通讯,也就是实现在安卓平台下的即时通讯.随着android系统的发展成熟,在即时通讯这一版块逐渐发展成一个综合化的信息平台.在Android 平台上开发即时通讯系统,它能够使 ...

  4. android 环信集成,Android Studio下的环信即时通讯简单集成

    环信即时通讯云是全球最大的即时通讯云 PaaS 平台,可以快速实现APP的即时通讯的功能,官方的DEMO是基于Eclipse开发的,对于新版本的Android Studio支持不太好,下面就简单说一下 ...

  5. IM即时通讯H信 Android

    一.概述 1.开发环境及安装配置 开发环境Windows10下基于JRE1.8.0.OpenJDK Server VM的集成开发工具Android Studio 3.5和环信即时通讯云Android ...

  6. 即时通信---环信SDK(IOS)使用教程

    一. 提前准备 注册环信即时通讯云账号 下载iOS的环信SDK 登陆到管理后台 在我的应用中创建一个应用 在苹果的个人开发中心创建一个推送证书(当然不创建也没用关系,只是不能推送消息而已) 创建完证书 ...

  7. 03-即时通讯 环信集成

    环信 环信是在XMPP的基础上进行的二次开发 环信在网络上传输的数据是XML 环信 是否使用过环信,简单说一下环信的实现原理 环信是一个即时通讯的服务提供商 环信使用的是XMPP协议,它是在XMPP的 ...

  8. 即时通信-环信API方法

    安装 如果你的项目使用Maven构建并且spring boot是2.4.3以上版本,可以在pom.xml中添加下面代码: <dependency><groupId>com.ea ...

  9. java融云即时通开发流程,基于融云开发的 Android 版即时通讯(IM)应用程序

    SealTalk-Android Android 应用 SealTalk 由 融云 RongCloud 出品. 特别注意 SealTalk 自从 1.3.14 版本起,CallLib 模块引用的音视频 ...

  10. 环信即时通讯在Android平台的部署

    官网 环信 下载SDK 创建一个工程 如果想要封装性好一点,也可以在工程里再创建一个环信的Library,然后将SDK里的jar和.so,都导入到工程 清单文件 下面是环信Library库里面的清单文 ...

最新文章

  1. [大数据] zookeeper 安装和配置
  2. linux_磁盘配额
  3. jQuery,Ashx发送站内信
  4. 利用Python进行数据分析-07-汇总和计算描述统计
  5. python读取单元格的值csv,比较单元格值的csv文件python
  6. 使用ASP.Net WebAPI构建REST服务(一)——简单的示例
  7. 下载丨 MySQL运维管理+编程开发大全
  8. oracle 修索引改空间_oracle 修改索引现有表空间
  9. Python分布式爬虫打造搜索引擎(四)
  10. 在CSDN的博文中如何添加博主名片
  11. ThreadLocal 源码之 expungeStaleEntry
  12. 端午节之苍南懒人游 (*^__^*) ……
  13. 4kw机柜无通道封闭CFD模拟分析及优化(上篇) -孙长青
  14. 几行Python代码实现自动陪女友聊天,制作开心机器人
  15. 网友自曝:编程从入门到放弃!方法比选择更重要!
  16. 股票之四大支撑法则(平台,趋势,均线,缺口)
  17. 摸鱼加速小能手,实用笔刷快拿走
  18. 谷歌浏览器兼容chatgpt教程
  19. win7计算机将在一分钟重启,Win7系统出现提示: “Windows已遇到关键问题,将在一分钟后自动重新启动。”...
  20. 推荐个漫画神器给大家,兔比兔漫画,免费多源

热门文章

  1. HPCC是什么,主要有由哪几部分组成?
  2. C语言函数第一篇------printf输出格式符前的%4.2中的4和2分别代表什么?
  3. 北京师范大学计算机学院院长,郭平-教授-北京师范大学系统科学学院
  4. 我在传智播客上课的感受
  5. Java 编译后的class文件覆盖注意要点
  6. 做真正的自己,to be the truthful yourself
  7. iOS:适配iPad的横屏
  8. Command line is too long. Shorten command line for XXXApplication or also for Spring Boot
  9. 安卓手机主题软件_手机投影仪有哪些软件 安卓 苹果手机投影仪软件介绍【详解】...
  10. [BZOJ3639][LCT]Qtree7