Android 即时语音聊天工具 开发

使用融云SDK

 

1. 功能需求分析

1.1 核心功能需求:

* 即时通讯

* 文字聊天

* 语音聊天

1.2 辅助功能需求:

    * 注册、登录

    * 好友添加功能

    * 好友关系管理

 

2. 融云即时通讯平台简介

2.1 平台简介,

    * 即时通讯,实时网络 提供商

    * 客户端IM组件, 客户端IM基础库, WebSDK,服务端 REST API

2.2 平台架构介绍

   

我们需要关心 App, App Server

 

2.3 概念介绍

* App Key/Secret:  有生产环境 和 开发环境区别

* Token: 每个用户连接服务器都需要一个token

* 会话、会话类型: 会话(单聊,群聊,讨论组)

* 单聊: 用户一对一的聊天

 

3. 项目结构分析和搭建

3.1 项目结构分析

    从融云架构图分析

    * App Server 和App交互

    * App Server 和 Rong Cloud Server 交互

    项目结构

        * 服务器端

            用户数据库

           服务器API程序

       * 手机客户端

           基本App

           融云SDK

3.2 项目框架搭建

    xampp 融云Android SDK,下载

    下载融云Server SDK: http://www.rongcloud.cn/docs/server.html,获取php.api

 

    Android端

        android-async-http开源框架可以是我们轻松的获取网络数据或者向服务器发送数据

        https://github.com/loopj/android-async-http

 

4. 在应用中集成 融云SDK

*  融云SDK 集成

* 融云SDK基本使用

* 聊天窗口

4.1 融云SDK 集成

    1. 需要一个融云账户 https://developer.rongcloud.cn/app 注册

    2. 创建应用,顺便下载Android SDK

    3. 

 AndroidManifest.xml

<activity
    android:name=".ConversationActivity"
    android:label="@string/title_activity_conversation" >
    <intent-filter >
        <action android:name="android.intent.action.VIEW" />

        <category android:name="android.intent.category.DEFAULT" />
        <data android:host="com.carloz.chart"
            android:pathPrefix="conversation"
            android:scheme="rong" />
    </intent-filter>
</activity>

MainActivity

//在融云网站获取API token
String token = "j8ctNGyFUPsWCSjHcsMj66eF9VgQg6BrGZJW8Onu40r5aeznhPfvdMkaTw3ZBCLTaErEoctk5UQMe69Yjg73wg==";
RongIM.connect(token, new RongIMClient.ConnectCallback() {
    
    @Override
    public void onSuccess(String arg0) {
        // TODO Auto-generated method stub
        Toast.makeText(MainActivity.this, "Token error", Toast.LENGTH_LONG).show();
    }
    
    @Override
    public void onError(ErrorCode arg0) {
        // TODO Auto-generated method stub
        Toast.makeText(MainActivity.this, "Token success" + arg0, Toast.LENGTH_LONG).show();
    }
    
    @Override
    public void onTokenIncorrect() {
        // TODO Auto-generated method stub
        Toast.makeText(MainActivity.this, "Token incorrect", Toast.LENGTH_LONG).show();
    }
});

startConversationBtn = (Button)findViewById(R.id.startConversationBtn);
startConversationBtn.setOnClickListener(new OnClickListener() {
    
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        if(RongIM.getInstance() != null){
            RongIM.getInstance().startPrivateChat(MainActivity.this, "iceleader", "hello carlo");
        }
    }
});

App.java

public class App extends Application {

    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
        super.onCreate();
        // init rongcloud
        RongIM.init(this);
    }
}

ConversationActivity.java

<fragment
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:name="io.rong.imkit.fragment.ConversationFragment"/>

 

 

 

未完待续。。。

http://www.jikexueyuan.com/course/1815_3.html

   

 

   

 

posted @ 2015-08-11 10:46  carlo-z  阅读(1308)  评论(0编辑  收藏  举报