用户工具

im_android_ui组件开发指南

这是本文档旧的修订版!


IM Android UI组件开发指南

说明:本指南是Android平台的接入说明,方便有Android研发基础的开发者快速了解整合云之讯即时通讯界面组件。本指南只包含paas服务器连接和IM界面组件的使用操作。如需开发出针对企业和开发者所需的个性化应用,仍然需要具备一定的Android开发经验。

一、IMKit界面组件介绍

IMKit界面组件是集成云之讯的登录登出云平台、IM会话列表、好友列表、聊天界面等,可快速集成和高度自定义界面的开发包。

前往云之讯官网下载IMKit(下载地址),IMKit界面组件开发包含以下两部分:

  • 1、IMKIT接口文档.rar,介绍了SDK中的类及其方法
  • 2、IMUISDK.rar,包含了库文件和资源文件。

二、IMKit接入工程的准备

1、开发准备

这里以Eclipse为例,首先搭建好Android开发环境,满足以下要求:

  • Android SDK Build-tools 请升级到 21 及以上版本。
  • JAVA 编译版本 JDK 1.7 及以上版本。
  • 使用 IMKit 需要 Android Support V4 21 及以上版本。
  • Android SDK 最低支持 Android API 9: Android 2.3(Gingerbread)。

用户创建好自己的Android Application Project,接下来就可以开始导入我们的IMKit界面组件了。

2、导入工程的操作

将IMUISDK.rar解压,得到libs和res两个文件夹,将这两个文件夹复制到工程根目录下,与工程原有的两个同名文件夹合并,从而将SDK中的库文件及资源文件添加到工程中,合并后工程效果如下:

3、继承IMKit中的Application

用户在工程中新建继承自YZXMainApplication的类,并在其onCreate()方法中调用父类的onCreate()方法,类代码如下:

import com.yzx.im_UIdemo.YZXMainApplication; 
public class MainApplication extends YZXMainApplication { 
  @Override
  public void onCreate() {
      // TODO Auto-generated method stub
      super.onCreate();
  }
}

另外还需在AndroidManifest.xml文件添加MainApplication声明,如下:

<application 
    android:name=".MainApplication"
</application> 

4、添加权限和组件声明

在工程的AndroidManifest.xml文件中添加权限和组件声明,添加的代码如下:

 <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
  <uses-permission android:name="android.permission.RECORD_AUDIO" />
  <uses-permission android:name="android.permission.VIBRATE" />
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.CALL_PHONE" />
  <uses-permission android:name="android.permission.WAKE_LOCK" />
  <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
  <uses-permission android:name="android.permission.CAMERA" />
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  <uses-permission android:name="android.permission.WRITE_SETTINGS" />
  <uses-permission android:name="android.permission.READ_CONTACTS"/>
  <uses-permission android:name="android.permission.VIBRATE" />
  <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
  <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
  <uses-permission android:name="android.permission.GET_TASKS" />
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  <!--百度地图需要的权限-->
  <uses-permission android:name="android.permission.GET_ACCOUNTS" />
  <uses-permission android:name="android.permission.USE_CREDENTIALS" />
  <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
  <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
  <uses-permission android:name="android.permission.BROADCAST_STICKY" />
  <application
      android:allowBackup="true"
      android:icon="@drawable/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      <!--这里输入百度密钥-->
      <meta-data
          android:name="com.baidu.lbsapi.API_KEY"
          android:value="5ZVIGi4nwol98XwTnY26DFnF" />
      <!--百度的远程服务-->
      <service
          android:name="com.baidu.location.f"
          android:enabled="true"
          android:process=":remote" />
      <activity
          android:name="com.yzx.im_UIdemo.IMChatActivity"
          android:screenOrientation="portrait" />
      <activity android:name="com.yzx.im_UIdemo.IMMessageActivity" android:windowSoftInputMode="stateHidden|adjustResize"/>
      <activity
          android:name="com.yzx.im_UIdemo.IMCustomMsgActivity"
          android:configChanges="keyboardHidden|orientation|screenSize"
          android:screenOrientation="portrait"
          android:windowSoftInputMode="stateHidden|adjustResize" />
      <activity
          android:name="com.yzx.im_UIdemo.IMBaiduMapActivity"
          android:screenOrientation="portrait"
          android:theme="@android:style/Theme.Light.NoTitleBar" />
      <activity
          android:name="com.yzx.im_UIdemo.IMBroadcastActivity"
          android:screenOrientation="portrait" />
      <activity
          android:name="com.yzx.im_UIdemo.IMLoginOutActivity"
          android:screenOrientation="portrait"
          android:windowSoftInputMode="stateHidden|adjustPan" >
          <intent-filter>
              <action android:name="android.intent.action.VIEW" />
              <category android:name="android.intent.category.DEFAULT" />
              <data
                  android:host="com.yzx.im_ui"
                  android:pathPrefix="/login_out"
                  android:scheme="yzx" />
          </intent-filter>
      </activity>
      <activity android:name="com.yzx.im_UIdemo.IMMessageInfoActivity" />
      <activity android:name="com.yzx.im_UIdemo.IMMessageBgActivity" />
      <activity android:name="com.yzx.im_UIdemo.IMSelectBgActivity" />
      <activity android:name="com.yzx.im_UIdemo.IMFriendListActivity" />
      <activity android:name="com.yzx.im_UIdemo.IMDiscussListActivity" />
      <activity android:name="com.yzx.im_UIdemo.IMDiscussInfoActivity" />
      <activity android:name="com.yzx.im_UIdemo.IMGroupListActivity" />
      <activity android:name="com.yzx.im_UIdemo.IMImageActivity" />
      <service android:name="com.yzxtcp.service.YzxIMCoreService" />
      <receiver android:name="com.yzxtcp.tools.tcp.receiver.AlarmReceiver" />
      <receiver android:name="com.yzxIM.tools.tcp.receiver.MsgBackReceiver" />
  </application>

