Kii BLOG

使用Kii Cloud云服务进行学生管理的应用(4)

本篇将结合学生管理应用例子,怎样使用群组管理API,实现聊天功能。

进入本例主界面菜单如下。

group_menu_01

 

(图1)

在(图1)中,用到群组的功能主要在“沟通空间”和“好友管理”中,下面我们一一介绍这两个功能。

1.沟通空间

沟通空间的功能类似一个聊天室,可以家长和老师之间交流。

group_chat

(图2)

从(图2)中,我们可以看到我们使用一个List控件,一个EditText编辑框,和一个Button控件

<?xml version=”1.0″ encoding=”utf-8″?>
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:id = “@+id/devices”
android:paddingTop=”10dip”
android:paddingLeft=”30dip”
android:paddingRight=”30dip”
>

<ListView android:id=”@+id/listview”
android:layout_width=”fill_parent”
android:layout_height=”300dp”
android:clickable=”false”
android:scrollbars=”none”>
</ListView>

<LinearLayout
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:layout_alignParentBottom = “true”
android:orientation=”horizontal”
android:id= “@+id/bt_bottombar”>

<EditText
android:layout_width=”180dp”
android:layout_height = “wrap_content”

android:hint = “说点什么呢?”
android:textSize=”15dip”

android:id = “@+id/MessageText”/>

<Button
android:layout_width=”fill_parent”
android:layout_height = “wrap_content”
android:text=”发送”
android:layout_toRightOf=”@+id/MessageText”
/>
</LinearLayout>

</RelativeLayout>

其中List 中的item,我们自定义了模板。

<?xml version=”1.0″ encoding=”UTF-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content” >
<TextView android:id=”@+id/text”
android:paddingTop=”10dip”
android:background=”@drawable/bg_normal”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”/>
</LinearLayout>

1.1 List控件adapter.

list adapter 我们继承了BaseAdapter,

 

public class ListAdapter extends BaseAdapter {
private LayoutInflater inflater;
private ArrayList<String> list;
private int size;
public ListAdapter(Context context,ArrayList<String> list2, int size){
this.size = size;
inflater = LayoutInflater.from(context);
list=list2;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}

private Object list() {
// TODO Auto-generated method stub
return null;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return list.get(position);
}

@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
String item_content=list.get(position);
convertView = inflater.inflate(R.layout.chat_item, null);
TextView text = (TextView) convertView.findViewById(R.id.text);
text.setText(item_content);
convertView.setEnabled(false);
return convertView;
}
}

 

1.2 聊天功能的实现。

import  com.kii.cloud.storage.KiiGroup;

static KiiGroup createWithName(java.lang.String name)

使用 当前的登录的用户创建群组。

使用bucket发送聊天数据

 KiiBucket bucket(java.lang.String bucketName)

下面的代码是我们根据当前的登录的用户获得群组,如果群组为空,那么创建一个群组。

class FetchDataTask extends AsyncTask<Void, Void, Void> {

ProgressDialog dialog = null;
List<KiiObject> objLists = null;

@Override
protected void onPreExecute() {
super.onPreExecute();
dialog = new ProgressDialog(ChatList.this);
dialog.setCancelable(false);
dialog.setMessage(“同步中,请稍候…”);
dialog.show();
}

@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
try {
dialog.dismiss();
} catch (Exception e) {
}

}

@Override
protected Void doInBackground(Void… params) {
if (Constants.myGroups == null) {
try {
if(Constants.kUser!=null)
Constants.myGroups = Constants.kUser.memberOfGroups();
} catch (Exception e) {
//Constants.kUser = null;
return null;
}

try {
if(Constants.myGroups.isEmpty())
{
//要创建群组
if(Constants.username!=null)
Constants.myGroup = KiiGroup.createWithName(Constants.username);
}
}catch (Exception e) {
//Constants.kUser = null;
return null;
}

}

return null;
}

}

2 好友管理

主要是群组好友添加,sample 界面如下:

friendManage_01

 

(图3)

使用了一个list控件,一个EditText控件和Button控件,进入界面要列举已经添加好的user;

class FetchDataTask extends AsyncTask<Void, Void, Void> {
ProgressDialog dialog = null;
List<KiiObject> objLists = null;

@Override
protected void onPreExecute() {
super.onPreExecute();
dialog = new ProgressDialog(FriendManage.this);
dialog.setCancelable(false);
dialog.setMessage(“同步中,请稍候…”);
dialog.show();
}

@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
try {
dialog.dismiss();
} catch (Exception e) {
}
madapter.notifyDataSetChanged();

}

@Override
protected Void doInBackground(Void… params) {

if(Constants.myGroup == null)
{
if(Constants.myGroups!=null)
for (KiiGroup obj : (Constants.myGroups)) {
Constants.myGroup = obj;

}
}

if(Constants.myGroup != null)
{
try {
Constants.mUsers = (ArrayList<KiiUser>) Constants.myGroup.listMembers();
} catch (Exception e) {
Constants.mUsers = null;
}

for (KiiUser obj : (Constants.mUsers)) {
//Constants.myGroup = obj;

Constants.friend_list.add(obj.getUsername());
}
}
return null;
}

}

 3.文件的同步管理

导入kii sdk 同步库 import com.kii.cloud.filesync.filesync_sdk.jar;

配置android系统权限,以便能使用文件存储;

<uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE” />

3.1 文件同步接口

static void sync(Context context, java.io.File dir, java.lang.String username, java.lang.String password, ProgressCallback callback)

try {
KiiFS.sync(this.context, this.dir, this.username, this.password,
new ProgressCallback()
{
public void onProgressUpdated(ProgressInfo value) {
publishProgress(value);
}
});
} catch (InterruptedException e) {
this.interrupted = e;
} catch (Exception e) {
this.exception = e;
cancel(false);
}

3.2同步出错复位接口

static void reset(Context context)
Reset all sync specific data

KiiFS.reset(this);

由于时间匆忙,本例还有细节还需完善!下面是 sample code ,请下载,指教!

StudentManage

 

使用Kii Cloud云服务进行学生管理的应用(1)

使用Kii Cloud云服务进行学生管理的应用(2)

使用Kii Cloud云服务进行学生管理的应用(3)

使用Kii Cloud云服务进行学生管理的应用(4)

 

 

发表评论