三、IMKit快速集成

IMKit提供的接口都是在类UCS_IMUIManager中以静态函数的形式提供的,使用前需在相应文件中导入com.yzx.im_UIdemo.UCS_IMUIManager,代码为:

import com.yzx.im_UIdemo.UCS_IMUIManager; 

1、登录云平台

IMKit为登录云平台提供了两个接口,一个使用token登录,一个使用账号密码登录

通过token登录云平台:

static void connect(java.lang.String token, com.yzxtcp.listener.ILoginListener listener) 

通过账号密码登录云平台:

static void connect(java.lang.String sid, java.lang.String sidPwd, java.lang.String clientId, java.lang.String clientPwd, com.yzxtcp.listener.ILoginListener listener) 

token是客户端向接入服务器请求得到的一串字符,新注册的账号只能使用token的方式登录云平台。

下面以token登录为例说明其用法,在参数中传入token字符串及回调,示例代码如下:

ILoginListener listener = new ILoginListener() {
    @Override
    public void onLogin(UcsReason reason) {
        // TODO Auto-generated method stub
        System.out.println("登陆消息:" + reason.getMsg());
        if (reason.getReason() == UcsErrorCode.NET_ERROR_CONNECTOK) {
            System.out.println("登陆成功");
        } else {
            System.out.println("登陆失败");
        }
    }
};
UCS_IMUIManager.connect("xxx_token", listener);

2、退出云平台

退出接口为:

static void disconnect() 

调用UCS_IMUIManager.disconnect()即可断开与云平台的连接,断开后客户端将不再与云平台进行包括心跳包在内的数据交互,该客户端将被服务器视为离线状态。

3、设置标题栏风格

IMKit中的界面标题栏有默认风格,用户也可调用下面接口更改界面风格:

static void setActionBarStyle(UCS_IMUIManager.UiType type, ActionBarConfig config) 

下面以更改会话列表界面的标题栏的背景色为例来说明该接口的使用:

//设置标题栏风格
ActionBarConfig actionBarConfig = new ActionBarConfig();
actionBarConfig.setActionBarColor("#3299CC");//设为天蓝色
UCS_IMUIManager.setActionBarStyle(UCS_IMUIManager.UiType.IMChatList, actionBarConfig);

设置前后效果图如下:

4、设置好友列表成员

设置好友列表成员:

static void setFriendListContacts(java.util.List<SortModel> contacts) 

调用该接口后指定的联系人将被添加到好友列表中,代码及效果如下:

//设置好友列表成员
List<SortModel> contacts = new ArrayList<SortModel>();
SortModel sortModel = new SortModel();
sortModel.setName("Jack");//好友昵称
sortModel.setId("13428788888");//好友ID
sortModel.setUrl("头像URL");//好友头像
contacts.add(sortModel);
UCS_IMUIManager.setFriendListContacts(contacts);

5、跳转到会话列表界面

跳转到会话列表界面:

static void startIMChatActivity(Context context, java.lang.String localUser, java.lang.String nickName)

传入参数包括上下文、本端用户、本端用户昵称

6、跳转到好友列表界面

跳转到好友列表界面:

static void startIMFriendListActivity(Context context, java.lang.String localUser, java.lang.String nickName) 

传入参数包括上下文、本端用户、本端用户昵称

7、跳转到聊天界面

/***跳转到聊天界面
* @param context 上下文
* @param localUser 用户账号
* @param nickName 用户昵称
* @param targetID 对方账号
* @param targetNickName 对方昵称
* @param categoryId 聊天种类
* @return 跳转参数是否正确
*/
static boolean startIMMsgActivity(Context context,String localUser,String nickName,String targetID, String targetNickName, CategoryId categoryId) 

跳转到指定用户名、昵称、以及聊天类型(单聊、群聊、讨论组)的聊天界面

8、设置消息通知是否开启

设置通知栏消息(包括震动与声音)是否开启:

static void setMsgNotification(Context context, String loalUser,boolean on);

传入参数包括上下文及布尔控制值,loalUser当前用户ID, on传入布尔值为true则开启,为false则不开启。

9、集成注意事项

1,如果使用地图功能时报错误 “请检查key,baiduSDK认证错误!”

需要用户在AndroidManifest.xml文件中修改
<meta-data
          android:name="com.baidu.lbsapi.API_KEY"
          android:value="用户在百度申请的KEY" />

页面工具