diff --git a/CIM客户端文档.doc b/CIM客户端文档.doc index fefc86a..9612ce0 100644 Binary files a/CIM客户端文档.doc and b/CIM客户端文档.doc differ diff --git a/cim_for_mina/1.6.0.VERSION b/cim_for_mina/2.0.0.VERSION similarity index 100% rename from cim_for_mina/1.6.0.VERSION rename to cim_for_mina/2.0.0.VERSION diff --git a/cim_for_mina/cim-android-sdk/.classpath b/cim_for_mina/cim-android-sdk/.classpath new file mode 100644 index 0000000..679c2cc --- /dev/null +++ b/cim_for_mina/cim-android-sdk/.classpath @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/cim_for_mina/cim-android-sdk/.project b/cim_for_mina/cim-android-sdk/.project new file mode 100644 index 0000000..dab9061 --- /dev/null +++ b/cim_for_mina/cim-android-sdk/.project @@ -0,0 +1,23 @@ + + + cim-android-sdk + + + + + + org.eclipse.jdt.core.javabuilder + + + + + com.genuitec.eclipse.ast.deploy.core.DeploymentBuilder + + + + + + com.genuitec.eclipse.ast.deploy.core.deploymentnature + org.eclipse.jdt.core.javanature + + diff --git a/cim_for_mina/cim-android-sdk/.settings/org.eclipse.core.resources.prefs b/cim_for_mina/cim-android-sdk/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99b2bf9 --- /dev/null +++ b/cim_for_mina/cim-android-sdk/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,3 @@ +#Wed Oct 15 09:31:41 CST 2014 +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/cim_for_mina/cim-core/src/com/farsunset/cim/client/android/CIMDataConfig.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/android/CIMCacheTools.java similarity index 93% rename from cim_for_mina/cim-core/src/com/farsunset/cim/client/android/CIMDataConfig.java rename to cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/android/CIMCacheTools.java index d38c502..b629023 100644 --- a/cim_for_mina/cim-core/src/com/farsunset/cim/client/android/CIMDataConfig.java +++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/android/CIMCacheTools.java @@ -1,12 +1,14 @@ +/** + * probject:cim-android-sdk + * @version 2.0.0 + * + * @author 3979434@qq.com + */ package com.farsunset.cim.client.android; import android.content.Context; -/** - * - * @author 3979434 - * - */ - class CIMDataConfig { + + class CIMCacheTools { public static String CIM_CONFIG_INFO = "CIM_CONFIG_INFO"; diff --git a/cim_for_mina/cim-core/src/com/farsunset/cim/client/android/CIMConnectorManager.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/android/CIMConnectorManager.java similarity index 69% rename from cim_for_mina/cim-core/src/com/farsunset/cim/client/android/CIMConnectorManager.java rename to cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/android/CIMConnectorManager.java index 9f890ea..c1cb573 100644 --- a/cim_for_mina/cim-core/src/com/farsunset/cim/client/android/CIMConnectorManager.java +++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/android/CIMConnectorManager.java @@ -1,320 +1,371 @@ -package com.farsunset.cim.client.android; -import java.net.InetSocketAddress; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.Future; -import org.apache.mina.core.future.ConnectFuture; -import org.apache.mina.core.future.WriteFuture; -import org.apache.mina.core.service.IoHandlerAdapter; -import org.apache.mina.core.session.IdleStatus; -import org.apache.mina.core.session.IoSession; -import org.apache.mina.filter.codec.ProtocolCodecFilter; -import org.apache.mina.filter.logging.LoggingFilter; -import org.apache.mina.transport.socket.nio.NioSocketConnector; -import android.content.Context; -import android.content.Intent; -import android.net.ConnectivityManager; -import android.net.NetworkInfo; -import com.farsunset.cim.nio.constant.CIMConstant; -import com.farsunset.cim.nio.filter.ClientMessageCodecFactory; -import com.farsunset.cim.nio.mutual.Message; -import com.farsunset.cim.nio.mutual.ReplyBody; -import com.farsunset.cim.nio.mutual.SentBody; - -/** - * 连接服务端管理,cim核心处理类,管理连接,以及消息处理 - * - * @author 3979434@qq.com - */ -class CIMConnectorManager { - - private NioSocketConnector connector; - private ConnectFuture connectFuture; - private IoSession session; - - Context context; - - - static CIMConnectorManager manager; - - // 消息广播action - public static final String ACTION_MESSAGE_RECEIVED = "com.farsunset.cim.MESSAGE_RECEIVED"; - - // 发送sendbody失败广播 - public static final String ACTION_SENT_FAILED = "com.farsunset.cim.SENT_FAILED"; - - // 发送sendbody成功广播 - public static final String ACTION_SENT_SUCCESS = "com.farsunset.cim.SENT_SUCCESS"; - // 链接意外关闭广播 - public static final String ACTION_CONNECTION_CLOSED = "com.farsunset.cim.CONNECTION_CLOSED"; - // 链接失败广播 - public static final String ACTION_CONNECTION_FAILED = "com.farsunset.cim.CONNECTION_FAILED"; - // 链接成功广播 - public static final String ACTION_CONNECTION_SUCCESS = "com.farsunset.cim.CONNECTION_SUCCESS"; - // 发送sendbody成功后获得replaybody回应广播 - public static final String ACTION_REPLY_RECEIVED = "com.farsunset.cim.REPLY_RECEIVED"; - // 网络变化广播 - public static final String ACTION_NETWORK_CHANGED = "android.net.conn.CONNECTIVITY_CHANGE"; - - // 未知异常 - public static final String ACTION_UNCAUGHT_EXCEPTION = "com.farsunset.cim.UNCAUGHT_EXCEPTION"; - - // CIM连接状态 - public static final String ACTION_CONNECTION_STATUS = "com.farsunset.cim.CONNECTION_STATUS"; - - - private ExecutorService executor; - - - private CIMConnectorManager(Context ctx) { - context = ctx; - executor = Executors.newFixedThreadPool(3); - - connector = new NioSocketConnector(); - connector.setConnectTimeoutMillis(10 * 1000); - connector.getSessionConfig().setBothIdleTime(180); - connector.getSessionConfig().setKeepAlive(true); - connector.getFilterChain().addLast("logger", new LoggingFilter()); - connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(new ClientMessageCodecFactory())); - connector.setHandler(iohandler); - } - - public synchronized static CIMConnectorManager getManager(Context context) { - if (manager == null) { - manager = new CIMConnectorManager(context); - } - return manager; - - } - - private synchronized void syncConnection(final String cimServerHost,final int cimServerPort) { - try { - - if(isConnected()){ - return ; - } - - InetSocketAddress remoteSocketAddress = new InetSocketAddress(cimServerHost, cimServerPort); - connectFuture = connector.connect(remoteSocketAddress); - connectFuture.awaitUninterruptibly(); - session = connectFuture.getSession(); - - } catch (Exception e) { - - Intent intent = new Intent(); - intent.setAction(ACTION_CONNECTION_FAILED); - intent.putExtra("exception", e); - context.sendBroadcast(intent); - - System.out.println("******************CIM连接服务器失败 "+cimServerHost+":"+cimServerPort); - - } - - } - - public void connect(final String cimServerHost, final int cimServerPort) { - - - if (!netWorkAvailable(context)) { - - Intent intent = new Intent(); - intent.setAction(ACTION_CONNECTION_FAILED); - intent.putExtra("exception", new NetWorkDisableException()); - context.sendBroadcast(intent); - - return; - } - - Future future = executor.submit(new Runnable() { - @Override - public void run() { - syncConnection(cimServerHost, cimServerPort); - } - }); - try { - if(future.get()!=null) - { - connect(cimServerHost,cimServerPort); - } - } catch (Exception e) { - - connect(cimServerHost,cimServerPort); - e.printStackTrace(); - } - } - - public void send(final SentBody body) { - - - executor.execute(new Runnable() { - @Override - public void run() { - - android.os.Message msg = new android.os.Message(); - msg.getData().putSerializable("body", body); - - if(session!=null && session.isConnected()) - { - WriteFuture wf = session.write(body); - // 消息发送超时 10秒 - wf.awaitUninterruptibly(5, TimeUnit.SECONDS); - - if (!wf.isWritten()) { - - - Intent intent = new Intent(); - intent.setAction(ACTION_SENT_FAILED); - intent.putExtra("exception", new WriteToClosedSessionException()); - intent.putExtra("sentBody", body); - context.sendBroadcast(intent); - } - }else - { - - Intent intent = new Intent(); - intent.setAction(ACTION_SENT_FAILED); - intent.putExtra("exception", new CIMSessionDisableException()); - intent.putExtra("sentBody", body); - context.sendBroadcast(intent); - } - } - }); - } - - public void destroy() { - if (manager.session != null) { - manager.session.close(false); - manager.session.removeAttribute("account"); - } - - if (manager.connector != null && !manager.connector.isDisposed()) { - manager.connector.dispose(); - } - manager = null; - } - - public boolean isConnected() { - if (session == null || connector == null) { - return false; - } - return session.isConnected() ; - } - - public void deliverIsConnected() { - Intent intent = new Intent(); - intent.setAction(ACTION_CONNECTION_STATUS); - intent.putExtra(CIMPushManager.KEY_CIM_CONNECTION_STATUS, isConnected()); - context.sendBroadcast(intent); - } - - - - public void closeSession() - { - if(session!=null) - { - session.close(false); - } - } - - - IoHandlerAdapter iohandler = new IoHandlerAdapter() { - - @Override - public void sessionCreated(IoSession session) throws Exception { - - System.out.println("******************CIM连接服务器成功:"+session.getLocalAddress()); - - Intent intent = new Intent(); - intent.setAction(ACTION_CONNECTION_SUCCESS); - context.sendBroadcast(intent); - - } - - @Override - public void sessionOpened(IoSession session) throws Exception { - session.getConfig().setBothIdleTime(180); - } - - @Override - public void sessionClosed(IoSession session) throws Exception { - - System.out.println("******************CIM与服务器断开连接:"+session.getLocalAddress()); - if(CIMConnectorManager.this.session.getId()==session.getId()) - { - - Intent intent = new Intent(); - intent.setAction(ACTION_CONNECTION_CLOSED); - context.sendBroadcast(intent); - - } - } - - @Override - public void sessionIdle(IoSession session, IdleStatus status) - throws Exception { - - System.out.println("******************CIM与服务器连接空闲:"+session.getLocalAddress()); - SentBody sent = new SentBody(); - sent.setKey(CIMConstant.RequestKey.CLIENT_HEARTBEAT); - send(sent); - } - - @Override - public void exceptionCaught(IoSession session, Throwable cause) - throws Exception { - - Intent intent = new Intent(); - intent.setAction(ACTION_UNCAUGHT_EXCEPTION); - intent.putExtra("exception", cause); - context.sendBroadcast(intent); - } - - @Override - public void messageReceived(IoSession session, Object obj) - throws Exception { - - if (obj instanceof Message) { - - Intent intent = new Intent(); - intent.setAction(ACTION_MESSAGE_RECEIVED); - intent.putExtra("message", (Message) obj); - context.sendBroadcast(intent); - - } - if (obj instanceof ReplyBody) { - - - Intent intent = new Intent(); - intent.setAction(ACTION_REPLY_RECEIVED); - intent.putExtra("replyBody", (ReplyBody) obj); - context.sendBroadcast(intent); - } - } - - @Override - public void messageSent(IoSession session, Object message) - throws Exception { - - Intent intent = new Intent(); - intent.setAction(ACTION_SENT_SUCCESS); - intent.putExtra("sentBody", (SentBody) message); - context.sendBroadcast(intent); - - - } - }; - - public static boolean netWorkAvailable(Context context) { - try { - ConnectivityManager nw = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); - NetworkInfo networkInfo = nw.getActiveNetworkInfo(); - return networkInfo != null; - } catch (Exception e) {} - - return false; - } - - +/** + * probject:cim-android-sdk + * @version 2.0.0 + * + * @author 3979434@qq.com + */ +package com.farsunset.cim.client.android; +import java.net.InetSocketAddress; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; + +import org.apache.mina.core.future.ConnectFuture; +import org.apache.mina.core.future.WriteFuture; +import org.apache.mina.core.service.IoHandlerAdapter; +import org.apache.mina.core.session.IdleStatus; +import org.apache.mina.core.session.IoSession; +import org.apache.mina.filter.codec.ProtocolCodecFilter; +import org.apache.mina.filter.keepalive.KeepAliveFilter; +import org.apache.mina.filter.keepalive.KeepAliveMessageFactory; +import org.apache.mina.transport.socket.nio.NioSocketConnector; + +import android.content.Context; +import android.content.Intent; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.util.Log; + +import com.farsunset.cim.client.constant.CIMConstant; +import com.farsunset.cim.client.exception.CIMSessionDisableException; +import com.farsunset.cim.client.exception.NetWorkDisableException; +import com.farsunset.cim.client.exception.WriteToClosedSessionException; +import com.farsunset.cim.client.filter.ClientMessageCodecFactory; +import com.farsunset.cim.client.model.Message; +import com.farsunset.cim.client.model.ReplyBody; +import com.farsunset.cim.client.model.SentBody; + +/** + * 连接服务端管理,cim核心处理类,管理连接,以及消息处理 + * + * @author 3979434@qq.com + */ +class CIMConnectorManager { + + final static String TAG = CIMConnectorManager.class.getSimpleName(); + private NioSocketConnector connector; + private ConnectFuture connectFuture; + + Context context; + + + static CIMConnectorManager manager; + + // 消息广播action + public static final String ACTION_MESSAGE_RECEIVED = "com.farsunset.cim.MESSAGE_RECEIVED"; + + // 发送sendbody失败广播 + public static final String ACTION_SENT_FAILED = "com.farsunset.cim.SENT_FAILED"; + + // 发送sendbody成功广播 + public static final String ACTION_SENT_SUCCESS = "com.farsunset.cim.SENT_SUCCESS"; + // 链接意外关闭广播 + public static final String ACTION_CONNECTION_CLOSED = "com.farsunset.cim.CONNECTION_CLOSED"; + // 链接失败广播 + public static final String ACTION_CONNECTION_FAILED = "com.farsunset.cim.CONNECTION_FAILED"; + // 链接成功广播 + public static final String ACTION_CONNECTION_SUCCESS = "com.farsunset.cim.CONNECTION_SUCCESS"; + // 发送sendbody成功后获得replaybody回应广播 + public static final String ACTION_REPLY_RECEIVED = "com.farsunset.cim.REPLY_RECEIVED"; + // 网络变化广播 + public static final String ACTION_NETWORK_CHANGED = "android.net.conn.CONNECTIVITY_CHANGE"; + + // 未知异常 + public static final String ACTION_UNCAUGHT_EXCEPTION = "com.farsunset.cim.UNCAUGHT_EXCEPTION"; + + // CIM连接状态 + public static final String ACTION_CONNECTION_STATUS = "com.farsunset.cim.CONNECTION_STATUS"; + + + private ExecutorService executor; + + private CIMConnectorManager(Context ctx) { + context = ctx; + executor = Executors.newFixedThreadPool(3); + + connector = new NioSocketConnector(); + connector.setConnectTimeoutMillis(10 * 1000); + connector.getSessionConfig().setTcpNoDelay(true); + connector.getSessionConfig().setReadBufferSize(2048); + connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(new ClientMessageCodecFactory())); + + KeepAliveFilter keepAliveaHandler = new KeepAliveFilter(new ClientKeepAliveFactoryImpl(), IdleStatus.BOTH_IDLE); + keepAliveaHandler.setForwardEvent(true); + connector.getFilterChain().addLast("heartbeat", keepAliveaHandler); + connector.setHandler(iohandler); + + + + } + + public synchronized static CIMConnectorManager getManager(Context context) { + if (manager == null) { + manager = new CIMConnectorManager(context); + } + return manager; + + } + + private synchronized void syncConnection(final String cimServerHost,final int cimServerPort) { + try { + + if(isConnected()){ + return ; + } + InetSocketAddress remoteSocketAddress = new InetSocketAddress(cimServerHost, cimServerPort); + connectFuture = connector.connect(remoteSocketAddress); + connectFuture.awaitUninterruptibly(); + connectFuture.getSession(); + } catch (Exception e) { + + Intent intent = new Intent(); + intent.setAction(ACTION_CONNECTION_FAILED); + intent.putExtra("exception", e); + context.sendBroadcast(intent); + + Log.i(TAG, "******************CIM连接服务器失败 "+cimServerHost+":"+cimServerPort); + + } + + } + + public void connect(final String cimServerHost, final int cimServerPort) { + + + if (!netWorkAvailable(context)) { + + Intent intent = new Intent(); + intent.setAction(ACTION_CONNECTION_FAILED); + intent.putExtra("exception", new NetWorkDisableException()); + context.sendBroadcast(intent); + + return; + } + + Future future = executor.submit(new Runnable() { + @Override + public void run() { + syncConnection(cimServerHost, cimServerPort); + } + }); + try { + if(future.get()!=null) + { + connect(cimServerHost,cimServerPort); + } + } catch (Exception e) { + + connect(cimServerHost,cimServerPort); + e.printStackTrace(); + } + + + } + + public void send(final SentBody body) { + + + executor.execute(new Runnable() { + @Override + public void run() { + + android.os.Message msg = new android.os.Message(); + msg.getData().putSerializable("body", body); + + IoSession session = getCurrentSession(); + if(session!=null && session.isConnected()) + { + WriteFuture wf = session.write(body); + // 消息发送超时 10秒 + wf.awaitUninterruptibly(5, TimeUnit.SECONDS); + + if (!wf.isWritten()) { + + + Intent intent = new Intent(); + intent.setAction(ACTION_SENT_FAILED); + intent.putExtra("exception", new WriteToClosedSessionException()); + intent.putExtra("sentBody", body); + context.sendBroadcast(intent); + } + }else + { + + Intent intent = new Intent(); + intent.setAction(ACTION_SENT_FAILED); + intent.putExtra("exception", new CIMSessionDisableException()); + intent.putExtra("sentBody", body); + context.sendBroadcast(intent); + } + } + }); + } + + public void destroy() { + IoSession session = getCurrentSession(); + if (session != null) { + session.close(false); + session.removeAttribute("account"); + } + + if (connector != null && !connector.isDisposed()) { + connector.dispose(); + } + manager = null; + } + + public boolean isConnected() { + IoSession session = getCurrentSession(); + if (session == null ) { + return false; + } + return session.isConnected() ; + } + + public void deliverIsConnected() { + Intent intent = new Intent(); + intent.setAction(ACTION_CONNECTION_STATUS); + intent.putExtra(CIMPushManager.KEY_CIM_CONNECTION_STATUS, isConnected()); + context.sendBroadcast(intent); + } + + + + public void closeSession() + { + IoSession session = getCurrentSession(); + if(session!=null) + { + session.close(false); + } + } + + public IoSession getCurrentSession() + { + if(connector.getManagedSessionCount()>0) + { + for(Long key:connector.getManagedSessions().keySet()) + { + return connector.getManagedSessions().get(key); + } + } + + return null; + } + + IoHandlerAdapter iohandler = new IoHandlerAdapter() { + + @Override + public void sessionCreated(IoSession session) throws Exception { + + + Log.i(TAG, "******************CIM连接服务器成功:"+session.getLocalAddress()); + + Intent intent = new Intent(); + intent.setAction(ACTION_CONNECTION_SUCCESS); + context.sendBroadcast(intent); + + } + + @Override + public void sessionOpened(IoSession session) throws Exception { + session.getConfig().setBothIdleTime(180); + } + + @Override + public void sessionClosed(IoSession session) throws Exception { + + Log.i(TAG, "******************CIM与服务器断开连接:"+session.getLocalAddress()); + + Intent intent = new Intent(); + intent.setAction(ACTION_CONNECTION_CLOSED); + context.sendBroadcast(intent); + + } + + @Override + public void sessionIdle(IoSession session, IdleStatus status) + throws Exception { + + Log.i(TAG, "******************CIM与服务器连接空闲:"+session.getLocalAddress()); + } + + @Override + public void exceptionCaught(IoSession session, Throwable cause) + throws Exception { + + Intent intent = new Intent(); + intent.setAction(ACTION_UNCAUGHT_EXCEPTION); + intent.putExtra("exception", cause); + context.sendBroadcast(intent); + } + + @Override + public void messageReceived(IoSession session, Object obj) + throws Exception { + + if (obj instanceof Message) { + + Intent intent = new Intent(); + intent.setAction(ACTION_MESSAGE_RECEIVED); + intent.putExtra("message", (Message) obj); + context.sendBroadcast(intent); + + } + if (obj instanceof ReplyBody) { + + + Intent intent = new Intent(); + intent.setAction(ACTION_REPLY_RECEIVED); + intent.putExtra("replyBody", (ReplyBody) obj); + context.sendBroadcast(intent); + } + } + + @Override + public void messageSent(IoSession session, Object message) throws Exception { + if(message instanceof SentBody) + { + Intent intent = new Intent(); + intent.setAction(ACTION_SENT_SUCCESS); + intent.putExtra("sentBody", (SentBody) message); + context.sendBroadcast(intent); + } + } + }; + + public static boolean netWorkAvailable(Context context) { + try { + ConnectivityManager nw = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo networkInfo = nw.getActiveNetworkInfo(); + return networkInfo != null; + } catch (Exception e) {} + + return false; + } + + public class ClientKeepAliveFactoryImpl implements KeepAliveMessageFactory { + + @Override + public Object getRequest(IoSession arg0) { + return null; + } + + @Override + public Object getResponse(IoSession arg0, Object arg1) { + return CIMConstant.CMD_HEARTBEAT_RESPONSE; + } + + @Override + public boolean isRequest(IoSession arg0, Object arg1) { + return CIMConstant.CMD_HEARTBEAT_REQUEST.equals(arg1); + } + + @Override + public boolean isResponse(IoSession arg0, Object arg1) { + return false; + } + + } } \ No newline at end of file diff --git a/cim_for_mina/cim-core/src/com/farsunset/cim/client/android/CIMEnventListenerReceiver.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/android/CIMEventBroadcastReceiver.java similarity index 61% rename from cim_for_mina/cim-core/src/com/farsunset/cim/client/android/CIMEnventListenerReceiver.java rename to cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/android/CIMEventBroadcastReceiver.java index c55c43b..9a68fa5 100644 --- a/cim_for_mina/cim-core/src/com/farsunset/cim/client/android/CIMEnventListenerReceiver.java +++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/android/CIMEventBroadcastReceiver.java @@ -1,188 +1,239 @@ -package com.farsunset.cim.client.android; - -import java.util.List; - -import android.app.ActivityManager; -import android.app.ActivityManager.RunningTaskInfo; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.net.ConnectivityManager; -import android.net.NetworkInfo; -import android.os.Handler; -import com.farsunset.cim.nio.constant.CIMConstant; -import com.farsunset.cim.nio.mutual.Message; -import com.farsunset.cim.nio.mutual.ReplyBody; -import com.farsunset.cim.nio.mutual.SentBody; -/** - * 消息入口,所有消息都会经过这里 - * @author 3979434 - * - */ -public abstract class CIMEnventListenerReceiver extends BroadcastReceiver implements OnCIMMessageListener { - - - public Context context; - @Override - public void onReceive(Context ctx, Intent it) { - - context = ctx; - - if(it.getAction().equals(CIMConnectorManager.ACTION_NETWORK_CHANGED)) - { - ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService("connectivity"); - android.net.NetworkInfo info = connectivityManager.getActiveNetworkInfo(); - - onDevicesNetworkChanged(info); - } - - if(it.getAction().equals(CIMConnectorManager.ACTION_CONNECTION_CLOSED)) - { - dispatchConnectionClosed(); - } - - if(it.getAction().equals(CIMConnectorManager.ACTION_CONNECTION_FAILED)) - { - onConnectionFailed((Exception) it.getSerializableExtra("exception")); - } - - if(it.getAction().equals(CIMConnectorManager.ACTION_CONNECTION_SUCCESS)) - { - dispatchConnectionSucceed(); - } - - if(it.getAction().equals(CIMConnectorManager.ACTION_MESSAGE_RECEIVED)) - { - filterType999Message((Message)it.getSerializableExtra("message")); - } - - if(it.getAction().equals(CIMConnectorManager.ACTION_REPLY_RECEIVED)) - { - onReplyReceived((ReplyBody)it.getSerializableExtra("replyBody")); - } - - if(it.getAction().equals(CIMConnectorManager.ACTION_SENT_FAILED)) - { - onSentFailed((Exception) it.getSerializableExtra("exception"),(SentBody)it.getSerializableExtra("sentBody")); - } - - if(it.getAction().equals(CIMConnectorManager.ACTION_SENT_SUCCESS)) - { - onSentSucceed((SentBody)it.getSerializableExtra("sentBody")); - } - - if(it.getAction().equals(CIMConnectorManager.ACTION_UNCAUGHT_EXCEPTION)) - { - onUncaughtException((Exception)it.getSerializableExtra("exception")); - } - - if(it.getAction().equals(CIMConnectorManager.ACTION_CONNECTION_STATUS)) - { - onConnectionStatus(it.getBooleanExtra(CIMPushManager.KEY_CIM_CONNECTION_STATUS, false)); - } - - - } - - - private void dispatchConnectionClosed() { - - if(CIMConnectorManager.netWorkAvailable(context)) - { - CIMPushManager.init(context); - } - - onConnectionClosed(); - } - - - protected boolean isInBackground(Context context) { - List tasksInfo = ((ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE)).getRunningTasks(1); - if (tasksInfo.size() > 0) { - - if (context.getPackageName().equals( - tasksInfo.get(0).topActivity.getPackageName())) { - - return false; - } - } - return true; - } - - private void onConnectionFailed(Exception e){ - - if(CIMConnectorManager.netWorkAvailable(context)) - { - //间隔30秒后重连 - connectionHandler.sendMessageDelayed(connectionHandler.obtainMessage(), 30*1000); - } - } - - - Handler connectionHandler = new Handler() - { - @Override - public void handleMessage(android.os.Message message){ - - CIMPushManager.init(context); - } - - }; - - private void dispatchConnectionSucceed() { - - CIMPushManager.setAccount(context); - onConnectionSucceed(); - - } - - - - private void onUncaughtException(Throwable arg0) {} - - - - private void onDevicesNetworkChanged(NetworkInfo info) { - - if(info !=null) - { - CIMPushManager.init(context); - } - - onNetworkChanged(info); - } - - private void filterType999Message(com.farsunset.cim.nio.mutual.Message message) - { - if(CIMConstant.MessageType.TYPE_999.equals(message.getType())) - { - CIMDataConfig.putBoolean(context,CIMDataConfig.KEY_MANUAL_STOP,true); - } - - onMessageReceived(message); - } - - private void onSentFailed(Exception e, SentBody body){ - - //与服务端端开链接,重新连接 - if(e instanceof CIMSessionDisableException) - { - CIMPushManager.init(context); - }else - { - //发送失败 重新发送 - CIMPushManager.sendRequest(context, body); - } - - } - - private void onSentSucceed(SentBody body){} - - @Override - public abstract void onMessageReceived(com.farsunset.cim.nio.mutual.Message message); - @Override - public abstract void onReplyReceived(ReplyBody body); - - public abstract void onNetworkChanged(NetworkInfo info); - -} \ No newline at end of file +/** + * probject:cim-android-sdk + * @version 2.0.0 + * + * @author 3979434@qq.com + */ +package com.farsunset.cim.client.android; + +import java.util.List; + +import android.app.ActivityManager; +import android.app.ActivityManager.RunningTaskInfo; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.os.Handler; + +import com.farsunset.cim.client.constant.CIMConstant; +import com.farsunset.cim.client.exception.CIMSessionDisableException; +import com.farsunset.cim.client.model.Message; +import com.farsunset.cim.client.model.ReplyBody; +import com.farsunset.cim.client.model.SentBody; +/** + * 消息入口,所有消息都会经过这里 + */ +public abstract class CIMEventBroadcastReceiver extends BroadcastReceiver implements CIMEventListener { + + + public Context context; + @Override + public void onReceive(Context ctx, Intent it) { + + context = ctx; + + /* + * 操作事件广播,用于提高service存活率 + */ + if(it.getAction().equals(Intent.ACTION_USER_PRESENT) + ||it.getAction().equals(Intent.ACTION_POWER_CONNECTED) + ||it.getAction().equals(Intent.ACTION_POWER_DISCONNECTED) + ) + { + startPushService(); + } + + + /* + * 设备网络状态变化事件 + */ + if(it.getAction().equals(CIMConnectorManager.ACTION_NETWORK_CHANGED)) + { + ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); + android.net.NetworkInfo info = connectivityManager.getActiveNetworkInfo(); + onDevicesNetworkChanged(info); + } + + /* + * cim断开服务器事件 + */ + if(it.getAction().equals(CIMConnectorManager.ACTION_CONNECTION_CLOSED)) + { + if(CIMConnectorManager.netWorkAvailable(context)) + { + CIMPushManager.init(context); + } + onCIMConnectionClosed(); + } + + /* + * cim连接服务器失败事件 + */ + if(it.getAction().equals(CIMConnectorManager.ACTION_CONNECTION_FAILED)) + { + onConnectionFailed((Exception) it.getSerializableExtra("exception")); + } + + /* + * cim连接服务器成功事件 + */ + if(it.getAction().equals(CIMConnectorManager.ACTION_CONNECTION_SUCCESS)) + { + + + CIMPushManager.bindAccount(context); + + onCIMConnectionSucceed(); + } + + /* + * 收到推送消息事件 + */ + if(it.getAction().equals(CIMConnectorManager.ACTION_MESSAGE_RECEIVED)) + { + filterType999Message((Message)it.getSerializableExtra("message")); + } + + + /* + * 获取收到replybody成功事件 + */ + if(it.getAction().equals(CIMConnectorManager.ACTION_REPLY_RECEIVED)) + { + onReplyReceived((ReplyBody)it.getSerializableExtra("replyBody")); + } + + + /* + * 获取sendbody发送失败事件 + */ + if(it.getAction().equals(CIMConnectorManager.ACTION_SENT_FAILED)) + { + onSentFailed((Exception) it.getSerializableExtra("exception"),(SentBody)it.getSerializableExtra("sentBody")); + } + + /* + * 获取sendbody发送成功事件 + */ + if(it.getAction().equals(CIMConnectorManager.ACTION_SENT_SUCCESS)) + { + onSentSucceed((SentBody)it.getSerializableExtra("sentBody")); + } + + + /* + * 获取cim数据传输异常事件 + */ + if(it.getAction().equals(CIMConnectorManager.ACTION_UNCAUGHT_EXCEPTION)) + { + onUncaughtException((Exception)it.getSerializableExtra("exception")); + } + + /* + * 获取cim连接状态事件 + */ + if(it.getAction().equals(CIMConnectorManager.ACTION_CONNECTION_STATUS)) + { + onConnectionStatus(it.getBooleanExtra(CIMPushManager.KEY_CIM_CONNECTION_STATUS, false)); + } + } + + protected boolean isInBackground(Context context) { + List tasksInfo = ((ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE)).getRunningTasks(1); + if (tasksInfo.size() > 0) { + + if (context.getPackageName().equals( + tasksInfo.get(0).topActivity.getPackageName())) { + + return false; + } + } + return true; + } + + + private void startPushService() + { + Intent intent = new Intent(context, CIMPushService.class); + intent.putExtra(CIMPushManager.SERVICE_ACTION, CIMPushManager.ACTION_ACTIVATE_PUSH_SERVICE); + context.startService(intent); + } + + + + + private void onConnectionFailed(Exception e){ + + if(CIMConnectorManager.netWorkAvailable(context)) + { + //间隔30秒后重连 + connectionHandler.sendMessageDelayed(connectionHandler.obtainMessage(), 30*1000); + } + } + + + Handler connectionHandler = new Handler() + { + @Override + public void handleMessage(android.os.Message message){ + + CIMPushManager.init(context); + } + + }; + + + + private void onUncaughtException(Throwable arg0) {} + + + + private void onDevicesNetworkChanged(NetworkInfo info) { + + if(info !=null) + { + CIMPushManager.init(context); + } + + onNetworkChanged(info); + } + + private void filterType999Message(com.farsunset.cim.client.model.Message message) + { + if(CIMConstant.MessageType.TYPE_999.equals(message.getType())) + { + CIMCacheTools.putBoolean(context,CIMCacheTools.KEY_MANUAL_STOP,true); + } + + onMessageReceived(message); + } + + private void onSentFailed(Exception e, SentBody body){ + + //与服务端端开链接,重新连接 + if(e instanceof CIMSessionDisableException) + { + CIMPushManager.init(context); + }else + { + //发送失败 重新发送 + CIMPushManager.sendRequest(context, body); + } + + } + + private void onSentSucceed(SentBody body){} + + @Override + public abstract void onMessageReceived(com.farsunset.cim.client.model.Message message); + @Override + public abstract void onReplyReceived(ReplyBody body); + + public abstract void onNetworkChanged(NetworkInfo info); + + public abstract void onCIMConnectionSucceed(); + + public abstract void onCIMConnectionClosed(); +} diff --git a/cim_for_mina/cim-core/src/com/farsunset/cim/client/android/OnCIMMessageListener.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/android/CIMEventListener.java similarity index 51% rename from cim_for_mina/cim-core/src/com/farsunset/cim/client/android/OnCIMMessageListener.java rename to cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/android/CIMEventListener.java index 5fe4bf8..146a8a1 100644 --- a/cim_for_mina/cim-core/src/com/farsunset/cim/client/android/OnCIMMessageListener.java +++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/android/CIMEventListener.java @@ -1,23 +1,20 @@ - +/** + * probject:cim-android-sdk + * @version 2.0.0 + * + * @author 3979434@qq.com + */ package com.farsunset.cim.client.android; import android.net.NetworkInfo; -import com.farsunset.cim.nio.mutual.Message; -import com.farsunset.cim.nio.mutual.ReplyBody; +import com.farsunset.cim.client.model.Message; +import com.farsunset.cim.client.model.ReplyBody; /** *CIM 主要事件接口 - * 类名称:OnCIMMessageListener - * 类描述: - * 创建人: 3979434 - * 修改人: 3979434 - * 修改时间: 2014-4-28 下午5:07:47 - * 修改备注: - * @version 1.0.0 - * */ -public interface OnCIMMessageListener +public interface CIMEventListener { @@ -25,36 +22,36 @@ public interface OnCIMMessageListener * 当收到服务端推送过来的消息时调用 * @param message */ - public abstract void onMessageReceived(Message message); + public void onMessageReceived(Message message); /** * 当调用CIMPushManager.sendRequest()向服务端发送请求,获得相应时调用 * @param replybody */ - public abstract void onReplyReceived(ReplyBody replybody); + public void onReplyReceived(ReplyBody replybody); /** * 当手机网络发生变化时调用 * @param networkinfo */ - public abstract void onNetworkChanged(NetworkInfo networkinfo); + public void onNetworkChanged(NetworkInfo networkinfo); /** * 获取到是否连接到服务端 * 通过调用CIMPushManager.detectIsConnected()来异步获取 * */ - public abstract void onConnectionStatus(boolean isConnected); + public void onConnectionStatus(boolean isConnected); /** * 连接服务端成功 */ - public abstract void onConnectionSucceed(); + public void onCIMConnectionSucceed(); /** * 连接断开 */ - public abstract void onConnectionClosed(); + public void onCIMConnectionClosed(); } diff --git a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/android/CIMListenerManager.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/android/CIMListenerManager.java new file mode 100644 index 0000000..f2d2965 --- /dev/null +++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/android/CIMListenerManager.java @@ -0,0 +1,101 @@ +/** + * probject:cim-android-sdk + * @version 2.0.0 + * + * @author 3979434@qq.com + */ +package com.farsunset.cim.client.android; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; + +import com.farsunset.cim.client.constant.CIMConstant; + +import android.app.Activity; +import android.content.Context; +import android.content.pm.ActivityInfo; +import android.content.pm.PackageManager; + + +/** + * CIM 消息监听器管理 + */ +public class CIMListenerManager { + + private static ArrayList cimListeners = new ArrayList(); + + + + public static void registerMessageListener(CIMEventListener listener,Context mcontext) { + + if (!cimListeners.contains(listener)) { + cimListeners.add(listener); + // 按照接收顺序倒序 + Collections.sort(cimListeners, new CIMMessageReceiveComparator(mcontext)); + } + } + + + public static void removeMessageListener(CIMEventListener listener) { + for (int i = 0; i < cimListeners.size(); i++) { + if (listener.getClass() == cimListeners.get(i).getClass()) { + cimListeners.remove(i); + } + } + } + + public static ArrayList getCIMListeners() { + return cimListeners; + } + + + + + + /** + * 消息接收activity的接收顺序排序,CIM_RECEIVE_ORDER倒序 + */ + static class CIMMessageReceiveComparator implements Comparator{ + + Context mcontext; + public CIMMessageReceiveComparator(Context ctx) + { + mcontext = ctx; + } + + @Override + public int compare(CIMEventListener arg1, CIMEventListener arg2) { + + Integer order1 = CIMConstant.CIM_DEFAULT_MESSAGE_ORDER; + Integer order2 = CIMConstant.CIM_DEFAULT_MESSAGE_ORDER; + ActivityInfo info; + if (arg1 instanceof Activity ) { + + try { + info = mcontext.getPackageManager() .getActivityInfo(((Activity)(arg1)).getComponentName(), PackageManager.GET_META_DATA); + if(info.metaData!=null) + { + order1 = info.metaData.getInt("CIM_RECEIVE_ORDER"); + } + + } catch (Exception e) {} + } + + if (arg1 instanceof Activity ) { + try { + info = mcontext.getPackageManager() .getActivityInfo(((Activity)(arg2)).getComponentName(), PackageManager.GET_META_DATA); + if(info.metaData!=null) + { + order2 = info.metaData.getInt("CIM_RECEIVE_ORDER"); + } + + } catch (Exception e) {} + } + + return order2.compareTo(order1); + } + + + } + +} \ No newline at end of file diff --git a/cim_for_mina/cim-core/src/com/farsunset/cim/client/android/CIMPushManager.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/android/CIMPushManager.java similarity index 58% rename from cim_for_mina/cim-core/src/com/farsunset/cim/client/android/CIMPushManager.java rename to cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/android/CIMPushManager.java index bc3ab1f..039cbc5 100644 --- a/cim_for_mina/cim-core/src/com/farsunset/cim/client/android/CIMPushManager.java +++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/android/CIMPushManager.java @@ -1,191 +1,215 @@ -package com.farsunset.cim.client.android; -import android.content.Context; -import android.content.Intent; -import android.telephony.TelephonyManager; -import java.util.UUID; -import com.farsunset.cim.nio.constant.CIMConstant; -import com.farsunset.cim.nio.mutual.SentBody; - -/** - * CIM 功能接口 - * - * @author 3979434@qq.com - */ -public class CIMPushManager { - - static String ACTION_CONNECTION_KEEPALIVE ="ACTION_CONNECTION_KEEPALIVE"; - - static String ACTION_CONNECTION ="ACTION_CONNECTION"; - - static String ACTION_CONNECTION_STATUS ="ACTION_CONNECTION_STATUS"; - - static String ACTION_SENDREQUEST ="ACTION_SENDREQUEST"; - - static String ACTION_DISCONNECTION ="ACTION_DISSENDREQUEST"; - - static String ACTION_DESTORY ="ACTION_DESTORY"; - - static String SERVICE_ACTION ="SERVICE_ACTION"; - - static String KEY_SEND_BODY ="KEY_SEND_BODY"; - - static String KEY_CIM_CONNECTION_STATUS ="KEY_CIM_CONNECTION_STATUS"; - - /** - * 初始化,连接服务端,在程序启动页或者 在Application里调用 - * @param context - * @param ip - * @param port - */ - public static void init(Context context,String ip,int port){ - - CIMDataConfig.putBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED, false); - CIMDataConfig.putBoolean(context,CIMDataConfig.KEY_MANUAL_STOP, false); - - Intent serviceIntent = new Intent(context, CIMPushService.class); - serviceIntent.putExtra(CIMDataConfig.KEY_CIM_SERVIER_HOST, ip); - serviceIntent.putExtra(CIMDataConfig.KEY_CIM_SERVIER_PORT, port); - serviceIntent.putExtra(SERVICE_ACTION, ACTION_CONNECTION); - context.startService(serviceIntent); - CIMDataConfig.putString(context, CIMDataConfig.KEY_CIM_SERVIER_HOST, ip); - CIMDataConfig.putInt(context, CIMDataConfig.KEY_CIM_SERVIER_PORT, port); - } - - protected static void init(Context context){ - - boolean isManualStop = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_MANUAL_STOP); - boolean isManualDestory = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED); - - if(isManualStop || isManualDestory) - { - return ; - } - - String host = CIMDataConfig.getString(context, CIMDataConfig.KEY_CIM_SERVIER_HOST); - int port =CIMDataConfig.getInt(context, CIMDataConfig.KEY_CIM_SERVIER_PORT); - - init(context,host,port); - - } - - - /** - * 设置一个账号登录到服务端 - * @param account 用户唯一ID - */ - public static void setAccount(Context context,String account){ - - - boolean isManualDestory = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED); - if(isManualDestory || account==null || account.trim().length()==0) - { - return ; - } - - CIMDataConfig.putBoolean(context,CIMDataConfig.KEY_MANUAL_STOP, false); - CIMDataConfig.putString(context,CIMDataConfig.KEY_ACCOUNT, account); - - String imei = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId(); - imei += context.getPackageName(); - SentBody sent = new SentBody(); - sent.setKey(CIMConstant.RequestKey.CLIENT_BIND); - sent.put("account", account); - sent.put("deviceId",UUID.nameUUIDFromBytes(imei.getBytes()).toString().replaceAll("-", "")); - sent.put("channel", "android"); - sent.put("device",android.os.Build.MODEL); - - sendRequest(context,sent); - - - } - - protected static void setAccount(Context context){ - - - - String account = CIMDataConfig.getString(context,CIMDataConfig.KEY_ACCOUNT); - setAccount(context,account); - } - - - - /** - * 发送一个CIM请求 - * @param context - * @body - */ - public static void sendRequest(Context context,SentBody body){ - - boolean isManualStop = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_MANUAL_STOP); - boolean isManualDestory = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED); - - if(isManualStop || isManualDestory) - { - return ; - } - - Intent serviceIntent = new Intent(context, CIMPushService.class); - serviceIntent.putExtra(KEY_SEND_BODY, body); - serviceIntent.putExtra(SERVICE_ACTION, ACTION_SENDREQUEST); - context.startService(serviceIntent); - - } - - /** - * 停止接受推送,将会退出当前账号登录,端口与服务端的连接 - * @param context - */ - public static void stop(Context context){ - - boolean isManualDestory = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED); - if(isManualDestory){ - return ; - } - - CIMDataConfig.putBoolean(context,CIMDataConfig.KEY_MANUAL_STOP, true); - - Intent serviceIntent = new Intent(context, CIMPushService.class); - serviceIntent.putExtra(SERVICE_ACTION, ACTION_DISCONNECTION); - context.startService(serviceIntent); - - } - - - /** - * 完全销毁CIM,一般用于完全退出程序,调用resume将不能恢复 - * @param context - */ - public static void destory(Context context){ - - - CIMDataConfig.putBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED, true); - CIMDataConfig.putString(context,CIMDataConfig.KEY_ACCOUNT, null); - - Intent serviceIntent = new Intent(context, CIMPushService.class); - serviceIntent.putExtra(SERVICE_ACTION, ACTION_DESTORY); - context.startService(serviceIntent); - - } - - - /** - * 重新恢复接收推送,重新连接服务端,并登录当前账号 - * @param context - */ - public static void resume(Context context){ - - boolean isManualDestory = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED); - if(isManualDestory){ - return ; - } - - setAccount(context); - } - - public void detectIsConnected(Context context){ - Intent serviceIntent = new Intent(context, CIMPushService.class); - serviceIntent.putExtra(SERVICE_ACTION, ACTION_CONNECTION_STATUS); - context.startService(serviceIntent); - } - +/** + * probject:cim-android-sdk + * @version 2.0.0 + * + * @author 3979434@qq.com + */ +package com.farsunset.cim.client.android; +import java.util.UUID; + +import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager.NameNotFoundException; +import android.telephony.TelephonyManager; + +import com.farsunset.cim.client.constant.CIMConstant; +import com.farsunset.cim.client.model.SentBody; + +/** + * CIM 功能接口 + */ +public class CIMPushManager { + + static String ACTION_ACTIVATE_PUSH_SERVICE ="ACTION_ACTIVATE_PUSH_SERVICE"; + + static String ACTION_CONNECTION ="ACTION_CONNECTION"; + + static String ACTION_CONNECTION_STATUS ="ACTION_CONNECTION_STATUS"; + + static String ACTION_SENDREQUEST ="ACTION_SENDREQUEST"; + + static String ACTION_DISCONNECTION ="ACTION_DISSENDREQUEST"; + + static String ACTION_DESTORY ="ACTION_DESTORY"; + + static String SERVICE_ACTION ="SERVICE_ACTION"; + + static String KEY_SEND_BODY ="KEY_SEND_BODY"; + + static String KEY_CIM_CONNECTION_STATUS ="KEY_CIM_CONNECTION_STATUS"; + + /** + * 初始化,连接服务端,在程序启动页或者 在Application里调用 + * @param context + * @param ip + * @param port + */ + public static void init(Context context,String ip,int port){ + + CIMCacheTools.putBoolean(context,CIMCacheTools.KEY_CIM_DESTORYED, false); + CIMCacheTools.putBoolean(context,CIMCacheTools.KEY_MANUAL_STOP, false); + + CIMCacheTools.putString(context, CIMCacheTools.KEY_CIM_SERVIER_HOST, ip); + CIMCacheTools.putInt(context, CIMCacheTools.KEY_CIM_SERVIER_PORT, port); + + Intent serviceIntent = new Intent(context, CIMPushService.class); + serviceIntent.putExtra(CIMCacheTools.KEY_CIM_SERVIER_HOST, ip); + serviceIntent.putExtra(CIMCacheTools.KEY_CIM_SERVIER_PORT, port); + serviceIntent.putExtra(SERVICE_ACTION, ACTION_CONNECTION); + context.startService(serviceIntent); + + } + + protected static void init(Context context){ + + boolean isManualStop = CIMCacheTools.getBoolean(context,CIMCacheTools.KEY_MANUAL_STOP); + boolean isManualDestory = CIMCacheTools.getBoolean(context,CIMCacheTools.KEY_CIM_DESTORYED); + + if(isManualStop || isManualDestory) + { + return ; + } + + String host = CIMCacheTools.getString(context, CIMCacheTools.KEY_CIM_SERVIER_HOST); + int port =CIMCacheTools.getInt(context, CIMCacheTools.KEY_CIM_SERVIER_PORT); + + init(context,host,port); + + } + + + /** + * 设置一个账号登录到服务端 + * @param account 用户唯一ID + */ + public static void bindAccount(Context context,String account){ + + + boolean isManualDestory = CIMCacheTools.getBoolean(context,CIMCacheTools.KEY_CIM_DESTORYED); + if(isManualDestory || account==null || account.trim().length()==0) + { + return ; + } + + CIMCacheTools.putBoolean(context,CIMCacheTools.KEY_MANUAL_STOP, false); + CIMCacheTools.putString(context,CIMCacheTools.KEY_ACCOUNT, account); + + String imei = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId(); + imei += context.getPackageName(); + SentBody sent = new SentBody(); + sent.setKey(CIMConstant.RequestKey.CLIENT_BIND); + sent.put("account", account); + sent.put("deviceId",UUID.nameUUIDFromBytes(imei.getBytes()).toString().replaceAll("-", "")); + sent.put("channel", "android"); + sent.put("device",android.os.Build.MODEL); + sent.put("appVersion",getVersionName(context)); + sent.put("osVersion",android.os.Build.VERSION.RELEASE); + sendRequest(context,sent); + + + } + + + protected static void bindAccount(Context context){ + + + + String account = CIMCacheTools.getString(context,CIMCacheTools.KEY_ACCOUNT); + bindAccount(context,account); + } + + + + /** + * 发送一个CIM请求 + * @param context + * @body + */ + public static void sendRequest(Context context,SentBody body){ + + boolean isManualStop = CIMCacheTools.getBoolean(context,CIMCacheTools.KEY_MANUAL_STOP); + boolean isManualDestory = CIMCacheTools.getBoolean(context,CIMCacheTools.KEY_CIM_DESTORYED); + + if(isManualStop || isManualDestory) + { + return ; + } + + Intent serviceIntent = new Intent(context, CIMPushService.class); + serviceIntent.putExtra(KEY_SEND_BODY, body); + serviceIntent.putExtra(SERVICE_ACTION, ACTION_SENDREQUEST); + context.startService(serviceIntent); + + } + + /** + * 停止接受推送,将会退出当前账号登录,端口与服务端的连接 + * @param context + */ + public static void stop(Context context){ + + boolean isManualDestory = CIMCacheTools.getBoolean(context,CIMCacheTools.KEY_CIM_DESTORYED); + if(isManualDestory){ + return ; + } + + CIMCacheTools.putBoolean(context,CIMCacheTools.KEY_MANUAL_STOP, true); + + Intent serviceIntent = new Intent(context, CIMPushService.class); + serviceIntent.putExtra(SERVICE_ACTION, ACTION_DISCONNECTION); + context.startService(serviceIntent); + + } + + + /** + * 完全销毁CIM,一般用于完全退出程序,调用resume将不能恢复 + * @param context + */ + public static void destory(Context context){ + + + CIMCacheTools.putBoolean(context,CIMCacheTools.KEY_CIM_DESTORYED, true); + CIMCacheTools.putString(context,CIMCacheTools.KEY_ACCOUNT, null); + + Intent serviceIntent = new Intent(context, CIMPushService.class); + serviceIntent.putExtra(SERVICE_ACTION, ACTION_DESTORY); + context.startService(serviceIntent); + + } + + + /** + * 重新恢复接收推送,重新连接服务端,并登录当前账号 + * @param context + */ + public static void resume(Context context){ + + boolean isManualDestory = CIMCacheTools.getBoolean(context,CIMCacheTools.KEY_CIM_DESTORYED); + if(isManualDestory){ + return ; + } + + bindAccount(context); + } + + public static void detectIsConnected(Context context){ + Intent serviceIntent = new Intent(context, CIMPushService.class); + serviceIntent.putExtra(SERVICE_ACTION, ACTION_CONNECTION_STATUS); + context.startService(serviceIntent); + } + + + + private static String getVersionName(Context context) { + String versionName = null; + try { + PackageInfo mPackageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0); + versionName = mPackageInfo.versionName; + } catch (NameNotFoundException e) { + } + return versionName; + } + } \ No newline at end of file diff --git a/cim_for_mina/cim-core/src/com/farsunset/cim/client/android/CIMPushService.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/android/CIMPushService.java similarity index 54% rename from cim_for_mina/cim-core/src/com/farsunset/cim/client/android/CIMPushService.java rename to cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/android/CIMPushService.java index c496539..5fe5206 100644 --- a/cim_for_mina/cim-core/src/com/farsunset/cim/client/android/CIMPushService.java +++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/android/CIMPushService.java @@ -1,15 +1,11 @@ package com.farsunset.cim.client.android; - -import android.app.AlarmManager; -import android.app.PendingIntent; import android.app.Service; import android.content.Intent; -import android.os.Binder; import android.os.IBinder; import android.util.Log; -import com.farsunset.cim.nio.mutual.SentBody; +import com.farsunset.cim.client.model.SentBody; /** @@ -19,18 +15,12 @@ import com.farsunset.cim.nio.mutual.SentBody; */ public class CIMPushService extends Service { - + protected final static int DEF_CIM_PORT = 28888; CIMConnectorManager manager; - AlarmManager localAlarmManager; - private IBinder binder=new CIMPushService.LocalBinder(); - PendingIntent localPendingIntent; @Override public void onCreate() { manager = CIMConnectorManager.getManager(this.getApplicationContext()); - localPendingIntent = PendingIntent.getBroadcast(this, 0, new Intent(this, KeepAliveReceiver.class), PendingIntent.FLAG_CANCEL_CURRENT); - localAlarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); - localAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, 300000L + System.currentTimeMillis(),300000L, localPendingIntent); } @@ -41,18 +31,18 @@ import com.farsunset.cim.nio.mutual.SentBody; if(intent==null) { intent = new Intent(CIMPushManager.ACTION_CONNECTION); - String host = CIMDataConfig.getString(this, CIMDataConfig.KEY_CIM_SERVIER_HOST); - int port =CIMDataConfig.getInt(this, CIMDataConfig.KEY_CIM_SERVIER_PORT); - intent.putExtra(CIMDataConfig.KEY_CIM_SERVIER_HOST, host); - intent.putExtra(CIMDataConfig.KEY_CIM_SERVIER_PORT, port); + String host = CIMCacheTools.getString(this, CIMCacheTools.KEY_CIM_SERVIER_HOST); + int port =CIMCacheTools.getInt(this, CIMCacheTools.KEY_CIM_SERVIER_PORT); + intent.putExtra(CIMCacheTools.KEY_CIM_SERVIER_HOST, host); + intent.putExtra(CIMCacheTools.KEY_CIM_SERVIER_PORT, port); } action = intent.getStringExtra(CIMPushManager.SERVICE_ACTION); if(CIMPushManager.ACTION_CONNECTION.equals(action)) { - String host = intent.getStringExtra(CIMDataConfig.KEY_CIM_SERVIER_HOST); - int port = intent.getIntExtra(CIMDataConfig.KEY_CIM_SERVIER_PORT, 28888); + String host = intent.getStringExtra(CIMCacheTools.KEY_CIM_SERVIER_HOST); + int port = intent.getIntExtra(CIMCacheTools.KEY_CIM_SERVIER_PORT, DEF_CIM_PORT); manager.connect(host,port); } @@ -68,8 +58,6 @@ import com.farsunset.cim.nio.mutual.SentBody; if(CIMPushManager.ACTION_DESTORY.equals(action)) { - localAlarmManager.cancel(localPendingIntent); - localPendingIntent.cancel(); manager.destroy(); this.stopSelf(); android.os.Process.killProcess(android.os.Process.myPid()); @@ -80,14 +68,14 @@ import com.farsunset.cim.nio.mutual.SentBody; manager.deliverIsConnected(); } - if(CIMPushManager.ACTION_CONNECTION_KEEPALIVE.equals(action)) + if(CIMPushManager.ACTION_ACTIVATE_PUSH_SERVICE.equals(action)) { if(!manager.isConnected()) { - Log.d(CIMPushService.class.getSimpleName(), "isConnected() = false "); - String host = intent.getStringExtra(CIMDataConfig.KEY_CIM_SERVIER_HOST); - int port = intent.getIntExtra(CIMDataConfig.KEY_CIM_SERVIER_PORT, 28888); + Log.d(CIMPushService.class.getSimpleName(), "cimpush isConnected() = false "); + String host = intent.getStringExtra(CIMCacheTools.KEY_CIM_SERVIER_HOST); + int port = intent.getIntExtra(CIMCacheTools.KEY_CIM_SERVIER_PORT, DEF_CIM_PORT); manager.connect(host,port); }else { @@ -98,18 +86,12 @@ import com.farsunset.cim.nio.mutual.SentBody; return Service.START_REDELIVER_INTENT; } - - + + @Override public IBinder onBind(Intent arg0) { - return binder; + return null; } - - public class LocalBinder extends Binder{ - - public CIMPushService getService() - { - return CIMPushService.this; - } - } + + } diff --git a/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/constant/CIMConstant.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/constant/CIMConstant.java new file mode 100644 index 0000000..c1e85ef --- /dev/null +++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/constant/CIMConstant.java @@ -0,0 +1,68 @@ +/** + * probject:cim-android-sdk + * @version 2.0.0 + * + * @author 3979434@qq.com + */ +package com.farsunset.cim.client.constant; + +/** + * 常量 + */ +public interface CIMConstant { + + + public static String UTF8="UTF-8"; + + public static byte MESSAGE_SEPARATE='\b'; + + + public static int CIM_DEFAULT_MESSAGE_ORDER=1; + + public static class ReturnCode{ + + public static String CODE_404 ="404"; + + public static String CODE_403 ="403"; + + public static String CODE_405 ="405"; + + public static String CODE_200 ="200"; + + public static String CODE_206 ="206"; + + public static String CODE_500 ="500"; + + + } + + /** + * 服务端心跳请求命令 + */ + public static final String CMD_HEARTBEAT_REQUEST="cmd_server_hb_request"; + /** + * 客户端心跳响应命令 + */ + public static final String CMD_HEARTBEAT_RESPONSE ="cmd_client_hb_response"; + + + public static class RequestKey{ + + + public static String CLIENT_BIND ="client_bind"; + + public static String CLIENT_LOGOUT ="client_logout"; + + public static String CLIENT_OFFLINE_MESSAGE ="client_get_offline_message"; + + } + + + public static class MessageType{ + + //用户会 踢出下线消息类型 + public static String TYPE_999 ="999"; + + } + +} \ No newline at end of file diff --git a/cim_for_mina/cim-core/src/com/farsunset/cim/client/android/CIMSessionDisableException.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/exception/CIMSessionDisableException.java similarity index 64% rename from cim_for_mina/cim-core/src/com/farsunset/cim/client/android/CIMSessionDisableException.java rename to cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/exception/CIMSessionDisableException.java index 29dc437..831e66a 100644 --- a/cim_for_mina/cim-core/src/com/farsunset/cim/client/android/CIMSessionDisableException.java +++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/exception/CIMSessionDisableException.java @@ -1,4 +1,10 @@ -package com.farsunset.cim.client.android; +/** + * probject:cim-android-sdk + * @version 2.0.0 + * + * @author 3979434@qq.com + */ +package com.farsunset.cim.client.exception; public class CIMSessionDisableException extends Exception { diff --git a/cim_for_mina/cim-core/src/com/farsunset/cim/client/android/NetWorkDisableException.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/exception/NetWorkDisableException.java similarity index 63% rename from cim_for_mina/cim-core/src/com/farsunset/cim/client/android/NetWorkDisableException.java rename to cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/exception/NetWorkDisableException.java index 3162370..c5ed6ab 100644 --- a/cim_for_mina/cim-core/src/com/farsunset/cim/client/android/NetWorkDisableException.java +++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/exception/NetWorkDisableException.java @@ -1,4 +1,10 @@ -package com.farsunset.cim.client.android; +/** + * probject:cim-android-sdk + * @version 2.0.0 + * + * @author 3979434@qq.com + */ +package com.farsunset.cim.client.exception; public class NetWorkDisableException extends Exception { diff --git a/cim_for_mina/cim-core/src/com/farsunset/cim/client/android/WriteToClosedSessionException.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/exception/WriteToClosedSessionException.java similarity index 69% rename from cim_for_mina/cim-core/src/com/farsunset/cim/client/android/WriteToClosedSessionException.java rename to cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/exception/WriteToClosedSessionException.java index 527f890..399723e 100644 --- a/cim_for_mina/cim-core/src/com/farsunset/cim/client/android/WriteToClosedSessionException.java +++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/exception/WriteToClosedSessionException.java @@ -1,4 +1,10 @@ -package com.farsunset.cim.client.android; +/** + * probject:cim-android-sdk + * @version 2.0.0 + * + * @author 3979434@qq.com + */ +package com.farsunset.cim.client.exception; import java.io.Serializable; diff --git a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/filter/ClientMessageCodecFactory.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/filter/ClientMessageCodecFactory.java similarity index 91% rename from cim_for_mina/cim-core/src/com/farsunset/cim/nio/filter/ClientMessageCodecFactory.java rename to cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/filter/ClientMessageCodecFactory.java index 85e6c89..abd07dc 100644 --- a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/filter/ClientMessageCodecFactory.java +++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/filter/ClientMessageCodecFactory.java @@ -1,5 +1,10 @@ - -package com.farsunset.cim.nio.filter; +/** + * probject:cim-android-sdk + * @version 2.0.0 + * + * @author 3979434@qq.com + */ +package com.farsunset.cim.client.filter; import org.apache.mina.core.session.IoSession; import org.apache.mina.filter.codec.ProtocolCodecFactory; @@ -9,7 +14,6 @@ import org.apache.mina.filter.codec.ProtocolEncoder; /** * android客户端端消息 编码解码器, 可以在 * 关于消息加密与加密, 可在 encoder时进行消息加密,在ServerMessageCodecFactory的 decoder时对消息解密 - * @author 3979434@qq.com */ public class ClientMessageCodecFactory implements ProtocolCodecFactory { diff --git a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/filter/ClientMessageDecoder.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/filter/ClientMessageDecoder.java similarity index 79% rename from cim_for_mina/cim-core/src/com/farsunset/cim/nio/filter/ClientMessageDecoder.java rename to cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/filter/ClientMessageDecoder.java index d9854dd..f7aecf6 100644 --- a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/filter/ClientMessageDecoder.java +++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/filter/ClientMessageDecoder.java @@ -1,4 +1,10 @@ -package com.farsunset.cim.nio.filter; +/** + * probject:cim-android-sdk + * @version 2.0.0 + * + * @author 3979434@qq.com + */ +package com.farsunset.cim.client.filter; import java.io.ByteArrayInputStream; @@ -12,16 +18,19 @@ import org.apache.mina.filter.codec.ProtocolDecoderOutput; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; -import com.farsunset.cim.nio.constant.CIMConstant; -import com.farsunset.cim.nio.mutual.Message; -import com.farsunset.cim.nio.mutual.ReplyBody; + +import android.util.Log; + +import com.farsunset.cim.client.constant.CIMConstant; +import com.farsunset.cim.client.model.Message; +import com.farsunset.cim.client.model.ReplyBody; /** * 客户端消息解码 - * @author 3979434@qq.com - * */ public class ClientMessageDecoder extends CumulativeProtocolDecoder { + final static String TAG = ClientMessageDecoder.class.getSimpleName(); + private IoBuffer buff = IoBuffer.allocate(320).setAutoExpand(true); @Override @@ -48,12 +57,21 @@ public class ClientMessageDecoder extends CumulativeProtocolDecoder { buff.flip(); byte[] bytes = new byte[buff.limit()]; buff.get(bytes); - String message = new String(bytes, "UTF-8"); + String message = new String(bytes, CIMConstant.UTF8); buff.clear(); - System.out.println("ClientMessageDecoder:" + message); - Object msg = mappingMessageObject(message); - out.write(msg); + //打印出收到的消息 + Log.i(TAG,message); + + try + { + Object msg = mappingMessageObject(message); + out.write(msg); + }catch(Exception e) + { + e.printStackTrace(); + } + } return complete; @@ -61,10 +79,15 @@ public class ClientMessageDecoder extends CumulativeProtocolDecoder { private Object mappingMessageObject(String message) throws Exception { + if(CIMConstant.CMD_HEARTBEAT_REQUEST.equals(message)) + { + return message; + } + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); - Document doc = (Document) builder.parse(new ByteArrayInputStream(message.toString().getBytes("UTF-8"))); + Document doc = (Document) builder.parse(new ByteArrayInputStream(message.getBytes(CIMConstant.UTF8))); String name = doc.getDocumentElement().getTagName(); if (name.equals("reply")) { diff --git a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/filter/ClientMessageEncoder.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/filter/ClientMessageEncoder.java similarity index 60% rename from cim_for_mina/cim-core/src/com/farsunset/cim/nio/filter/ClientMessageEncoder.java rename to cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/filter/ClientMessageEncoder.java index 8c280ee..e8eb8f5 100644 --- a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/filter/ClientMessageEncoder.java +++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/filter/ClientMessageEncoder.java @@ -1,4 +1,10 @@ -package com.farsunset.cim.nio.filter; +/** + * probject:cim-android-sdk + * @version 2.0.0 + * + * @author 3979434@qq.com + */ +package com.farsunset.cim.client.filter; @@ -7,24 +13,25 @@ import org.apache.mina.core.session.IoSession; import org.apache.mina.filter.codec.ProtocolEncoderAdapter; import org.apache.mina.filter.codec.ProtocolEncoderOutput; -import com.farsunset.cim.nio.constant.CIMConstant; +import android.util.Log; + +import com.farsunset.cim.client.constant.CIMConstant; /** * 客户端消息发送前进行编码,可在此加密消息 - * @author 3979434@qq.com - * */ public class ClientMessageEncoder extends ProtocolEncoderAdapter { - + final static String TAG = ClientMessageEncoder.class.getSimpleName(); @Override public void encode(IoSession iosession, Object message, ProtocolEncoderOutput out) throws Exception { IoBuffer buff = IoBuffer.allocate(320).setAutoExpand(true); - //buff.putString( message.toString(), charset.newEncoder()); - buff.put(message.toString().getBytes("UTF-8")); + buff.put(message.toString().getBytes(CIMConstant.UTF8)); buff.put(CIMConstant.MESSAGE_SEPARATE); buff.flip(); out.write(buff); + //打印出收到的消息 + Log.i(TAG,message.toString()); } diff --git a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/mutual/Message.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/model/Message.java similarity index 96% rename from cim_for_mina/cim-core/src/com/farsunset/cim/nio/mutual/Message.java rename to cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/model/Message.java index 49e64cb..0ea72e5 100644 --- a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/mutual/Message.java +++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/model/Message.java @@ -1,17 +1,17 @@ -package com.farsunset.cim.nio.mutual; +/** + * probject:cim-android-sdk + * @version 2.0.0 + * + * @author 3979434@qq.com + */ +package com.farsunset.cim.client.model; import java.io.Serializable; /** * 消息对象 - * @author @author 3979434@qq.com - * */ public class Message implements Serializable { - /** - * @author 3979434@qq.com - * 消息对象 - */ private static final long serialVersionUID = 1L; diff --git a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/mutual/ReplyBody.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/model/ReplyBody.java similarity index 94% rename from cim_for_mina/cim-core/src/com/farsunset/cim/nio/mutual/ReplyBody.java rename to cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/model/ReplyBody.java index dcf9c0e..0bc938f 100644 --- a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/mutual/ReplyBody.java +++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/model/ReplyBody.java @@ -1,18 +1,19 @@ -package com.farsunset.cim.nio.mutual; +/** + * probject:cim-android-sdk + * @version 2.0.0 + * + * @author 3979434@qq.com + */ +package com.farsunset.cim.client.model; import java.io.Serializable; import java.util.HashMap; /** * 请求应答对象 - * @author 3979434@qq.com * */ public class ReplyBody implements Serializable { - - /** - * @author 3979434@qq.com - * 服务端返回消息对象 - */ + private static final long serialVersionUID = 1L; /** diff --git a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/mutual/SentBody.java b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/model/SentBody.java similarity index 91% rename from cim_for_mina/cim-core/src/com/farsunset/cim/nio/mutual/SentBody.java rename to cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/model/SentBody.java index 405e196..38c444f 100644 --- a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/mutual/SentBody.java +++ b/cim_for_mina/cim-android-sdk/src/com/farsunset/cim/client/model/SentBody.java @@ -1,17 +1,19 @@ -package com.farsunset.cim.nio.mutual; +/** + * probject:cim-android-sdk + * @version 2.0.0 + * + * @author 3979434@qq.com + */ +package com.farsunset.cim.client.model; import java.io.Serializable; import java.util.HashMap; /** * java |android 客户端请求结构 - * @author 3979434@qq.com * */ public class SentBody implements Serializable { - /** - * @author 3979434@qq.com 客户端发送消息对象 - */ private static final long serialVersionUID = 1L; private String key; diff --git a/cim_for_mina/cim-core/.classpath b/cim_for_mina/cim-core/.classpath deleted file mode 100644 index 08ed94c..0000000 --- a/cim_for_mina/cim-core/.classpath +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/cim_for_mina/cim-core/src/com/farsunset/cim/client/android/CIMListenerManager.java b/cim_for_mina/cim-core/src/com/farsunset/cim/client/android/CIMListenerManager.java deleted file mode 100644 index 089ff74..0000000 --- a/cim_for_mina/cim-core/src/com/farsunset/cim/client/android/CIMListenerManager.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.farsunset.cim.client.android; -import java.util.ArrayList; -import java.util.Collections; - -import android.content.Context; - - -/** - * CIM 消息监听器管理 - * - * @author 3979434@qq.com - */ -public class CIMListenerManager { - - private static ArrayList cimListeners = new ArrayList(); - - - - public static void registerMessageListener(OnCIMMessageListener listener,Context mcontext) { - - if (!cimListeners.contains(listener)) { - cimListeners.add(listener); - // 按照接收顺序倒序 - Collections.sort(cimListeners, new CIMMessageReceiveComparator(mcontext)); - } - } - - - public static void removeMessageListener(OnCIMMessageListener listener) { - for (int i = 0; i < cimListeners.size(); i++) { - if (listener.getClass() == cimListeners.get(i).getClass()) { - cimListeners.remove(i); - } - } - } - - public static ArrayList getCIMListeners() { - return cimListeners; - } -} \ No newline at end of file diff --git a/cim_for_mina/cim-core/src/com/farsunset/cim/client/android/CIMMessageReceiveComparator.java b/cim_for_mina/cim-core/src/com/farsunset/cim/client/android/CIMMessageReceiveComparator.java deleted file mode 100644 index 088ffae..0000000 --- a/cim_for_mina/cim-core/src/com/farsunset/cim/client/android/CIMMessageReceiveComparator.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.farsunset.cim.client.android; - -import java.util.Comparator; - -import android.app.Activity; -import android.content.Context; -import android.content.pm.ActivityInfo; -import android.content.pm.PackageManager; - -import com.farsunset.cim.nio.constant.CIMConstant; - - -/** - * 消息接收activity的接收顺序排序,CIM_RECEIVE_ORDER倒序 - * @author 3979434 - * - */ -public class CIMMessageReceiveComparator implements Comparator{ - - Context mcontext; - public CIMMessageReceiveComparator(Context ctx) - { - mcontext = ctx; - } - - @Override - public int compare(OnCIMMessageListener arg1, OnCIMMessageListener arg2) { - - Integer order1 = CIMConstant.CIM_DEFAULT_MESSAGE_ORDER; - Integer order2 = CIMConstant.CIM_DEFAULT_MESSAGE_ORDER; - ActivityInfo info; - if (arg1 instanceof Activity ) { - - try { - info = mcontext.getPackageManager() .getActivityInfo(((Activity)(arg1)).getComponentName(), PackageManager.GET_META_DATA); - if(info.metaData!=null) - { - order1 = info.metaData.getInt("CIM_RECEIVE_ORDER"); - } - - } catch (Exception e) {} - } - - if (arg1 instanceof Activity ) { - try { - info = mcontext.getPackageManager() .getActivityInfo(((Activity)(arg2)).getComponentName(), PackageManager.GET_META_DATA); - if(info.metaData!=null) - { - order2 = info.metaData.getInt("CIM_RECEIVE_ORDER"); - } - - } catch (Exception e) {} - } - - return order2.compareTo(order1); - } - - -} diff --git a/cim_for_mina/cim-core/src/com/farsunset/cim/client/android/KeepAliveReceiver.java b/cim_for_mina/cim-core/src/com/farsunset/cim/client/android/KeepAliveReceiver.java deleted file mode 100644 index d75efc1..0000000 --- a/cim_for_mina/cim-core/src/com/farsunset/cim/client/android/KeepAliveReceiver.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.farsunset.cim.client.android; - - -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.util.Log; -/** - * @author 3979434 - * - */ -public class KeepAliveReceiver extends BroadcastReceiver { - - - @Override - public void onReceive(Context context, Intent it) { - Log.d(KeepAliveReceiver.class.getSimpleName(), "onReceive()"); - - Intent intent = new Intent(context, CIMPushService.class); - intent.putExtra(CIMPushManager.SERVICE_ACTION, CIMPushManager.ACTION_CONNECTION_KEEPALIVE); - context.startService(intent); - } - -} diff --git a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/handler/CIMRequestHandler.java b/cim_for_mina/cim-core/src/com/farsunset/cim/nio/handler/CIMRequestHandler.java deleted file mode 100644 index 07b0de7..0000000 --- a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/handler/CIMRequestHandler.java +++ /dev/null @@ -1,15 +0,0 @@ - -package com.farsunset.cim.nio.handler; - -/** - * 请求处理接口,所有的请求实现必须实现此接口 - * @author 3979434@qq.com - */ -import com.farsunset.cim.nio.mutual.ReplyBody; -import com.farsunset.cim.nio.mutual.SentBody; -import com.farsunset.cim.nio.session.CIMSession; - -public interface CIMRequestHandler { - - public abstract ReplyBody process(CIMSession session,SentBody message); -} \ No newline at end of file diff --git a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/handler/HeartbeatHandler.java b/cim_for_mina/cim-core/src/com/farsunset/cim/nio/handler/HeartbeatHandler.java deleted file mode 100644 index 5a6f47b..0000000 --- a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/handler/HeartbeatHandler.java +++ /dev/null @@ -1,32 +0,0 @@ - -package com.farsunset.cim.nio.handler; - -import org.apache.log4j.Logger; - -import com.farsunset.cim.nio.constant.CIMConstant; -import com.farsunset.cim.nio.mutual.ReplyBody; -import com.farsunset.cim.nio.mutual.SentBody; -import com.farsunset.cim.nio.session.CIMSession; - -/** - *客户端心跳实现 - * - * @author - */ -public class HeartbeatHandler implements CIMRequestHandler { - - protected final Logger logger = Logger.getLogger(HeartbeatHandler.class); - - public ReplyBody process(CIMSession session, SentBody message) { - - logger.warn("heartbeat... from "+session.getRemoteAddress().toString()); - ReplyBody reply = new ReplyBody(); - reply.setKey(CIMConstant.RequestKey.CLIENT_HEARTBEAT); - reply.setCode(CIMConstant.ReturnCode.CODE_200); - session.setHeartbeat(System.currentTimeMillis()); - return reply; - } - - - -} \ No newline at end of file diff --git a/cim_for_mina/cim-server-sdk/.classpath b/cim_for_mina/cim-server-sdk/.classpath new file mode 100644 index 0000000..85dc364 --- /dev/null +++ b/cim_for_mina/cim-server-sdk/.classpath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/cim_for_mina/cim-core/.project b/cim_for_mina/cim-server-sdk/.project similarity index 92% rename from cim_for_mina/cim-core/.project rename to cim_for_mina/cim-server-sdk/.project index a449ea4..7ab8139 100644 --- a/cim_for_mina/cim-core/.project +++ b/cim_for_mina/cim-server-sdk/.project @@ -1,6 +1,6 @@ - cim-core + cim-server-sdk diff --git a/cim_for_mina/cim-server-sdk/.settings/org.eclipse.core.resources.prefs b/cim_for_mina/cim-server-sdk/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99b2bf9 --- /dev/null +++ b/cim_for_mina/cim-server-sdk/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,3 @@ +#Wed Oct 15 09:31:41 CST 2014 +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/constant/CIMConstant.java b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/constant/CIMConstant.java similarity index 71% rename from cim_for_mina/cim-core/src/com/farsunset/cim/nio/constant/CIMConstant.java rename to cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/constant/CIMConstant.java index 02418b1..335214e 100644 --- a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/constant/CIMConstant.java +++ b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/constant/CIMConstant.java @@ -1,10 +1,13 @@ - -package com.farsunset.cim.nio.constant; +/** + * probject:cim-core + * @version 1.5.0 + * + * @author 3979434@qq.com + */ +package com.farsunset.cim.server.constant; /** * 常量 - * - * @author 3979434@qq.com */ public interface CIMConstant { @@ -25,50 +28,44 @@ public interface CIMConstant { } + public static String UTF8="UTF-8"; + public static byte MESSAGE_SEPARATE='\b'; public static int CIM_DEFAULT_MESSAGE_ORDER=1; - public static final String SESSION_KEY ="account"; + public static final String SESSION_KEY ="account"; public static final String HEARTBEAT_KEY ="heartbeat"; - /** * FLEX 客户端socket请求发的安全策略请求,需要特殊处理,返回安全验证报文 */ public static final String FLEX_POLICY_REQUEST =""; public static final String FLEX_POLICY_RESPONSE ="\0"; - - - /** + * 服务端心跳请求命令 + */ + public static final String CMD_HEARTBEAT_REQUEST="cmd_server_hb_request"; + /** + * 客户端心跳响应命令 + */ + public static final String CMD_HEARTBEAT_RESPONSE ="cmd_client_hb_response"; + + + /** * 对应ichat 中 spring-cim.xml > bean:mainIoHandler >handlers * 为 服务端处理对应的handlers,应该继承与com.farsunset.cim.nio.handle.AbstractHandler - * @author xiajun + * */ - public static class RequestKey{ - - - - public static String CLIENT_BIND ="client_bind"; - - public static String CLIENT_HEARTBEAT="client_heartbeat"; - - public static String CLIENT_LOGOUT ="client_logout"; - - public static String CLIENT_DIY ="client_diy"; - - public static String CLIENT_OFFLINE_MESSAGE ="client_get_offline_message"; - - - } + + public static class SessionStatus{ @@ -78,11 +75,11 @@ public interface CIMConstant { } - public static class MessageType{ - //账号在其他设备绑定时,会收到该类型消息 + //用户会 踢出下线消息类型 public static String TYPE_999 ="999"; } + } \ No newline at end of file diff --git a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/filter/ServerMessageCodecFactory.java b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/filter/ServerMessageCodecFactory.java similarity index 91% rename from cim_for_mina/cim-core/src/com/farsunset/cim/nio/filter/ServerMessageCodecFactory.java rename to cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/filter/ServerMessageCodecFactory.java index 99648ed..977b113 100644 --- a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/filter/ServerMessageCodecFactory.java +++ b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/filter/ServerMessageCodecFactory.java @@ -1,5 +1,10 @@ - -package com.farsunset.cim.nio.filter; +/** + * probject:cim-core + * @version 1.5.0 + * + * @author 3979434@qq.com + */ +package com.farsunset.cim.server.filter; import org.apache.mina.core.session.IoSession; import org.apache.mina.filter.codec.ProtocolCodecFactory; @@ -9,7 +14,6 @@ import org.apache.mina.filter.codec.ProtocolEncoder; /** * 服务端消息 编码解码器, 可以在 * 关于消息加密与加密, 可在 encoder时进行消息加密,在ClientMessageCodecFactory的 decoder时对消息解密 - * @author 3979434@qq.com */ public class ServerMessageCodecFactory implements ProtocolCodecFactory { diff --git a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/filter/ServerMessageDecoder.java b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/filter/ServerMessageDecoder.java similarity index 56% rename from cim_for_mina/cim-core/src/com/farsunset/cim/nio/filter/ServerMessageDecoder.java rename to cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/filter/ServerMessageDecoder.java index 77246e7..4a46d52 100644 --- a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/filter/ServerMessageDecoder.java +++ b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/filter/ServerMessageDecoder.java @@ -1,7 +1,12 @@ -package com.farsunset.cim.nio.filter; +/** + * probject:cim-core + * @version 1.5.0 + * + * @author 3979434@qq.com + */ +package com.farsunset.cim.server.filter; import java.io.ByteArrayInputStream; -import java.nio.charset.Charset; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; @@ -15,17 +20,14 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; -import com.farsunset.cim.nio.constant.CIMConstant; -import com.farsunset.cim.nio.mutual.SentBody; +import com.farsunset.cim.server.constant.CIMConstant; +import com.farsunset.cim.server.model.SentBody; /** * 服务端接收消息解码,可在此解密消息 - * @author 3979434@qq.com - * */ public class ServerMessageDecoder extends CumulativeProtocolDecoder { protected final Logger logger = Logger.getLogger(ServerMessageDecoder.class); - private final Charset charset = Charset.forName("UTF-8"); private IoBuffer buff = IoBuffer.allocate(320).setAutoExpand(true); @Override public boolean doDecode(IoSession iosession, IoBuffer iobuffer, ProtocolDecoderOutput out) throws Exception { @@ -45,7 +47,7 @@ public class ServerMessageDecoder extends CumulativeProtocolDecoder { complete = true; break; } - else { + else { buff.put(b); } } @@ -54,35 +56,42 @@ public class ServerMessageDecoder extends CumulativeProtocolDecoder { byte[] bytes = new byte[buff.limit()]; buff.get(bytes); - String message = new String(bytes, "UTF-8"); - logger.warn("ServerMessageDecoder:" + message); + String message = new String(bytes, CIMConstant.UTF8); + + logger.debug(message); + buff.clear(); try{ - SentBody body = new SentBody(); - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - DocumentBuilder builder = factory.newDocumentBuilder(); - Document doc = builder.parse(new ByteArrayInputStream(bytes)); - body.setKey(doc.getElementsByTagName("key").item(0).getTextContent()); - - - NodeList dataNodeList = doc.getElementsByTagName("data"); - if(dataNodeList!=null && dataNodeList.getLength()>0) - { - NodeList items = dataNodeList.item(0).getChildNodes(); - for (int i = 0; i < items.getLength(); i++) { - Node node = items.item(i); - body.getData().put(node.getNodeName(), node.getTextContent()); - } - } - + Object body = getSentBody(message); out.write(body); }catch(Exception e){ - logger.warn(e.getMessage()); - out.write(message); + out.write(message);//解析xml失败 是返回原始的xml数据到上层处理,比如心跳响应、flex sokcet的 安全验证请求xml } } return complete; } + + public Object getSentBody(String message) throws Exception + { + + SentBody body = new SentBody(); + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = factory.newDocumentBuilder(); + Document doc = builder.parse(new ByteArrayInputStream(message.getBytes(CIMConstant.UTF8))); + body.setKey(doc.getElementsByTagName("key").item(0).getTextContent()); + + NodeList datas = doc.getElementsByTagName("data"); + if(datas!=null&&datas.getLength()>0) + { + NodeList items = datas.item(0).getChildNodes(); + for (int i = 0; i < items.getLength(); i++) { + Node node = items.item(i); + body.getData().put(node.getNodeName(), node.getTextContent()); + } + } + + return body; + } } diff --git a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/filter/ServerMessageEncoder.java b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/filter/ServerMessageEncoder.java similarity index 62% rename from cim_for_mina/cim-core/src/com/farsunset/cim/nio/filter/ServerMessageEncoder.java rename to cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/filter/ServerMessageEncoder.java index f518040..4525921 100644 --- a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/filter/ServerMessageEncoder.java +++ b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/filter/ServerMessageEncoder.java @@ -1,31 +1,35 @@ -package com.farsunset.cim.nio.filter; - - +/** + * probject:cim-core + * @version 1.5.0 + * + * @author 3979434@qq.com + */ +package com.farsunset.cim.server.filter; +import org.apache.log4j.Logger; import org.apache.mina.core.buffer.IoBuffer; import org.apache.mina.core.session.IoSession; import org.apache.mina.filter.codec.ProtocolEncoderAdapter; import org.apache.mina.filter.codec.ProtocolEncoderOutput; -import com.farsunset.cim.nio.constant.CIMConstant; +import com.farsunset.cim.server.constant.CIMConstant; /** * 服务端发送消息前编码,可在此加密消息 - * @author 3979434@qq.com - * */ public class ServerMessageEncoder extends ProtocolEncoderAdapter { - + protected final Logger logger = Logger.getLogger(ServerMessageEncoder.class); @Override public void encode(IoSession iosession, Object message, ProtocolEncoderOutput out) throws Exception { - IoBuffer buff = IoBuffer.allocate(320).setAutoExpand(true); - buff.put(message.toString().getBytes("UTF-8")); + buff.put(message.toString().getBytes(CIMConstant.UTF8)); buff.put(CIMConstant.MESSAGE_SEPARATE); buff.flip(); out.write(buff); + + logger.debug(message); } diff --git a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/handler/MainIOHandler.java b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/handler/CIMIoHandler.java similarity index 60% rename from cim_for_mina/cim-core/src/com/farsunset/cim/nio/handler/MainIOHandler.java rename to cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/handler/CIMIoHandler.java index e91c1cc..6cc79e6 100644 --- a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/handler/MainIOHandler.java +++ b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/handler/CIMIoHandler.java @@ -1,5 +1,10 @@ - -package com.farsunset.cim.nio.handler; +/** + * probject:cim-core + * @version 1.5.0 + * + * @author 3979434@qq.com + */ +package com.farsunset.cim.server.handler; import java.util.HashMap; @@ -8,37 +13,35 @@ import org.apache.mina.core.service.IoHandlerAdapter; import org.apache.mina.core.session.IdleStatus; import org.apache.mina.core.session.IoSession; -import com.farsunset.cim.nio.constant.CIMConstant; -import com.farsunset.cim.nio.mutual.ReplyBody; -import com.farsunset.cim.nio.mutual.SentBody; -import com.farsunset.cim.nio.session.CIMSession; +import com.farsunset.cim.server.constant.CIMConstant; +import com.farsunset.cim.server.model.ReplyBody; +import com.farsunset.cim.server.model.SentBody; +import com.farsunset.cim.server.session.CIMSession; /** * * 客户端请求的入口,所有请求都首先经过它分发处理 - * @author farsunset (3979434@qq.com) */ -public class MainIOHandler extends IoHandlerAdapter { - - protected final Logger logger = Logger.getLogger(MainIOHandler.class); +public class CIMIoHandler extends IoHandlerAdapter { + protected final Logger logger = Logger.getLogger(CIMIoHandler.class); + private final static String CIMSESSION_CLOSED_HANDLER_KEY = "client_cimsession_closed"; private HashMap handlers = new HashMap(); public void sessionCreated(IoSession session) throws Exception { - logger.warn("sessionCreated()... from "+session.getRemoteAddress().toString()); + logger.debug("sessionCreated()... from "+session.getRemoteAddress()); } public void sessionOpened(IoSession session) throws Exception { - + } public void messageReceived(IoSession ios, Object message) throws Exception { - logger.debug("message: " + message.toString()); /** * flex 客户端安全策略请求,需要返回特定报文 @@ -49,6 +52,11 @@ public class MainIOHandler extends IoHandlerAdapter { return ; } + + if(!(message instanceof SentBody)) + { + return ; + } CIMSession cimSession =new CIMSession(ios); ReplyBody reply = new ReplyBody(); SentBody body = (SentBody) message; @@ -66,12 +74,8 @@ public class MainIOHandler extends IoHandlerAdapter { { reply.setKey(key); cimSession.write(reply); - logger.debug("-----------------------process done. reply: " + reply.toString()); + logger.info("-----------------------process done. reply: " + reply.toString()); } - - - //设置心跳时间 - cimSession.setAttribute(CIMConstant.HEARTBEAT_KEY, System.currentTimeMillis()); } /** @@ -80,8 +84,8 @@ public class MainIOHandler extends IoHandlerAdapter { CIMSession cimSession =new CIMSession(ios); try{ - logger.warn("sessionClosed()... from "+cimSession.getRemoteAddress()); - CIMRequestHandler handler = handlers.get("sessionClosedHander"); + logger.debug("sessionClosed()... from "+cimSession.getRemoteAddress()); + CIMRequestHandler handler = handlers.get(CIMSESSION_CLOSED_HANDLER_KEY); if(handler!=null && cimSession.containsAttribute(CIMConstant.SESSION_KEY)) { handler.process(cimSession, null); @@ -97,19 +101,7 @@ public class MainIOHandler extends IoHandlerAdapter { */ public void sessionIdle(IoSession session, IdleStatus status) throws Exception { - logger.warn("sessionIdle()... from "+session.getRemoteAddress().toString()); - if(!session.containsAttribute(CIMConstant.SESSION_KEY)) - { - session.close(true); - }else - { - //如果5分钟之内客户端没有发送心态,则可能客户端断网,关闭连接 - Object heartbeat = session.getAttribute(CIMConstant.HEARTBEAT_KEY); - if(heartbeat!=null && System.currentTimeMillis()-Long.valueOf(heartbeat.toString()) >= 300000) - { - session.close(false); - } - } + logger.debug("sessionIdle()... from "+session.getRemoteAddress()); } /** @@ -124,9 +116,6 @@ public class MainIOHandler extends IoHandlerAdapter { /** */ public void messageSent(IoSession session, Object message) throws Exception { - - //设置心跳时间 - session.setAttribute(CIMConstant.HEARTBEAT_KEY, System.currentTimeMillis()); } diff --git a/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/handler/CIMNioSocketAcceptor.java b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/handler/CIMNioSocketAcceptor.java new file mode 100644 index 0000000..e276700 --- /dev/null +++ b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/handler/CIMNioSocketAcceptor.java @@ -0,0 +1,62 @@ +package com.farsunset.cim.server.handler; + +import java.io.IOException; +import java.net.InetSocketAddress; +import java.util.Map; + +import org.apache.mina.core.service.IoAcceptor; +import org.apache.mina.core.service.IoHandler; +import org.apache.mina.core.session.IdleStatus; +import org.apache.mina.core.session.IoSession; +import org.apache.mina.filter.codec.ProtocolCodecFilter; +import org.apache.mina.filter.executor.ExecutorFilter; +import org.apache.mina.filter.keepalive.KeepAliveFilter; +import org.apache.mina.filter.keepalive.KeepAliveMessageFactory; +import org.apache.mina.filter.keepalive.KeepAliveRequestTimeoutHandler; +import org.apache.mina.filter.logging.LoggingFilter; +import org.apache.mina.transport.socket.DefaultSocketSessionConfig; +import org.apache.mina.transport.socket.nio.NioSocketAcceptor; + +public class CIMNioSocketAcceptor { + IoAcceptor acceptor; + IoHandler ioHandler; + int port; + + private final int IDLE_TIME = 60;//秒 + private final int TIME_OUT = 30;//秒 + public void bind() throws IOException + { + acceptor = new NioSocketAcceptor(); + acceptor.getSessionConfig().setReadBufferSize(1024); + ((DefaultSocketSessionConfig)acceptor.getSessionConfig()).setTcpNoDelay(true); + acceptor.getFilterChain().addLast("executor",new ExecutorFilter()); + acceptor.getFilterChain().addLast("logger",new LoggingFilter()); + acceptor.getFilterChain().addLast("codec",new ProtocolCodecFilter(new com.farsunset.cim.server.filter.ServerMessageCodecFactory())); + KeepAliveMessageFactory heartBeatFactory = new ServerKeepAliveFactoryImpl(); + KeepAliveFilter keepAliveFilter = new KeepAliveFilter(heartBeatFactory,IdleStatus.BOTH_IDLE,KeepAliveRequestTimeoutHandler.CLOSE,IDLE_TIME,TIME_OUT); + keepAliveFilter.setForwardEvent(true); + acceptor.getFilterChain().addLast("heartbeat",keepAliveFilter); + acceptor.setHandler(ioHandler); + + acceptor.bind(new InetSocketAddress(port)); + } + + public void unbind() + { + acceptor.unbind(); + } + public void setAcceptor(IoAcceptor acceptor) { + this.acceptor = acceptor; + } + public void setIoHandler(IoHandler ioHandler) { + this.ioHandler = ioHandler; + } + public void setPort(int port) { + this.port = port; + } + + public Map getManagedSessions() + { + return acceptor.getManagedSessions(); + } +} diff --git a/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/handler/CIMRequestHandler.java b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/handler/CIMRequestHandler.java new file mode 100644 index 0000000..feb44f2 --- /dev/null +++ b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/handler/CIMRequestHandler.java @@ -0,0 +1,20 @@ +/** + * probject:cim-core + * @version 1.5.0 + * + * @author 3979434@qq.com + */ +package com.farsunset.cim.server.handler; + +/** + * 请求处理接口,所有的请求实现必须实现此接口 + * @author 3979434@qq.com + */ +import com.farsunset.cim.server.model.ReplyBody; +import com.farsunset.cim.server.model.SentBody; +import com.farsunset.cim.server.session.CIMSession; + +public interface CIMRequestHandler { + + public abstract ReplyBody process(CIMSession session,SentBody message); +} \ No newline at end of file diff --git a/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/handler/ServerKeepAliveFactoryImpl.java b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/handler/ServerKeepAliveFactoryImpl.java new file mode 100644 index 0000000..85cebab --- /dev/null +++ b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/handler/ServerKeepAliveFactoryImpl.java @@ -0,0 +1,29 @@ +package com.farsunset.cim.server.handler; + +import org.apache.mina.core.session.IoSession; +import org.apache.mina.filter.keepalive.KeepAliveMessageFactory; + +import com.farsunset.cim.server.constant.CIMConstant; + +public class ServerKeepAliveFactoryImpl implements KeepAliveMessageFactory { + @Override + public Object getRequest(IoSession arg0) { + return CIMConstant.CMD_HEARTBEAT_REQUEST; + } + + @Override + public Object getResponse(IoSession arg0, Object arg1) { + return null; + } + + @Override + public boolean isRequest(IoSession arg0, Object arg1) { + return false; + } + + @Override + public boolean isResponse(IoSession arg0, Object arg1) { + return CIMConstant.CMD_HEARTBEAT_RESPONSE.equals(arg1); + } + +} diff --git a/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/model/Message.java b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/model/Message.java new file mode 100644 index 0000000..6151306 --- /dev/null +++ b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/model/Message.java @@ -0,0 +1,174 @@ +/** + * probject:cim-core + * @version 1.5.0 + * + * @author 3979434@qq.com + */ +package com.farsunset.cim.server.model; + +import java.io.Serializable; +/** + * 消息对象 + */ +public class Message implements Serializable { + + private static final long serialVersionUID = 1L; + + + /** + * 消息类型,用户自定义消息类别 + */ + private String mid; + + + /** + * 消息类型,用户自定义消息类别 + */ + private String type; + /** + * 消息标题 + */ + private String title; + /** + * 消息类容,于type 组合为任何类型消息,content 根据 format 可表示为 text,json ,xml数据格式 + */ + private String content; + + /** + * 消息发送者账号 + */ + private String sender; + /** + * 消息发送者接收者 + */ + private String receiver; + + /** + * 文件 url + */ + private String file; + /** + * 文件类型 + */ + private String fileType; + + /** + * content 内容格式 + */ + private String format = "txt"; + + + private long timestamp; + + + public Message() + { + timestamp = System.currentTimeMillis(); + } + public long getTimestamp() { + return timestamp; + } + + public void setTimestamp(long timestamp) { + this.timestamp = timestamp; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getSender() { + return sender; + } + + public void setSender(String sender) { + this.sender = sender; + } + + public String getReceiver() { + return receiver; + } + + public void setReceiver(String receiver) { + this.receiver = receiver; + } + + public String getFile() { + return file; + } + + public void setFile(String file) { + this.file = file; + } + + public String getFileType() { + return fileType; + } + + public void setFileType(String fileType) { + this.fileType = fileType; + } + + public String getFormat() { + return format; + } + + public void setFormat(String format) { + this.format = format; + } + + public String toString() + { + + StringBuffer buffer = new StringBuffer(); + buffer.append(""); + buffer.append(""); + buffer.append("").append(mid).append(""); + buffer.append("").append(type).append(""); + buffer.append("").append(this.getTitle()==null?"":this.getTitle()).append(""); + buffer.append(""); + buffer.append("").append(this.getFile()==null?"":this.getFile()).append(""); + buffer.append("").append(this.getFileType()==null?"":this.getFileType()).append(""); + buffer.append("").append(this.getSender()==null?"":this.getSender()).append(""); + buffer.append("").append(this.getReceiver()==null?"":this.getReceiver()).append(""); + buffer.append("").append(this.getFormat()==null?"":this.getFormat()).append(""); + buffer.append("").append(timestamp).append(""); + buffer.append(""); + return buffer.toString(); + } + public String toXmlString() + { + + return toString(); + } + + public String getMid() { + return mid; + } + + public void setMid(String mid) { + this.mid = mid; + } + + +} diff --git a/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/model/ReplyBody.java b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/model/ReplyBody.java new file mode 100644 index 0000000..49bd647 --- /dev/null +++ b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/model/ReplyBody.java @@ -0,0 +1,124 @@ +/** + * probject:cim-core + * @version 1.5.0 + * + * @author 3979434@qq.com + */ +package com.farsunset.cim.server.model; + +import java.io.Serializable; +import java.util.HashMap; +/** + * 请求应答对象 + * + */ +public class ReplyBody implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 请求key + */ + private String key; + + + /** + * 返回码 + */ + private String code; + + /** + * 返回说明 + */ + private String message; + + /** + * 返回数据集合 + */ + private HashMap data; + + + private long timestamp; + + public ReplyBody() + { + data = new HashMap(); + timestamp = System.currentTimeMillis(); + } + public long getTimestamp() { + return timestamp; + } + + public void setTimestamp(long timestamp) { + this.timestamp = timestamp; + } + + + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public void put(String k, String v) { + data.put(k, v); + } + + public String get(String k) { + return data.get(k); + } + + public void remove(String k) { + data.remove(k); + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public HashMap getData() { + return data; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + + public String toString() + { + + StringBuffer buffer = new StringBuffer(); + buffer.append(""); + buffer.append(""); + buffer.append("").append(this.getKey()).append(""); + buffer.append("").append(timestamp).append(""); + buffer.append("").append(code).append(""); + buffer.append(""); + for(String key:this.getData().keySet()) + { + buffer.append("<"+key+">").append(this.get(key)).append(""); + } + buffer.append(""); + buffer.append(""); + return buffer.toString(); + } + + + public String toXmlString() + { + + return toString(); + } +} diff --git a/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/model/SentBody.java b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/model/SentBody.java new file mode 100644 index 0000000..aa9bdb7 --- /dev/null +++ b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/model/SentBody.java @@ -0,0 +1,84 @@ +/** + * probject:cim-core + * @version 1.5.0 + * + * @author 3979434@qq.com + */ +package com.farsunset.cim.server.model; + +import java.io.Serializable; +import java.util.HashMap; +/** + * java |android 客户端请求结构 + * + */ +public class SentBody implements Serializable { + + private static final long serialVersionUID = 1L; + + private String key; + + private HashMap data; + + private long timestamp; + + public SentBody() { + + data = new HashMap(); + timestamp = System.currentTimeMillis(); + } + + public String getKey() { + return key; + } + + public String get(String k) { + return data.get(k); + } + + public long getTimestamp() { + return timestamp; + } + + public void setTimestamp(long timestamp) { + this.timestamp = timestamp; + } + + public void setKey(String key) { + this.key = key; + } + + public void put(String k, String v) { + data.put(k, v); + } + + public void remove(String k) { + data.remove(k); + } + + public HashMap getData() { + return data; + } + + @Override + public String toString() { + StringBuffer buffer = new StringBuffer(); + buffer.append(""); + buffer.append(""); + buffer.append("").append(key).append(""); + buffer.append("").append(timestamp).append(""); + buffer.append(""); + for (String key : data.keySet()) { + buffer.append("<" + key + ">").append(data.get(key)).append( + ""); + } + buffer.append(""); + buffer.append(""); + return buffer.toString(); + } + + public String toXmlString() { + + return toString(); + } +} diff --git a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/session/CIMSession.java b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/session/CIMSession.java similarity index 53% rename from cim_for_mina/cim-core/src/com/farsunset/cim/nio/session/CIMSession.java rename to cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/session/CIMSession.java index b709218..5fdbafa 100644 --- a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/session/CIMSession.java +++ b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/session/CIMSession.java @@ -1,243 +1,346 @@ -package com.farsunset.cim.nio.session; - -import java.io.Serializable; -import java.net.InetAddress; -import java.net.SocketAddress; -import java.net.UnknownHostException; -import java.util.concurrent.TimeUnit; - -import org.apache.mina.core.future.WriteFuture; -import org.apache.mina.core.session.IoSession; - -import com.farsunset.cim.nio.constant.CIMConstant; - -/** - * IoSession包装类,集群时 将此对象存入表中 - * - * @author 3979434@qq.com - */ - -public class CIMSession implements Serializable{ - - /** - * - */ - private transient static final long serialVersionUID = 1L; - public transient static String ID = "ID"; - public transient static String HOST = "HOST"; - - private transient IoSession session; - - private String gid;//session全局ID - private Long nid;//session在本台服务器上的ID - private String deviceId;//客户端ID (设备号码+应用包名) - private String host;//session绑定的服务器IP - private String account;//session绑定的账号 - private String channel;//终端设备类型 - private String deviceModel;//终端设备型号 - private Long bindTime;//登录时间 - private Long heartbeat;//心跳时间 - - public CIMSession(IoSession session) { - this.session = session; - this.nid = session.getId(); - } - - public CIMSession() - { - - } - - - - - public String getAccount() { - return account; - } - - public void setAccount(String account) { - this.account = account; - - setAttribute(CIMConstant.SESSION_KEY, account); - } - - - - - - - public String getGid() { - return gid; - } - - public void setGid(String gid) { - - this.gid = gid; - - setAttribute("gid", gid); - } - - public Long getNid() { - return nid; - } - - public void setNid(Long nid) { - this.nid = nid; - } - - public String getDeviceId() { - return deviceId; - } - - - public String getChannel() { - return channel; - } - - public void setChannel(String channel) { - this.channel = channel; - - setAttribute("channel", channel); - } - - public String getDeviceModel() { - return deviceModel; - } - - public void setDeviceModel(String deviceModel) { - this.deviceModel = deviceModel; - - setAttribute("deviceModel", deviceModel); - } - - public void setDeviceId(String deviceId) { - this.deviceId = deviceId; - - setAttribute("deviceId", deviceId); - } - - - - - public String getHost() { - return host; - } - - - - public Long getBindTime() { - return bindTime; - } - - public void setBindTime(Long bindTime) { - this.bindTime = bindTime; - setAttribute("bindTime", bindTime); - } - - public Long getHeartbeat() { - return heartbeat; - } - - public void setHeartbeat(Long heartbeat) { - this.heartbeat = heartbeat; - setAttribute(CIMConstant.HEARTBEAT_KEY, heartbeat); - } - - public void setHost(String host) { - this.host = host; - - setAttribute("host", host); - } - - - public void setIoSession(IoSession session) { - this.session = session; - } - - public IoSession getIoSession() { - return session; - } - - - - public void setAttribute(String key, Object value) { - if(session!=null) - session.setAttribute(key, value); - } - - - public boolean containsAttribute(String key) { - if(session!=null) - return session.containsAttribute(key); - return false; - } - - public Object getAttribute(String key) { - if(session!=null) - return session.getAttribute(key); - return null; - } - - public void removeAttribute(String key) { - if(session!=null) - session.removeAttribute(key); - } - - public SocketAddress getRemoteAddress() { - if(session!=null) - return session.getRemoteAddress(); - return null; - } - - public boolean write(Object msg) { - if(session!=null) - { - WriteFuture wf = session.write(msg); - wf.awaitUninterruptibly(5, TimeUnit.SECONDS); - return wf.isWritten(); - } - return false; - } - - public boolean isConnected() { - if(session!=null) - return session.isConnected(); - return false; - } - - public boolean isLocalhost() - { - - try { - String ip = InetAddress.getLocalHost().getHostAddress(); - return ip.equals(host); - } catch (UnknownHostException e) { - e.printStackTrace(); - } - return false; - - } - - - public void close(boolean immediately) { - if(session!=null) - session.close(immediately); - } - - - public boolean equals(Object o) { - - if (o instanceof CIMSession) { - - CIMSession t = (CIMSession) o; - if(t.deviceId!=null && deviceId!=null && t.nid!=null && nid!=null) - { - return t.deviceId.equals(deviceId) && t.nid.longValue()==nid.longValue() && t.host.equals(host); - } - } - return false; - } - - - +/** + * probject:cim-core + * @version 1.5.0 + * + * @author 3979434@qq.com + */ +package com.farsunset.cim.server.session; + +import java.io.Serializable; +import java.net.InetAddress; +import java.net.SocketAddress; +import java.net.UnknownHostException; + +import org.apache.mina.core.session.IoSession; + +import com.farsunset.cim.server.constant.CIMConstant; + +/** + * IoSession包装类,集群时 将此对象存入表中 + */ + +public class CIMSession implements Serializable{ + + /** + * + */ + private transient static final long serialVersionUID = 1L; + public transient static String ID = "ID"; + public transient static String HOST = "HOST"; + public transient static final int STATUS_ENABLE=0; + public transient static final int STATUS_DISENABLE=1; + public transient static final int APNS_ON=1; + public transient static final int APNS_OFF=0; + + public transient static String CHANNEL_IOS = "ios"; + public transient static String CHANNEL_ANDROID = "android"; + public transient static String CHANNEL_WINDOWS = "windows"; + public transient static String CHANNEL_WP = "wp"; + + private transient IoSession session; + + private String gid;//session全局ID + private Long nid;//session在本台服务器上的ID + private String deviceId;//客户端ID (设备号码+应用包名),ios为devicetoken + private String host;//session绑定的服务器IP + private String account;//session绑定的账号 + private String channel;//终端设备类型 + private String deviceModel;//终端设备型号 + private String clientVersion;//终端应用版本 + private String systemVersion;//终端系统版本 + private Long bindTime;//登录时间 + private Long heartbeat;//心跳时间 + private Double longitude;//经度 + private Double latitude;//维度 + private String location;//位置 + private int apnsAble;//apns推送状态 + private int status;// 状态 + public CIMSession(IoSession session) { + this.session = session; + this.nid = session.getId(); + } + + public CIMSession() + { + + } + + + + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + + setAttribute(CIMConstant.SESSION_KEY, account); + } + + + + + + + public Double getLongitude() { + return longitude; + } + + public void setLongitude(Double longitude) { + setAttribute("longitude", longitude); + this.longitude = longitude; + } + + public Double getLatitude() { + return latitude; + } + + public void setLatitude(Double latitude) { + setAttribute("latitude", latitude); + this.latitude = latitude; + } + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + setAttribute("location", location); + this.location = location; + } + + public String getGid() { + return gid; + } + + public void setGid(String gid) { + + this.gid = gid; + + setAttribute("gid", gid); + } + + public Long getNid() { + return nid; + } + + public void setNid(Long nid) { + this.nid = nid; + } + + public String getDeviceId() { + return deviceId; + } + + + public String getChannel() { + return channel; + } + + public void setChannel(String channel) { + this.channel = channel; + + setAttribute("channel", channel); + } + + public String getDeviceModel() { + return deviceModel; + } + + public void setDeviceModel(String deviceModel) { + this.deviceModel = deviceModel; + + setAttribute("deviceModel", deviceModel); + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + + setAttribute("deviceId", deviceId); + } + + + + + public String getHost() { + return host; + } + + + + public Long getBindTime() { + return bindTime; + } + + public void setBindTime(Long bindTime) { + this.bindTime = bindTime; + setAttribute("bindTime", bindTime); + } + + + public String getClientVersion() { + return clientVersion; + } + + public void setClientVersion(String clientVersion) { + this.clientVersion = clientVersion; + setAttribute("clientVersion", clientVersion); + } + + + + + + public String getSystemVersion() { + return systemVersion; + } + + public void setSystemVersion(String systemVersion) { + this.systemVersion = systemVersion; + setAttribute("systemVersion", systemVersion); + } + + public Long getHeartbeat() { + return heartbeat; + } + + public void setHeartbeat(Long heartbeat) { + this.heartbeat = heartbeat; + setAttribute(CIMConstant.HEARTBEAT_KEY, heartbeat); + } + + public void setHost(String host) { + this.host = host; + + setAttribute("host", host); + } + + + public int getApnsAble() { + return apnsAble; + } + + public void setApnsAble(int apnsAble) { + this.apnsAble = apnsAble; + setAttribute("apnsAble", apnsAble); + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + setAttribute("status", status); + } + + + public void setAttribute(String key, Object value) { + if(session!=null) + session.setAttribute(key, value); + } + + + public boolean containsAttribute(String key) { + if(session!=null) + return session.containsAttribute(key); + return false; + } + + public Object getAttribute(String key) { + if(session!=null) + return session.getAttribute(key); + return null; + } + + public void removeAttribute(String key) { + if(session!=null) + session.removeAttribute(key); + } + + public SocketAddress getRemoteAddress() { + if(session!=null) + return session.getRemoteAddress(); + return null; + } + + public void write(Object msg) { + if(session!=null) + { + session.write(msg).isWritten(); + } + } + + public boolean isConnected() { + if(session!=null) + return session.isConnected(); + return false; + } + + public boolean isLocalhost() + { + + try { + String ip = InetAddress.getLocalHost().getHostAddress(); + return ip.equals(host); + } catch (UnknownHostException e) { + e.printStackTrace(); + } + return false; + + } + + + public void close(boolean immediately) { + if(session!=null) + session.close(immediately); + } + + + public boolean equals(Object o) { + + if (o instanceof CIMSession) { + + CIMSession t = (CIMSession) o; + if(t.deviceId!=null && deviceId!=null && t.nid!=null && nid!=null) + { + return t.deviceId.equals(deviceId) && t.nid.longValue()==nid.longValue() && t.host.equals(host); + } + } + return false; + } + + public void setIoSession(IoSession session) { + this.session = session; + } + + public IoSession getIoSession() { + return session; + } + + + + public String toString() + { + StringBuffer buffer = new StringBuffer(); + buffer.append("{"); + + buffer.append("\"").append("gid").append("\":").append("\"").append(gid).append("\"").append(","); + buffer.append("\"").append("nid").append("\":").append(nid).append(","); + buffer.append("\"").append("deviceId").append("\":").append("\"").append(deviceId).append("\"").append(","); + buffer.append("\"").append("host").append("\":").append("\"").append(host).append("\"").append(","); + buffer.append("\"").append("account").append("\":").append("\"").append(account).append("\"").append(","); + buffer.append("\"").append("channel").append("\":").append("\"").append(channel).append("\"").append(","); + buffer.append("\"").append("deviceModel").append("\":").append("\"").append(deviceModel).append("\"").append(","); + buffer.append("\"").append("status").append("\":").append(status).append(","); + buffer.append("\"").append("apnsAble").append("\":").append(apnsAble).append(","); + buffer.append("\"").append("bindTime").append("\":").append(bindTime).append(","); + buffer.append("\"").append("heartbeat").append("\":").append(heartbeat); + buffer.append("}"); + return buffer.toString(); + + } + + } \ No newline at end of file diff --git a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/session/DefaultSessionManager.java b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/session/DefaultSessionManager.java similarity index 77% rename from cim_for_mina/cim-core/src/com/farsunset/cim/nio/session/DefaultSessionManager.java rename to cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/session/DefaultSessionManager.java index 213d81c..29efffe 100644 --- a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/session/DefaultSessionManager.java +++ b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/session/DefaultSessionManager.java @@ -1,16 +1,20 @@ - -package com.farsunset.cim.nio.session; +/** + * probject:cim-core + * @version 1.5.0 + * + * @author 3979434@qq.com + */ +package com.farsunset.cim.server.session; import java.util.Collection; import java.util.HashMap; import java.util.concurrent.atomic.AtomicInteger; -import com.farsunset.cim.nio.constant.CIMConstant; +import com.farsunset.cim.server.constant.CIMConstant; /** * 自带默认 session管理实现, 各位可以自行实现 AbstractSessionManager接口来实现自己的 session管理 *服务器集群时 须要将CIMSession 信息存入数据库或者nosql 等 第三方存储空间中,便于所有服务器都可以访问 - * @author farsunset (3979434@qq.com) */ public class DefaultSessionManager implements SessionManager{ @@ -63,9 +67,9 @@ public class DefaultSessionManager implements SessionManager{ } - public boolean containsCIMSession(CIMSession ios) + public boolean containsCIMSession(String account) { - return sessions.containsKey(ios.getAttribute(CIMConstant.SESSION_KEY)) || sessions.containsValue(ios); + return sessions.containsKey(account); } @@ -75,7 +79,7 @@ public class DefaultSessionManager implements SessionManager{ { for(String key:sessions.keySet()) { - if(sessions.get(key).equals(ios) || sessions.get(key).getNid()==ios.getNid()) + if(sessions.get(key).equals(ios) || sessions.get(key).getGid()==ios.getGid()) { return key; } @@ -87,5 +91,17 @@ public class DefaultSessionManager implements SessionManager{ return null; } + + + @Override + public void updateSession(CIMSession session) { + sessions.put(session.getAccount(), session); + } + + + @Override + public void setInvalid(String account) { + sessions.get(account).setStatus(CIMSession.STATUS_DISENABLE); + } } diff --git a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/session/SessionManager.java b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/session/SessionManager.java similarity index 71% rename from cim_for_mina/cim-core/src/com/farsunset/cim/nio/session/SessionManager.java rename to cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/session/SessionManager.java index 8c01dcf..b565bf6 100644 --- a/cim_for_mina/cim-core/src/com/farsunset/cim/nio/session/SessionManager.java +++ b/cim_for_mina/cim-server-sdk/src/com/farsunset/cim/server/session/SessionManager.java @@ -1,5 +1,10 @@ - -package com.farsunset.cim.nio.session; +/** + * probject:cim-core + * @version 1.5.0 + * + * @author 3979434@qq.com + */ +package com.farsunset.cim.server.session; import java.util.Collection; @@ -7,7 +12,6 @@ import java.util.Collection; /** * 客户端的 session管理接口 * 可自行实现此接口管理session - * @author 3979434@qq.com */ public interface SessionManager { @@ -18,6 +22,11 @@ public interface SessionManager { */ public void addSession(String account,CIMSession session); + /** + * 添加新的session + */ + public void updateSession(CIMSession session); + /** * * @param account 客户端session的 key 一般可用 用户账号来对应session @@ -31,12 +40,6 @@ public interface SessionManager { */ public Collection getSessions(); - /** - * 删除session - * @param session - */ - public void removeSession(CIMSession session) ; - /** * 删除session @@ -44,15 +47,17 @@ public interface SessionManager { */ public void removeSession(String account); + /** + * 删除session + * @param session + */ + public void setInvalid(String account); + /** * session是否存在 * @param session */ - public boolean containsCIMSession(CIMSession ios); + public boolean containsCIMSession(String account); + - /** - * session获取对应的 用户 key - * @param session - */ - public String getAccount(CIMSession ios); } \ No newline at end of file diff --git a/cim_for_mina/ichat-server/.classpath b/cim_for_mina/cim-server/.classpath similarity index 96% rename from cim_for_mina/ichat-server/.classpath rename to cim_for_mina/cim-server/.classpath index 0c3110a..233d582 100644 --- a/cim_for_mina/ichat-server/.classpath +++ b/cim_for_mina/cim-server/.classpath @@ -6,6 +6,7 @@ + @@ -29,8 +30,8 @@ - - + + @@ -38,6 +39,5 @@ - diff --git a/cim_for_mina/ichat-server/.mymetadata b/cim_for_mina/cim-server/.mymetadata similarity index 72% rename from cim_for_mina/ichat-server/.mymetadata rename to cim_for_mina/cim-server/.mymetadata index 194d12c..576f422 100644 --- a/cim_for_mina/ichat-server/.mymetadata +++ b/cim_for_mina/cim-server/.mymetadata @@ -1,11 +1,11 @@ + archive="cim-server.war"> diff --git a/cim_for_mina/ichat-server/.project b/cim_for_mina/cim-server/.project similarity index 98% rename from cim_for_mina/ichat-server/.project rename to cim_for_mina/cim-server/.project index 593a507..96180f8 100644 --- a/cim_for_mina/ichat-server/.project +++ b/cim_for_mina/cim-server/.project @@ -1,6 +1,6 @@ - ichat-server + cim-server diff --git a/cim_for_mina/ichat-server/.settings/org.eclipse.core.resources.prefs b/cim_for_mina/cim-server/.settings/org.eclipse.core.resources.prefs similarity index 100% rename from cim_for_mina/ichat-server/.settings/org.eclipse.core.resources.prefs rename to cim_for_mina/cim-server/.settings/org.eclipse.core.resources.prefs diff --git a/cim_for_mina/ichat-server/WebRoot/META-INF/MANIFEST.MF b/cim_for_mina/cim-server/WebRoot/META-INF/MANIFEST.MF similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/META-INF/MANIFEST.MF rename to cim_for_mina/cim-server/WebRoot/META-INF/MANIFEST.MF diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/classes/log4j.properties b/cim_for_mina/cim-server/WebRoot/WEB-INF/classes/log4j.properties similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/classes/log4j.properties rename to cim_for_mina/cim-server/WebRoot/WEB-INF/classes/log4j.properties diff --git a/cim_for_mina/cim-server/WebRoot/WEB-INF/classes/spring-cim.xml b/cim_for_mina/cim-server/WebRoot/WEB-INF/classes/spring-cim.xml new file mode 100644 index 0000000..8676e13 --- /dev/null +++ b/cim_for_mina/cim-server/WebRoot/WEB-INF/classes/spring-cim.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/classes/spring-config.xml b/cim_for_mina/cim-server/WebRoot/WEB-INF/classes/spring-config.xml similarity index 87% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/classes/spring-config.xml rename to cim_for_mina/cim-server/WebRoot/WEB-INF/classes/spring-config.xml index b24013a..de92bdb 100644 --- a/cim_for_mina/ichat-server/WebRoot/WEB-INF/classes/spring-config.xml +++ b/cim_for_mina/cim-server/WebRoot/WEB-INF/classes/spring-config.xml @@ -12,5 +12,5 @@ http://www.springframework.org/schema/aop/spring-aop-2.5.xsd " > - + \ No newline at end of file diff --git a/cim_for_mina/ichat-server/src/main/resource/spring-push.xml b/cim_for_mina/cim-server/WebRoot/WEB-INF/classes/spring-push.xml similarity index 67% rename from cim_for_mina/ichat-server/src/main/resource/spring-push.xml rename to cim_for_mina/cim-server/WebRoot/WEB-INF/classes/spring-push.xml index 6b21240..d4eab02 100644 --- a/cim_for_mina/ichat-server/src/main/resource/spring-push.xml +++ b/cim_for_mina/cim-server/WebRoot/WEB-INF/classes/spring-push.xml @@ -13,11 +13,11 @@ " > - - + + - - + + \ No newline at end of file diff --git a/cim_for_mina/ichat-server/src/main/resource/struts.xml b/cim_for_mina/cim-server/WebRoot/WEB-INF/classes/struts.xml similarity index 79% rename from cim_for_mina/ichat-server/src/main/resource/struts.xml rename to cim_for_mina/cim-server/WebRoot/WEB-INF/classes/struts.xml index 7dd0e3d..f8f7936 100644 --- a/cim_for_mina/ichat-server/src/main/resource/struts.xml +++ b/cim_for_mina/cim-server/WebRoot/WEB-INF/classes/struts.xml @@ -10,12 +10,12 @@ - + /console/session/manage.jsp - + \ No newline at end of file diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/Spring.aop-3.0.2.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/Spring.aop-3.0.2.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/Spring.aop-3.0.2.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/Spring.aop-3.0.2.jar diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/Spring.asm-3.0.2.RELEASE.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/Spring.asm-3.0.2.RELEASE.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/Spring.asm-3.0.2.RELEASE.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/Spring.asm-3.0.2.RELEASE.jar diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/Spring.beans-3.0.2.RELEASE.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/Spring.beans-3.0.2.RELEASE.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/Spring.beans-3.0.2.RELEASE.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/Spring.beans-3.0.2.RELEASE.jar diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/Spring.context-3.0.2.RELEASE.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/Spring.context-3.0.2.RELEASE.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/Spring.context-3.0.2.RELEASE.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/Spring.context-3.0.2.RELEASE.jar diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/Spring.core-3.0.2.RELEASE.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/Spring.core-3.0.2.RELEASE.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/Spring.core-3.0.2.RELEASE.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/Spring.core-3.0.2.RELEASE.jar diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/Spring.expression-3.0.2.RELEASE.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/Spring.expression-3.0.2.RELEASE.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/Spring.expression-3.0.2.RELEASE.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/Spring.expression-3.0.2.RELEASE.jar diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/Spring.jdbc-3.0.2.RELEASE.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/Spring.jdbc-3.0.2.RELEASE.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/Spring.jdbc-3.0.2.RELEASE.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/Spring.jdbc-3.0.2.RELEASE.jar diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/Spring.orm-3.0.2.RELEASE.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/Spring.orm-3.0.2.RELEASE.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/Spring.orm-3.0.2.RELEASE.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/Spring.orm-3.0.2.RELEASE.jar diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/Spring.transaction-3.0.2.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/Spring.transaction-3.0.2.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/Spring.transaction-3.0.2.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/Spring.transaction-3.0.2.jar diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/Spring.web-3.0.2.RELEASE.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/Spring.web-3.0.2.RELEASE.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/Spring.web-3.0.2.RELEASE.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/Spring.web-3.0.2.RELEASE.jar diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/antlr-2.7.6.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/antlr-2.7.6.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/antlr-2.7.6.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/antlr-2.7.6.jar diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/asm.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/asm.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/asm.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/asm.jar diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/aspectjweaver.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/aspectjweaver.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/aspectjweaver.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/aspectjweaver.jar diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/commons-fileupload-1.2.1.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/commons-fileupload-1.2.1.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/commons-fileupload-1.2.1.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/commons-fileupload-1.2.1.jar diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/commons-io-2.4.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/commons-io-2.4.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/commons-io-2.4.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/commons-io-2.4.jar diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/commons-lang-2.3.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/commons-lang-2.3.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/commons-lang-2.3.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/commons-lang-2.3.jar diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/commons-logging-1.0.4.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/commons-logging-1.0.4.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/commons-logging-1.0.4.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/commons-logging-1.0.4.jar diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/freemarker-2.3.15.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/freemarker-2.3.15.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/freemarker-2.3.15.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/freemarker-2.3.15.jar diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/gson-2.1.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/gson-2.1.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/gson-2.1.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/gson-2.1.jar diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/httpclient-4.3.4.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/httpclient-4.3.4.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/httpclient-4.3.4.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/httpclient-4.3.4.jar diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/httpcore-4.3.2.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/httpcore-4.3.2.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/httpcore-4.3.2.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/httpcore-4.3.2.jar diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/jstl-1.2.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/jstl-1.2.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/jstl-1.2.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/jstl-1.2.jar diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/log4j.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/log4j.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/log4j.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/log4j.jar diff --git a/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/mina-core-2.0.9.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/mina-core-2.0.9.jar new file mode 100644 index 0000000..be1746c Binary files /dev/null and b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/mina-core-2.0.9.jar differ diff --git a/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/mina-integration-beans-2.0.9.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/mina-integration-beans-2.0.9.jar new file mode 100644 index 0000000..7a886be Binary files /dev/null and b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/mina-integration-beans-2.0.9.jar differ diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/ognl-2.7.3.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/ognl-2.7.3.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/ognl-2.7.3.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/ognl-2.7.3.jar diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/slf4j-api-1.7.5.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/slf4j-api-1.7.5.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/slf4j-api-1.7.5.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/slf4j-api-1.7.5.jar diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/slf4j-nop-1.7.5.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/slf4j-nop-1.7.5.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/slf4j-nop-1.7.5.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/slf4j-nop-1.7.5.jar diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/spring-context-support.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/spring-context-support.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/spring-context-support.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/spring-context-support.jar diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/struts2-core-2.1.8.1.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/struts2-core-2.1.8.1.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/struts2-core-2.1.8.1.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/struts2-core-2.1.8.1.jar diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/xstream-1.3.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/xstream-1.3.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/xstream-1.3.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/xstream-1.3.jar diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/xwork-core-2.1.6.jar b/cim_for_mina/cim-server/WebRoot/WEB-INF/lib/xwork-core-2.1.6.jar similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/xwork-core-2.1.6.jar rename to cim_for_mina/cim-server/WebRoot/WEB-INF/lib/xwork-core-2.1.6.jar diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/web.xml b/cim_for_mina/cim-server/WebRoot/WEB-INF/web.xml similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/web.xml rename to cim_for_mina/cim-server/WebRoot/WEB-INF/web.xml diff --git a/cim_for_mina/ichat-server/WebRoot/console/header.jsp b/cim_for_mina/cim-server/WebRoot/console/header.jsp similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/console/header.jsp rename to cim_for_mina/cim-server/WebRoot/console/header.jsp diff --git a/cim_for_mina/ichat-server/WebRoot/console/index.jsp b/cim_for_mina/cim-server/WebRoot/console/index.jsp similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/console/index.jsp rename to cim_for_mina/cim-server/WebRoot/console/index.jsp diff --git a/cim_for_mina/ichat-server/WebRoot/console/nav.jsp b/cim_for_mina/cim-server/WebRoot/console/nav.jsp similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/console/nav.jsp rename to cim_for_mina/cim-server/WebRoot/console/nav.jsp diff --git a/cim_for_mina/ichat-server/WebRoot/console/session/manage.jsp b/cim_for_mina/cim-server/WebRoot/console/session/manage.jsp similarity index 96% rename from cim_for_mina/ichat-server/WebRoot/console/session/manage.jsp rename to cim_for_mina/cim-server/WebRoot/console/session/manage.jsp index 4d8ba5a..5d21ee2 100644 --- a/cim_for_mina/ichat-server/WebRoot/console/session/manage.jsp +++ b/cim_for_mina/cim-server/WebRoot/console/session/manage.jsp @@ -1,6 +1,6 @@ <%@ page language="java" pageEncoding="utf-8"%> <%@ page import="java.util.Collection"%> -<%@ page import="com.farsunset.cim.nio.session.CIMSession"%> +<%@ page import="com.farsunset.cim.server.session.CIMSession"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" @@ -56,7 +56,7 @@ function onImageError(obj) { - obj.src="<%=basePath%>/webclient/images/icon_head_default.png"; + obj.src="<%=basePath%>/resource/img/icon.png"; } function openWebclient(){ @@ -92,6 +92,7 @@ 头像 账号 终端 + 应用版本 设备型号 在线时长 位置 @@ -117,6 +118,9 @@ <%=ios.getChannel()%> + + <%=ios.getClientVersion()==null?"":ios.getClientVersion()%> + <%=ios.getDeviceModel()==null?"":ios.getDeviceModel()%> diff --git a/cim_for_mina/ichat-server/WebRoot/console/webclient/CIMBridge.swf b/cim_for_mina/cim-server/WebRoot/console/webclient/CIMBridge.swf similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/console/webclient/CIMBridge.swf rename to cim_for_mina/cim-server/WebRoot/console/webclient/CIMBridge.swf diff --git a/cim_for_mina/ichat-server/WebRoot/console/webclient/LoginDialog.jsp b/cim_for_mina/cim-server/WebRoot/console/webclient/LoginDialog.jsp similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/console/webclient/LoginDialog.jsp rename to cim_for_mina/cim-server/WebRoot/console/webclient/LoginDialog.jsp diff --git a/cim_for_mina/ichat-server/WebRoot/console/webclient/MessageDialog.jsp b/cim_for_mina/cim-server/WebRoot/console/webclient/MessageDialog.jsp similarity index 79% rename from cim_for_mina/ichat-server/WebRoot/console/webclient/MessageDialog.jsp rename to cim_for_mina/cim-server/WebRoot/console/webclient/MessageDialog.jsp index 7119991..d465596 100644 --- a/cim_for_mina/ichat-server/WebRoot/console/webclient/MessageDialog.jsp +++ b/cim_for_mina/cim-server/WebRoot/console/webclient/MessageDialog.jsp @@ -4,10 +4,11 @@ style="display: none; width: 500px; position: absolute;min-height: 600px;box-shadow: 0 0 10px -2px #0B203A;top:50px;left:50px;">
消息列表 -
- +
+ 请调用接口,或者在后台页面,推送一条消息到客户端 +
diff --git a/cim_for_mina/ichat-server/WebRoot/console/webclient/cim.js b/cim_for_mina/cim-server/WebRoot/console/webclient/cim.js similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/console/webclient/cim.js rename to cim_for_mina/cim-server/WebRoot/console/webclient/cim.js diff --git a/cim_for_mina/ichat-server/WebRoot/console/webclient/dingdong.mp3 b/cim_for_mina/cim-server/WebRoot/console/webclient/dingdong.mp3 similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/console/webclient/dingdong.mp3 rename to cim_for_mina/cim-server/WebRoot/console/webclient/dingdong.mp3 diff --git a/cim_for_mina/ichat-server/WebRoot/console/webclient/main.jsp b/cim_for_mina/cim-server/WebRoot/console/webclient/main.jsp similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/console/webclient/main.jsp rename to cim_for_mina/cim-server/WebRoot/console/webclient/main.jsp diff --git a/cim_for_mina/ichat-server/WebRoot/index.jsp b/cim_for_mina/cim-server/WebRoot/index.jsp similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/index.jsp rename to cim_for_mina/cim-server/WebRoot/index.jsp diff --git a/cim_for_mina/ichat-server/WebRoot/resource/bootstrap/css/bootstrap-theme.min.css b/cim_for_mina/cim-server/WebRoot/resource/bootstrap/css/bootstrap-theme.min.css similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/resource/bootstrap/css/bootstrap-theme.min.css rename to cim_for_mina/cim-server/WebRoot/resource/bootstrap/css/bootstrap-theme.min.css diff --git a/cim_for_mina/ichat-server/WebRoot/resource/bootstrap/css/bootstrap.min.css b/cim_for_mina/cim-server/WebRoot/resource/bootstrap/css/bootstrap.min.css similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/resource/bootstrap/css/bootstrap.min.css rename to cim_for_mina/cim-server/WebRoot/resource/bootstrap/css/bootstrap.min.css diff --git a/cim_for_mina/ichat-server/WebRoot/resource/bootstrap/fonts/glyphicons-halflings-regular.eot b/cim_for_mina/cim-server/WebRoot/resource/bootstrap/fonts/glyphicons-halflings-regular.eot similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/resource/bootstrap/fonts/glyphicons-halflings-regular.eot rename to cim_for_mina/cim-server/WebRoot/resource/bootstrap/fonts/glyphicons-halflings-regular.eot diff --git a/cim_for_mina/ichat-server/WebRoot/resource/bootstrap/fonts/glyphicons-halflings-regular.svg b/cim_for_mina/cim-server/WebRoot/resource/bootstrap/fonts/glyphicons-halflings-regular.svg similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/resource/bootstrap/fonts/glyphicons-halflings-regular.svg rename to cim_for_mina/cim-server/WebRoot/resource/bootstrap/fonts/glyphicons-halflings-regular.svg diff --git a/cim_for_mina/ichat-server/WebRoot/resource/bootstrap/fonts/glyphicons-halflings-regular.ttf b/cim_for_mina/cim-server/WebRoot/resource/bootstrap/fonts/glyphicons-halflings-regular.ttf similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/resource/bootstrap/fonts/glyphicons-halflings-regular.ttf rename to cim_for_mina/cim-server/WebRoot/resource/bootstrap/fonts/glyphicons-halflings-regular.ttf diff --git a/cim_for_mina/ichat-server/WebRoot/resource/bootstrap/fonts/glyphicons-halflings-regular.woff b/cim_for_mina/cim-server/WebRoot/resource/bootstrap/fonts/glyphicons-halflings-regular.woff similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/resource/bootstrap/fonts/glyphicons-halflings-regular.woff rename to cim_for_mina/cim-server/WebRoot/resource/bootstrap/fonts/glyphicons-halflings-regular.woff diff --git a/cim_for_mina/ichat-server/WebRoot/resource/bootstrap/js/bootstrap.min.js b/cim_for_mina/cim-server/WebRoot/resource/bootstrap/js/bootstrap.min.js similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/resource/bootstrap/js/bootstrap.min.js rename to cim_for_mina/cim-server/WebRoot/resource/bootstrap/js/bootstrap.min.js diff --git a/cim_for_mina/ichat-server/WebRoot/resource/css/base-ui.css b/cim_for_mina/cim-server/WebRoot/resource/css/base-ui.css similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/resource/css/base-ui.css rename to cim_for_mina/cim-server/WebRoot/resource/css/base-ui.css diff --git a/cim_for_mina/ichat-server/WebRoot/resource/css/dialog.css b/cim_for_mina/cim-server/WebRoot/resource/css/dialog.css similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/resource/css/dialog.css rename to cim_for_mina/cim-server/WebRoot/resource/css/dialog.css diff --git a/cim_for_mina/ichat-server/WebRoot/resource/css/login.css b/cim_for_mina/cim-server/WebRoot/resource/css/login.css similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/resource/css/login.css rename to cim_for_mina/cim-server/WebRoot/resource/css/login.css diff --git a/cim_for_mina/ichat-server/WebRoot/resource/css/main-layout.css b/cim_for_mina/cim-server/WebRoot/resource/css/main-layout.css similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/resource/css/main-layout.css rename to cim_for_mina/cim-server/WebRoot/resource/css/main-layout.css diff --git a/cim_for_mina/ichat-server/WebRoot/resource/css/table.css b/cim_for_mina/cim-server/WebRoot/resource/css/table.css similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/resource/css/table.css rename to cim_for_mina/cim-server/WebRoot/resource/css/table.css diff --git a/cim_for_mina/ichat-server/WebRoot/resource/css/webbase.css b/cim_for_mina/cim-server/WebRoot/resource/css/webbase.css similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/resource/css/webbase.css rename to cim_for_mina/cim-server/WebRoot/resource/css/webbase.css diff --git a/cim_for_mina/ichat-server/WebRoot/resource/img/blue_line.jpg b/cim_for_mina/cim-server/WebRoot/resource/img/blue_line.jpg similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/resource/img/blue_line.jpg rename to cim_for_mina/cim-server/WebRoot/resource/img/blue_line.jpg diff --git a/cim_for_mina/ichat-server/WebRoot/resource/img/circle_banner.jpg b/cim_for_mina/cim-server/WebRoot/resource/img/circle_banner.jpg similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/resource/img/circle_banner.jpg rename to cim_for_mina/cim-server/WebRoot/resource/img/circle_banner.jpg diff --git a/cim_for_mina/ichat-server/WebRoot/resource/img/disk-spr.png b/cim_for_mina/cim-server/WebRoot/resource/img/disk-spr.png similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/resource/img/disk-spr.png rename to cim_for_mina/cim-server/WebRoot/resource/img/disk-spr.png diff --git a/cim_for_mina/ichat-server/WebRoot/resource/img/icon.png b/cim_for_mina/cim-server/WebRoot/resource/img/icon.png similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/resource/img/icon.png rename to cim_for_mina/cim-server/WebRoot/resource/img/icon.png diff --git a/cim_for_mina/ichat-server/WebRoot/resource/img/icon_error.png b/cim_for_mina/cim-server/WebRoot/resource/img/icon_error.png similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/resource/img/icon_error.png rename to cim_for_mina/cim-server/WebRoot/resource/img/icon_error.png diff --git a/cim_for_mina/ichat-server/WebRoot/resource/img/icon_hint.png b/cim_for_mina/cim-server/WebRoot/resource/img/icon_hint.png similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/resource/img/icon_hint.png rename to cim_for_mina/cim-server/WebRoot/resource/img/icon_hint.png diff --git a/cim_for_mina/ichat-server/WebRoot/resource/img/icon_loading_small.gif b/cim_for_mina/cim-server/WebRoot/resource/img/icon_loading_small.gif similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/resource/img/icon_loading_small.gif rename to cim_for_mina/cim-server/WebRoot/resource/img/icon_loading_small.gif diff --git a/cim_for_mina/ichat-server/WebRoot/resource/img/icon_success.png b/cim_for_mina/cim-server/WebRoot/resource/img/icon_success.png similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/resource/img/icon_success.png rename to cim_for_mina/cim-server/WebRoot/resource/img/icon_success.png diff --git a/cim_for_mina/ichat-server/WebRoot/resource/img/scan_download.png b/cim_for_mina/cim-server/WebRoot/resource/img/scan_download.png similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/resource/img/scan_download.png rename to cim_for_mina/cim-server/WebRoot/resource/img/scan_download.png diff --git a/cim_for_mina/ichat-server/WebRoot/resource/img/top-bg.png b/cim_for_mina/cim-server/WebRoot/resource/img/top-bg.png similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/resource/img/top-bg.png rename to cim_for_mina/cim-server/WebRoot/resource/img/top-bg.png diff --git a/cim_for_mina/ichat-server/WebRoot/resource/img/usericon_bg.png b/cim_for_mina/cim-server/WebRoot/resource/img/usericon_bg.png similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/resource/img/usericon_bg.png rename to cim_for_mina/cim-server/WebRoot/resource/img/usericon_bg.png diff --git a/cim_for_mina/ichat-server/WebRoot/resource/js/framework.js b/cim_for_mina/cim-server/WebRoot/resource/js/framework.js similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/resource/js/framework.js rename to cim_for_mina/cim-server/WebRoot/resource/js/framework.js diff --git a/cim_for_mina/ichat-server/WebRoot/resource/js/jquery-1.8.3.min.js b/cim_for_mina/cim-server/WebRoot/resource/js/jquery-1.8.3.min.js similarity index 100% rename from cim_for_mina/ichat-server/WebRoot/resource/js/jquery-1.8.3.min.js rename to cim_for_mina/cim-server/WebRoot/resource/js/jquery-1.8.3.min.js diff --git a/cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/admin/action/SessionAction.java b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/admin/action/SessionAction.java similarity index 67% rename from cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/admin/action/SessionAction.java rename to cim_for_mina/cim-server/src/main/java/com/farsunset/cim/admin/action/SessionAction.java index ea354e6..8f262a6 100644 --- a/cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/admin/action/SessionAction.java +++ b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/admin/action/SessionAction.java @@ -1,20 +1,20 @@ -package com.farsunset.ichat.admin.action; +package com.farsunset.cim.admin.action; import java.io.IOException; import org.apache.struts2.ServletActionContext; -import com.farsunset.cim.nio.mutual.Message; -import com.farsunset.cim.nio.session.DefaultSessionManager; -import com.farsunset.ichat.cim.push.SystemMessagePusher; -import com.farsunset.ichat.common.util.ContextHolder; +import com.farsunset.cim.push.SystemMessagePusher; +import com.farsunset.cim.server.model.Message; +import com.farsunset.cim.server.session.DefaultSessionManager; +import com.farsunset.cim.util.ContextHolder; import com.opensymphony.xwork2.ActionSupport; public class SessionAction extends ActionSupport { /** * - */ + */ private static final long serialVersionUID = 1L; @@ -23,7 +23,7 @@ public class SessionAction extends ActionSupport { public String list() { - ServletActionContext.getRequest().setAttribute("sessionList", ((DefaultSessionManager) ContextHolder.getBean("defaultSessionManager")).getSessions()); + ServletActionContext.getRequest().setAttribute("sessionList", ((DefaultSessionManager) ContextHolder.getBean("CIMSessionManager")).getSessions()); return "list"; } diff --git a/cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/api/action/MessageAction.java b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/api/action/MessageAction.java similarity index 89% rename from cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/api/action/MessageAction.java rename to cim_for_mina/cim-server/src/main/java/com/farsunset/cim/api/action/MessageAction.java index 1916bb9..f11cafd 100644 --- a/cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/api/action/MessageAction.java +++ b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/api/action/MessageAction.java @@ -1,122 +1,122 @@ -package com.farsunset.ichat.api.action; - -import java.util.HashMap; - -import org.apache.commons.lang.StringUtils; -import org.apache.struts2.ServletActionContext; -import org.springframework.web.bind.ServletRequestBindingException; - -import com.farsunset.cim.nio.mutual.Message; -import com.farsunset.ichat.cim.push.DefaultMessagePusher; -import com.farsunset.ichat.cim.push.SystemMessagePusher; -import com.farsunset.ichat.common.util.Constants; -import com.farsunset.ichat.common.util.ContextHolder; -import com.google.gson.Gson; -import com.opensymphony.xwork2.ActionSupport; -import com.opensymphony.xwork2.ModelDriven; - -/** - * - * @author farsunset (3979434@qq.com) - */ -public class MessageAction extends ActionSupport implements ModelDriven{ - - /** - * - */ - private static final long serialVersionUID = 1L; - Message message = new Message(); - - /** - * 关于http参数获取, struts2 的模型驱动 比如 http 参数 sender=xiaomao&receiver=xiaogou - * struts自动会将参数的值 存入getModel()返回的对象的对应属性中,即xiaomao会存入message.sender属性,xiaogou会存入message.receiver属性 - * 省去了request.getParameter("sender")方式获取参数,,如果参数名在getModel()返回的对象中不存在,则需要用request.getParameter()获取 - * 其他相关*Action.java中 同理,这里做统一说明! - */ - public String send() throws Exception { - - HashMap datamap = new HashMap(); - HashMap data = new HashMap(); - ServletActionContext.getResponse().setContentType("text/json;charset=UTF-8"); - datamap.put("code", 200); - - try{ - - checkParams(); - - if(Constants.MessageType.TYPE_2.equals(message.getType())) - { - //向客户端 发送消息 - ContextHolder.getBean(SystemMessagePusher.class).pushMessageToUser(message); - }else - { - //向客户端 发送消息 - ((DefaultMessagePusher)ContextHolder.getBean("messagePusher")).pushMessageToUser(message); - } - - data.put("id", message.getMid()); - data.put("createTime", String.valueOf(message.getTimestamp())); - datamap.put("data", data); - }catch(Exception e){ - - datamap.put("code", 500); - e.printStackTrace(); - } - - ServletActionContext.getResponse().getWriter().print(new Gson().toJson(datamap)); - return null; - } - - - - - /** - * 文件由客户端发往阿里云 OSS 存储 - * @param messageServiceImpl - */ - /* private void fileHandler(Message mo, HttpServletRequest request) throws IOException - { - if(request instanceof MultiPartRequestWrapper){ - MultiPartRequestWrapper pr = (MultiPartRequestWrapper) request; - if(pr.getFiles("file")!=null) - { - File file = pr.getFiles("file")[0]; - - String fileType = request.getParameter("fileType"); - String dir = dirMap.get(fileType); - if(StringUtils.isEmpty(dir)) - { - throw new IllegalArgumentException("fileType:" +fileType+" 未定义" ); - - } - String path = request.getSession().getServletContext().getRealPath(dir); - String uuid=UUID.randomUUID().toString().replaceAll("-", ""); - File des = new File(path+"/"+uuid); - FileUtil.copyFile(file, des); - mo.setFile(dir+"/"+uuid); - mo.setFileType(fileType); - } - } - - }*/ - - - private void checkParams() throws ServletRequestBindingException - { - - if(StringUtils.isEmpty(message.getReceiver())) - { - throw new IllegalArgumentException("receiver 不能为空!"); - - } - } - - @Override - public Message getModel() { - // TODO Auto-generated method stub - return message; - } - - - +package com.farsunset.cim.api.action; + +import java.util.HashMap; + +import org.apache.commons.lang.StringUtils; +import org.apache.struts2.ServletActionContext; +import org.springframework.web.bind.ServletRequestBindingException; + +import com.farsunset.cim.push.DefaultMessagePusher; +import com.farsunset.cim.push.SystemMessagePusher; +import com.farsunset.cim.server.model.Message; +import com.farsunset.cim.util.Constants; +import com.farsunset.cim.util.ContextHolder; +import com.google.gson.Gson; +import com.opensymphony.xwork2.ActionSupport; +import com.opensymphony.xwork2.ModelDriven; + +/** + * + * @author farsunset (3979434@qq.com) + */ +public class MessageAction extends ActionSupport implements ModelDriven{ + + /** + * + */ + private static final long serialVersionUID = 1L; + Message message = new Message(); + + /** + * 关于http参数获取, struts2 的模型驱动 比如 http 参数 sender=xiaomao&receiver=xiaogou + * struts自动会将参数的值 存入getModel()返回的对象的对应属性中,即xiaomao会存入message.sender属性,xiaogou会存入message.receiver属性 + * 省去了request.getParameter("sender")方式获取参数,,如果参数名在getModel()返回的对象中不存在,则需要用request.getParameter()获取 + * 其他相关*Action.java中 同理,这里做统一说明! + */ + public String send() throws Exception { + + HashMap datamap = new HashMap(); + HashMap data = new HashMap(); + ServletActionContext.getResponse().setContentType("text/json;charset=UTF-8"); + datamap.put("code", 200); + + try{ + + checkParams(); + + if(Constants.MessageType.TYPE_2.equals(message.getType())) + { + //向客户端 发送消息 + ContextHolder.getBean(SystemMessagePusher.class).pushMessageToUser(message); + }else + { + //向客户端 发送消息 + ((DefaultMessagePusher)ContextHolder.getBean("messagePusher")).pushMessageToUser(message); + } + + data.put("id", message.getMid()); + data.put("createTime", String.valueOf(message.getTimestamp())); + datamap.put("data", data); + }catch(Exception e){ + + datamap.put("code", 500); + e.printStackTrace(); + } + + ServletActionContext.getResponse().getWriter().print(new Gson().toJson(datamap)); + return null; + } + + + + + /** + * 文件由客户端发往阿里云 OSS 存储 + * @param messageServiceImpl + */ + /* private void fileHandler(Message mo, HttpServletRequest request) throws IOException + { + if(request instanceof MultiPartRequestWrapper){ + MultiPartRequestWrapper pr = (MultiPartRequestWrapper) request; + if(pr.getFiles("file")!=null) + { + File file = pr.getFiles("file")[0]; + + String fileType = request.getParameter("fileType"); + String dir = dirMap.get(fileType); + if(StringUtils.isEmpty(dir)) + { + throw new IllegalArgumentException("fileType:" +fileType+" 未定义" ); + + } + String path = request.getSession().getServletContext().getRealPath(dir); + String uuid=UUID.randomUUID().toString().replaceAll("-", ""); + File des = new File(path+"/"+uuid); + FileUtil.copyFile(file, des); + mo.setFile(dir+"/"+uuid); + mo.setFileType(fileType); + } + } + + }*/ + + + private void checkParams() throws ServletRequestBindingException + { + + if(StringUtils.isEmpty(message.getReceiver())) + { + throw new IllegalArgumentException("receiver 不能为空!"); + + } + } + + @Override + public Message getModel() { + // TODO Auto-generated method stub + return message; + } + + + } \ No newline at end of file diff --git a/cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/cim/handler/BindHandler.java b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/handler/BindHandler.java similarity index 79% rename from cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/cim/handler/BindHandler.java rename to cim_for_mina/cim-server/src/main/java/com/farsunset/cim/handler/BindHandler.java index fcf6c5d..070ce7e 100644 --- a/cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/cim/handler/BindHandler.java +++ b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/handler/BindHandler.java @@ -1,88 +1,89 @@ -package com.farsunset.ichat.cim.handler; - -import java.net.InetAddress; -import java.util.UUID; - -import org.apache.log4j.Logger; - -import com.farsunset.cim.nio.constant.CIMConstant; -import com.farsunset.cim.nio.handler.CIMRequestHandler; -import com.farsunset.cim.nio.mutual.Message; -import com.farsunset.cim.nio.mutual.ReplyBody; -import com.farsunset.cim.nio.mutual.SentBody; -import com.farsunset.cim.nio.session.CIMSession; -import com.farsunset.cim.nio.session.DefaultSessionManager; -import com.farsunset.ichat.common.util.ContextHolder; - - -/** - * 账号绑定实现 - * - * @author - */ -public class BindHandler implements CIMRequestHandler { - - protected final Logger logger = Logger.getLogger(BindHandler.class); - public ReplyBody process(CIMSession newSession, SentBody message) { - - ReplyBody reply = new ReplyBody(); - DefaultSessionManager sessionManager= ((DefaultSessionManager) ContextHolder.getBean("defaultSessionManager")); - try { - - String account = message.get("account"); - - newSession.setAccount(account); - newSession.setDeviceId(message.get("deviceId")); - newSession.setGid(UUID.randomUUID().toString()); - newSession.setHost(InetAddress.getLocalHost().getHostAddress()); - newSession.setChannel( message.get("channel")); - newSession.setDeviceModel(message.get("device")); - //第一次设置心跳时间为登录时间 - newSession.setBindTime(System.currentTimeMillis()); - newSession.setHeartbeat(System.currentTimeMillis()); - /** - * 由于客户端断线服务端可能会无法获知的情况,客户端重连时,需要关闭旧的连接 - */ - CIMSession oldSession = sessionManager.getSession(account); - //如果是账号已经在另一台终端登录。则让另一个终端下线 - if(oldSession!=null&&!oldSession.equals(newSession)) - { - - oldSession.removeAttribute(CIMConstant.SESSION_KEY); - Message msg = new Message(); - msg.setType(CIMConstant.MessageType.TYPE_999);//强行下线消息类型 - msg.setReceiver(account); - - if(!oldSession.isLocalhost()) - { - - /* - 判断当前session是否连接于本台服务器,如不是发往目标服务器处理 - MessageDispatcher.execute(msg, oldSession.getHost()); - */ - }else - { - oldSession.write(msg); - oldSession.close(true); - oldSession = null; - } - oldSession = null; - - } - if(oldSession==null) - { - sessionManager.addSession(account, newSession); - - } - - reply.setCode(CIMConstant.ReturnCode.CODE_200); - - } catch (Exception e) { - reply.setCode(CIMConstant.ReturnCode.CODE_500); - e.printStackTrace(); - } - logger.debug("bind :account:" +message.get("account")+"-----------------------------" +reply.getCode()); - return reply; - } - +package com.farsunset.cim.handler; + +import java.net.InetAddress; +import java.util.UUID; + +import org.apache.log4j.Logger; + +import com.farsunset.cim.server.constant.CIMConstant; +import com.farsunset.cim.server.handler.CIMRequestHandler; +import com.farsunset.cim.server.model.Message; +import com.farsunset.cim.server.model.ReplyBody; +import com.farsunset.cim.server.model.SentBody; +import com.farsunset.cim.server.session.CIMSession; +import com.farsunset.cim.server.session.DefaultSessionManager; +import com.farsunset.cim.util.ContextHolder; + + +/** + * 账号绑定实现 + * + * @author + */ +public class BindHandler implements CIMRequestHandler { + + protected final Logger logger = Logger.getLogger(BindHandler.class); + public ReplyBody process(CIMSession newSession, SentBody message) { + + ReplyBody reply = new ReplyBody(); + DefaultSessionManager sessionManager= ((DefaultSessionManager) ContextHolder.getBean("CIMSessionManager")); + try { + + String account = message.get("account"); + + newSession.setAccount(account); + newSession.setDeviceId(message.get("deviceId")); + newSession.setGid(UUID.randomUUID().toString()); + newSession.setHost(InetAddress.getLocalHost().getHostAddress()); + newSession.setChannel( message.get("channel")); + newSession.setDeviceModel(message.get("device")); + newSession.setClientVersion(message.get("appVersion")); + //第一次设置心跳时间为登录时间 + newSession.setBindTime(System.currentTimeMillis()); + newSession.setHeartbeat(System.currentTimeMillis()); + /** + * 由于客户端断线服务端可能会无法获知的情况,客户端重连时,需要关闭旧的连接 + */ + CIMSession oldSession = sessionManager.getSession(account); + //如果是账号已经在另一台终端登录。则让另一个终端下线 + if(oldSession!=null&&!oldSession.equals(newSession)) + { + + oldSession.removeAttribute(CIMConstant.SESSION_KEY); + Message msg = new Message(); + msg.setType(CIMConstant.MessageType.TYPE_999);//强行下线消息类型 + msg.setReceiver(account); + + if(!oldSession.isLocalhost()) + { + + /* + 判断当前session是否连接于本台服务器,如不是发往目标服务器处理 + MessageDispatcher.execute(msg, oldSession.getHost()); + */ + }else + { + oldSession.write(msg); + oldSession.close(true); + oldSession = null; + } + oldSession = null; + + } + if(oldSession==null) + { + sessionManager.addSession(account, newSession); + + } + + reply.setCode(CIMConstant.ReturnCode.CODE_200); + + } catch (Exception e) { + reply.setCode(CIMConstant.ReturnCode.CODE_500); + e.printStackTrace(); + } + logger.debug("bind :account:" +message.get("account")+"-----------------------------" +reply.getCode()); + return reply; + } + } \ No newline at end of file diff --git a/cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/cim/handler/LogoutHandler.java b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/handler/LogoutHandler.java similarity index 50% rename from cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/cim/handler/LogoutHandler.java rename to cim_for_mina/cim-server/src/main/java/com/farsunset/cim/handler/LogoutHandler.java index 2e0890d..a33aec0 100644 --- a/cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/cim/handler/LogoutHandler.java +++ b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/handler/LogoutHandler.java @@ -1,13 +1,13 @@ -package com.farsunset.ichat.cim.handler; +package com.farsunset.cim.handler; -import com.farsunset.cim.nio.constant.CIMConstant; -import com.farsunset.cim.nio.handler.CIMRequestHandler; -import com.farsunset.cim.nio.mutual.ReplyBody; -import com.farsunset.cim.nio.mutual.SentBody; -import com.farsunset.cim.nio.session.CIMSession; -import com.farsunset.cim.nio.session.DefaultSessionManager; -import com.farsunset.ichat.common.util.ContextHolder; +import com.farsunset.cim.server.constant.CIMConstant; +import com.farsunset.cim.server.handler.CIMRequestHandler; +import com.farsunset.cim.server.model.ReplyBody; +import com.farsunset.cim.server.model.SentBody; +import com.farsunset.cim.server.session.CIMSession; +import com.farsunset.cim.server.session.DefaultSessionManager; +import com.farsunset.cim.util.ContextHolder; /** @@ -20,7 +20,7 @@ public class LogoutHandler implements CIMRequestHandler { public ReplyBody process(CIMSession ios, SentBody message) { - DefaultSessionManager sessionManager = ((DefaultSessionManager) ContextHolder.getBean("defaultSessionManager")); + DefaultSessionManager sessionManager = ((DefaultSessionManager) ContextHolder.getBean("CIMSessionManager")); String account =ios.getAttribute(CIMConstant.SESSION_KEY).toString(); ios.removeAttribute(CIMConstant.SESSION_KEY); diff --git a/cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/cim/handler/PushOfflineMessageHandler.java b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/handler/PushOfflineMessageHandler.java similarity index 73% rename from cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/cim/handler/PushOfflineMessageHandler.java rename to cim_for_mina/cim-server/src/main/java/com/farsunset/cim/handler/PushOfflineMessageHandler.java index 2f1fb7c..eca9162 100644 --- a/cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/cim/handler/PushOfflineMessageHandler.java +++ b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/handler/PushOfflineMessageHandler.java @@ -4,19 +4,19 @@ * * @author 3979434@qq.com */ -package com.farsunset.ichat.cim.handler; +package com.farsunset.cim.handler; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; -import com.farsunset.cim.nio.constant.CIMConstant; -import com.farsunset.cim.nio.handler.CIMRequestHandler; -import com.farsunset.cim.nio.mutual.Message; -import com.farsunset.cim.nio.mutual.ReplyBody; -import com.farsunset.cim.nio.mutual.SentBody; -import com.farsunset.cim.nio.session.CIMSession; +import com.farsunset.cim.server.constant.CIMConstant; +import com.farsunset.cim.server.handler.CIMRequestHandler; +import com.farsunset.cim.server.model.Message; +import com.farsunset.cim.server.model.ReplyBody; +import com.farsunset.cim.server.model.SentBody; +import com.farsunset.cim.server.session.CIMSession; /** * 推送离线消息 */ diff --git a/cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/cim/handler/SessionClosedHandler.java b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/handler/SessionClosedHandler.java similarity index 56% rename from cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/cim/handler/SessionClosedHandler.java rename to cim_for_mina/cim-server/src/main/java/com/farsunset/cim/handler/SessionClosedHandler.java index 8697a2b..9626116 100644 --- a/cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/cim/handler/SessionClosedHandler.java +++ b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/handler/SessionClosedHandler.java @@ -1,15 +1,15 @@ -package com.farsunset.ichat.cim.handler; +package com.farsunset.cim.handler; import org.apache.log4j.Logger; -import com.farsunset.cim.nio.constant.CIMConstant; -import com.farsunset.cim.nio.handler.CIMRequestHandler; -import com.farsunset.cim.nio.mutual.ReplyBody; -import com.farsunset.cim.nio.mutual.SentBody; -import com.farsunset.cim.nio.session.CIMSession; -import com.farsunset.cim.nio.session.DefaultSessionManager; -import com.farsunset.ichat.common.util.ContextHolder; +import com.farsunset.cim.server.constant.CIMConstant; +import com.farsunset.cim.server.handler.CIMRequestHandler; +import com.farsunset.cim.server.model.ReplyBody; +import com.farsunset.cim.server.model.SentBody; +import com.farsunset.cim.server.session.CIMSession; +import com.farsunset.cim.server.session.DefaultSessionManager; +import com.farsunset.cim.util.ContextHolder; /** * 断开连接,清除session @@ -22,7 +22,7 @@ public class SessionClosedHandler implements CIMRequestHandler { public ReplyBody process(CIMSession ios, SentBody message) { - DefaultSessionManager sessionManager = ((DefaultSessionManager) ContextHolder.getBean("defaultSessionManager")); + DefaultSessionManager sessionManager = ((DefaultSessionManager) ContextHolder.getBean("CIMSessionManager")); if(ios.getAttribute(CIMConstant.SESSION_KEY)==null) { diff --git a/cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/cim/push/CIMMessagePusher.java b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/push/CIMMessagePusher.java similarity index 73% rename from cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/cim/push/CIMMessagePusher.java rename to cim_for_mina/cim-server/src/main/java/com/farsunset/cim/push/CIMMessagePusher.java index 187bb0a..b389125 100644 --- a/cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/cim/push/CIMMessagePusher.java +++ b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/push/CIMMessagePusher.java @@ -1,7 +1,7 @@ -package com.farsunset.ichat.cim.push; +package com.farsunset.cim.push; -import com.farsunset.cim.nio.mutual.Message; +import com.farsunset.cim.server.model.Message; /** * 消息发送实接口 diff --git a/cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/cim/push/DefaultMessagePusher.java b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/push/DefaultMessagePusher.java similarity index 95% rename from cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/cim/push/DefaultMessagePusher.java rename to cim_for_mina/cim-server/src/main/java/com/farsunset/cim/push/DefaultMessagePusher.java index 6ac7e31..a2fa75d 100644 --- a/cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/cim/push/DefaultMessagePusher.java +++ b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/push/DefaultMessagePusher.java @@ -1,12 +1,12 @@ -package com.farsunset.ichat.cim.push; +package com.farsunset.cim.push; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import com.farsunset.cim.nio.mutual.Message; -import com.farsunset.cim.nio.session.CIMSession; -import com.farsunset.cim.nio.session.DefaultSessionManager; +import com.farsunset.cim.server.model.Message; +import com.farsunset.cim.server.session.CIMSession; +import com.farsunset.cim.server.session.DefaultSessionManager; /** * 消息发送实现类 diff --git a/cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/cim/push/SystemMessagePusher.java b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/push/SystemMessagePusher.java similarity index 80% rename from cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/cim/push/SystemMessagePusher.java rename to cim_for_mina/cim-server/src/main/java/com/farsunset/cim/push/SystemMessagePusher.java index 60ab59d..96e7c70 100644 --- a/cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/cim/push/SystemMessagePusher.java +++ b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/push/SystemMessagePusher.java @@ -1,7 +1,7 @@ -package com.farsunset.ichat.cim.push; +package com.farsunset.cim.push; -import com.farsunset.cim.nio.mutual.Message; +import com.farsunset.cim.server.model.Message; diff --git a/cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/cim/session/ClusterSessionManager.java b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/session/ClusterSessionManager.java similarity index 80% rename from cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/cim/session/ClusterSessionManager.java rename to cim_for_mina/cim-server/src/main/java/com/farsunset/cim/session/ClusterSessionManager.java index 80c1712..2b1f1b0 100644 --- a/cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/cim/session/ClusterSessionManager.java +++ b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/session/ClusterSessionManager.java @@ -1,10 +1,10 @@ -package com.farsunset.ichat.cim.session; +package com.farsunset.cim.session; import java.util.Collection; -import com.farsunset.cim.nio.session.CIMSession; -import com.farsunset.cim.nio.session.SessionManager; +import com.farsunset.cim.server.session.CIMSession; +import com.farsunset.cim.server.session.SessionManager; /** * 集群 session管理实现示例, 各位可以自行实现 AbstractSessionManager接口来实现自己的 session管理 @@ -77,6 +77,26 @@ public class ClusterSessionManager implements SessionManager{ return ios.getAccount(); } + + @Override + public boolean containsCIMSession(String account) { + // TODO Auto-generated method stub + return false; + } + + + @Override + public void setInvalid(String account) { + // TODO Auto-generated method stub + + } + + + @Override + public void updateSession(CIMSession session) { + + } + } diff --git a/cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/common/util/Constants.java b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/util/Constants.java similarity index 96% rename from cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/common/util/Constants.java rename to cim_for_mina/cim-server/src/main/java/com/farsunset/cim/util/Constants.java index 300aaf9..c729f76 100644 --- a/cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/common/util/Constants.java +++ b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/util/Constants.java @@ -1,4 +1,4 @@ -package com.farsunset.ichat.common.util; +package com.farsunset.cim.util; public interface Constants { diff --git a/cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/common/util/ContextHolder.java b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/util/ContextHolder.java similarity index 94% rename from cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/common/util/ContextHolder.java rename to cim_for_mina/cim-server/src/main/java/com/farsunset/cim/util/ContextHolder.java index f3b73cb..ecfd01b 100644 --- a/cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/common/util/ContextHolder.java +++ b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/util/ContextHolder.java @@ -1,4 +1,4 @@ -package com.farsunset.ichat.common.util; +package com.farsunset.cim.util; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; diff --git a/cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/common/util/MessageDispatcher.java b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/util/MessageDispatcher.java similarity index 93% rename from cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/common/util/MessageDispatcher.java rename to cim_for_mina/cim-server/src/main/java/com/farsunset/cim/util/MessageDispatcher.java index 3c820ff..cf29212 100644 --- a/cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/common/util/MessageDispatcher.java +++ b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/util/MessageDispatcher.java @@ -1,5 +1,5 @@ -package com.farsunset.ichat.common.util; +package com.farsunset.cim.util; import java.util.ArrayList; import java.util.List; import java.util.concurrent.BlockingQueue; @@ -17,13 +17,13 @@ import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; -import com.farsunset.cim.nio.mutual.Message; +import com.farsunset.cim.server.model.Message; public class MessageDispatcher { private static BlockingQueue queue = new LinkedBlockingQueue(); private static ThreadPoolExecutor executor = new ThreadPoolExecutor(3, 5, 20, TimeUnit.SECONDS,queue);; - final static String sendUrl = "http://%1$s:8080/ichat-servier/cgi/message_send.api"; + final static String sendUrl = "http://%1$s:8080/cim-servier/cgi/message_send.api"; public static void execute(final Message msg,final String ip) { diff --git a/cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/common/util/StringUtil.java b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/util/StringUtil.java similarity index 95% rename from cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/common/util/StringUtil.java rename to cim_for_mina/cim-server/src/main/java/com/farsunset/cim/util/StringUtil.java index 68e38f8..82fb185 100644 --- a/cim_for_mina/ichat-server/src/main/java/com/farsunset/ichat/common/util/StringUtil.java +++ b/cim_for_mina/cim-server/src/main/java/com/farsunset/cim/util/StringUtil.java @@ -1,4 +1,4 @@ -package com.farsunset.ichat.common.util; +package com.farsunset.cim.util; import java.text.SimpleDateFormat; import java.util.Date; diff --git a/cim_for_mina/ichat-server/src/main/resource/log4j.properties b/cim_for_mina/cim-server/src/main/resource/log4j.properties similarity index 100% rename from cim_for_mina/ichat-server/src/main/resource/log4j.properties rename to cim_for_mina/cim-server/src/main/resource/log4j.properties diff --git a/cim_for_mina/cim-server/src/main/resource/spring-cim.xml b/cim_for_mina/cim-server/src/main/resource/spring-cim.xml new file mode 100644 index 0000000..8676e13 --- /dev/null +++ b/cim_for_mina/cim-server/src/main/resource/spring-cim.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cim_for_mina/ichat-server/src/main/resource/spring-config.xml b/cim_for_mina/cim-server/src/main/resource/spring-config.xml similarity index 87% rename from cim_for_mina/ichat-server/src/main/resource/spring-config.xml rename to cim_for_mina/cim-server/src/main/resource/spring-config.xml index b24013a..de92bdb 100644 --- a/cim_for_mina/ichat-server/src/main/resource/spring-config.xml +++ b/cim_for_mina/cim-server/src/main/resource/spring-config.xml @@ -12,5 +12,5 @@ http://www.springframework.org/schema/aop/spring-aop-2.5.xsd " > - + \ No newline at end of file diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/classes/spring-push.xml b/cim_for_mina/cim-server/src/main/resource/spring-push.xml similarity index 67% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/classes/spring-push.xml rename to cim_for_mina/cim-server/src/main/resource/spring-push.xml index 6b21240..d4eab02 100644 --- a/cim_for_mina/ichat-server/WebRoot/WEB-INF/classes/spring-push.xml +++ b/cim_for_mina/cim-server/src/main/resource/spring-push.xml @@ -13,11 +13,11 @@ " > - - + + - - + + \ No newline at end of file diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/classes/struts.xml b/cim_for_mina/cim-server/src/main/resource/struts.xml similarity index 79% rename from cim_for_mina/ichat-server/WebRoot/WEB-INF/classes/struts.xml rename to cim_for_mina/cim-server/src/main/resource/struts.xml index 7dd0e3d..f8f7936 100644 --- a/cim_for_mina/ichat-server/WebRoot/WEB-INF/classes/struts.xml +++ b/cim_for_mina/cim-server/src/main/resource/struts.xml @@ -10,12 +10,12 @@ - + /console/session/manage.jsp - + \ No newline at end of file diff --git a/cim_for_mina/mchat-simple/.classpath b/cim_for_mina/client-mchat-android/.classpath similarity index 100% rename from cim_for_mina/mchat-simple/.classpath rename to cim_for_mina/client-mchat-android/.classpath diff --git a/cim_for_mina/mchat-simple/.project b/cim_for_mina/client-mchat-android/.project similarity index 95% rename from cim_for_mina/mchat-simple/.project rename to cim_for_mina/client-mchat-android/.project index 13800fd..71b77c4 100644 --- a/cim_for_mina/mchat-simple/.project +++ b/cim_for_mina/client-mchat-android/.project @@ -1,6 +1,6 @@ - mchat-simple + client-mchat-android diff --git a/cim_for_mina/mchat-simple/.settings/org.eclipse.core.resources.prefs b/cim_for_mina/client-mchat-android/.settings/org.eclipse.core.resources.prefs similarity index 100% rename from cim_for_mina/mchat-simple/.settings/org.eclipse.core.resources.prefs rename to cim_for_mina/client-mchat-android/.settings/org.eclipse.core.resources.prefs diff --git a/cim_for_mina/client-mchat-android/.settings/org.eclipse.jdt.core.prefs b/cim_for_mina/client-mchat-android/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..b080d2d --- /dev/null +++ b/cim_for_mina/client-mchat-android/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.source=1.6 diff --git a/cim_for_mina/mchat-simple/AndroidManifest.xml b/cim_for_mina/client-mchat-android/AndroidManifest.xml similarity index 83% rename from cim_for_mina/mchat-simple/AndroidManifest.xml rename to cim_for_mina/client-mchat-android/AndroidManifest.xml index 6372521..fb2395f 100644 --- a/cim_for_mina/mchat-simple/AndroidManifest.xml +++ b/cim_for_mina/client-mchat-android/AndroidManifest.xml @@ -1,8 +1,8 @@ + android:versionCode="2" + android:versionName="2.0.0" > @@ -12,8 +12,8 @@ + android:minSdkVersion="10" + android:targetSdkVersion="19" /> - - - + + - + @@ -67,7 +66,12 @@ - + + + + + + diff --git a/cim_for_mina/mchat-simple/libs/android-support-v4.jar b/cim_for_mina/client-mchat-android/libs/android-support-v4.jar similarity index 100% rename from cim_for_mina/mchat-simple/libs/android-support-v4.jar rename to cim_for_mina/client-mchat-android/libs/android-support-v4.jar diff --git a/cim_for_mina/client-mchat-android/libs/cim-android-sdk-2.0.jar b/cim_for_mina/client-mchat-android/libs/cim-android-sdk-2.0.jar new file mode 100644 index 0000000..09177d3 Binary files /dev/null and b/cim_for_mina/client-mchat-android/libs/cim-android-sdk-2.0.jar differ diff --git a/cim_for_mina/mchat-simple/libs/fastjson-1.1.34.android.jar b/cim_for_mina/client-mchat-android/libs/fastjson-1.1.34.android.jar similarity index 100% rename from cim_for_mina/mchat-simple/libs/fastjson-1.1.34.android.jar rename to cim_for_mina/client-mchat-android/libs/fastjson-1.1.34.android.jar diff --git a/cim_for_mina/mchat-simple/libs/httpmime-4.1.1.jar b/cim_for_mina/client-mchat-android/libs/httpmime-4.1.1.jar similarity index 100% rename from cim_for_mina/mchat-simple/libs/httpmime-4.1.1.jar rename to cim_for_mina/client-mchat-android/libs/httpmime-4.1.1.jar diff --git a/cim_for_mina/client-mchat-android/libs/mina-core-2.0.9.jar b/cim_for_mina/client-mchat-android/libs/mina-core-2.0.9.jar new file mode 100644 index 0000000..be1746c Binary files /dev/null and b/cim_for_mina/client-mchat-android/libs/mina-core-2.0.9.jar differ diff --git a/cim_for_mina/mchat-simple/libs/slf4j-api-1.7.5.jar b/cim_for_mina/client-mchat-android/libs/slf4j-api-1.7.5.jar similarity index 100% rename from cim_for_mina/mchat-simple/libs/slf4j-api-1.7.5.jar rename to cim_for_mina/client-mchat-android/libs/slf4j-api-1.7.5.jar diff --git a/cim_for_mina/mchat-simple/libs/slf4j-nop-1.7.5.jar b/cim_for_mina/client-mchat-android/libs/slf4j-nop-1.7.5.jar similarity index 100% rename from cim_for_mina/mchat-simple/libs/slf4j-nop-1.7.5.jar rename to cim_for_mina/client-mchat-android/libs/slf4j-nop-1.7.5.jar diff --git a/cim_for_mina/mchat-simple/lint.xml b/cim_for_mina/client-mchat-android/lint.xml similarity index 100% rename from cim_for_mina/mchat-simple/lint.xml rename to cim_for_mina/client-mchat-android/lint.xml diff --git a/cim_for_mina/mchat-simple/proguard.cfg b/cim_for_mina/client-mchat-android/proguard.cfg similarity index 100% rename from cim_for_mina/mchat-simple/proguard.cfg rename to cim_for_mina/client-mchat-android/proguard.cfg diff --git a/cim_for_mina/mchat-simple/project.properties b/cim_for_mina/client-mchat-android/project.properties similarity index 100% rename from cim_for_mina/mchat-simple/project.properties rename to cim_for_mina/client-mchat-android/project.properties diff --git a/cim_for_mina/mchat-simple/res/anim/activity_back.xml b/cim_for_mina/client-mchat-android/res/anim/activity_back.xml similarity index 100% rename from cim_for_mina/mchat-simple/res/anim/activity_back.xml rename to cim_for_mina/client-mchat-android/res/anim/activity_back.xml diff --git a/cim_for_mina/mchat-simple/res/anim/activity_finish.xml b/cim_for_mina/client-mchat-android/res/anim/activity_finish.xml similarity index 100% rename from cim_for_mina/mchat-simple/res/anim/activity_finish.xml rename to cim_for_mina/client-mchat-android/res/anim/activity_finish.xml diff --git a/cim_for_mina/mchat-simple/res/anim/activity_new.xml b/cim_for_mina/client-mchat-android/res/anim/activity_new.xml similarity index 100% rename from cim_for_mina/mchat-simple/res/anim/activity_new.xml rename to cim_for_mina/client-mchat-android/res/anim/activity_new.xml diff --git a/cim_for_mina/mchat-simple/res/anim/activity_out.xml b/cim_for_mina/client-mchat-android/res/anim/activity_out.xml similarity index 100% rename from cim_for_mina/mchat-simple/res/anim/activity_out.xml rename to cim_for_mina/client-mchat-android/res/anim/activity_out.xml diff --git a/cim_for_mina/mchat-simple/res/anim/appear.xml b/cim_for_mina/client-mchat-android/res/anim/appear.xml similarity index 100% rename from cim_for_mina/mchat-simple/res/anim/appear.xml rename to cim_for_mina/client-mchat-android/res/anim/appear.xml diff --git a/cim_for_mina/mchat-simple/res/anim/disappear.xml b/cim_for_mina/client-mchat-android/res/anim/disappear.xml similarity index 100% rename from cim_for_mina/mchat-simple/res/anim/disappear.xml rename to cim_for_mina/client-mchat-android/res/anim/disappear.xml diff --git a/cim_for_mina/mchat-simple/res/anim/disappear_del.xml b/cim_for_mina/client-mchat-android/res/anim/disappear_del.xml similarity index 100% rename from cim_for_mina/mchat-simple/res/anim/disappear_del.xml rename to cim_for_mina/client-mchat-android/res/anim/disappear_del.xml diff --git a/cim_for_mina/mchat-simple/res/anim/extension_appear_from_bottom_to_top.xml b/cim_for_mina/client-mchat-android/res/anim/extension_appear_from_bottom_to_top.xml similarity index 100% rename from cim_for_mina/mchat-simple/res/anim/extension_appear_from_bottom_to_top.xml rename to cim_for_mina/client-mchat-android/res/anim/extension_appear_from_bottom_to_top.xml diff --git a/cim_for_mina/mchat-simple/res/anim/extension_disappear_from_top_to_bottom.xml b/cim_for_mina/client-mchat-android/res/anim/extension_disappear_from_top_to_bottom.xml similarity index 100% rename from cim_for_mina/mchat-simple/res/anim/extension_disappear_from_top_to_bottom.xml rename to cim_for_mina/client-mchat-android/res/anim/extension_disappear_from_top_to_bottom.xml diff --git a/cim_for_mina/mchat-simple/res/anim/rotate.xml b/cim_for_mina/client-mchat-android/res/anim/rotate.xml similarity index 100% rename from cim_for_mina/mchat-simple/res/anim/rotate.xml rename to cim_for_mina/client-mchat-android/res/anim/rotate.xml diff --git a/cim_for_mina/mchat-simple/res/anim/slide_in_from_bottom.xml b/cim_for_mina/client-mchat-android/res/anim/slide_in_from_bottom.xml similarity index 100% rename from cim_for_mina/mchat-simple/res/anim/slide_in_from_bottom.xml rename to cim_for_mina/client-mchat-android/res/anim/slide_in_from_bottom.xml diff --git a/cim_for_mina/mchat-simple/res/anim/slide_in_from_left.xml b/cim_for_mina/client-mchat-android/res/anim/slide_in_from_left.xml similarity index 100% rename from cim_for_mina/mchat-simple/res/anim/slide_in_from_left.xml rename to cim_for_mina/client-mchat-android/res/anim/slide_in_from_left.xml diff --git a/cim_for_mina/mchat-simple/res/anim/slide_out_to_bottom.xml b/cim_for_mina/client-mchat-android/res/anim/slide_out_to_bottom.xml similarity index 100% rename from cim_for_mina/mchat-simple/res/anim/slide_out_to_bottom.xml rename to cim_for_mina/client-mchat-android/res/anim/slide_out_to_bottom.xml diff --git a/cim_for_mina/mchat-simple/res/anim/slide_out_to_right.xml b/cim_for_mina/client-mchat-android/res/anim/slide_out_to_right.xml similarity index 100% rename from cim_for_mina/mchat-simple/res/anim/slide_out_to_right.xml rename to cim_for_mina/client-mchat-android/res/anim/slide_out_to_right.xml diff --git a/cim_for_mina/mchat-simple/res/color/login_text_button_selector.xml b/cim_for_mina/client-mchat-android/res/color/login_text_button_selector.xml similarity index 100% rename from cim_for_mina/mchat-simple/res/color/login_text_button_selector.xml rename to cim_for_mina/client-mchat-android/res/color/login_text_button_selector.xml diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/action_sheet_base_9.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/action_sheet_base_9.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/action_sheet_base_9.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/action_sheet_base_9.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/add_contacts_create_troop.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/add_contacts_create_troop.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/add_contacts_create_troop.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/add_contacts_create_troop.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/add_contacts_look_for_similarity.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/add_contacts_look_for_similarity.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/add_contacts_look_for_similarity.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/add_contacts_look_for_similarity.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/add_contacts_look_for_troop.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/add_contacts_look_for_troop.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/add_contacts_look_for_troop.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/add_contacts_look_for_troop.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/aio_friend_bg_nor.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/aio_friend_bg_nor.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/aio_friend_bg_nor.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/aio_friend_bg_nor.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/aio_friend_bg_pressed.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/aio_friend_bg_pressed.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/aio_friend_bg_pressed.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/aio_friend_bg_pressed.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/aio_user_bg_nor.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/aio_user_bg_nor.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/aio_user_bg_nor.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/aio_user_bg_nor.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/aio_user_bg_pressed.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/aio_user_bg_pressed.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/aio_user_bg_pressed.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/aio_user_bg_pressed.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/card_avatar.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/card_avatar.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/card_avatar.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/card_avatar.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/chat_tool_camera.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/chat_tool_camera.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/chat_tool_camera.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/chat_tool_camera.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/chat_tool_location.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/chat_tool_location.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/chat_tool_location.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/chat_tool_location.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/chat_tool_photo.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/chat_tool_photo.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/chat_tool_photo.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/chat_tool_photo.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/chat_tool_send_file.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/chat_tool_send_file.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/chat_tool_send_file.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/chat_tool_send_file.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/common_loading_0.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/common_loading_0.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/common_loading_0.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/common_loading_0.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/common_loading_1.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/common_loading_1.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/common_loading_1.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/common_loading_1.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/common_loading_10.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/common_loading_10.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/common_loading_10.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/common_loading_10.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/common_loading_11.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/common_loading_11.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/common_loading_11.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/common_loading_11.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/common_loading_2.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/common_loading_2.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/common_loading_2.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/common_loading_2.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/common_loading_3.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/common_loading_3.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/common_loading_3.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/common_loading_3.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/common_loading_4.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/common_loading_4.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/common_loading_4.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/common_loading_4.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/common_loading_5.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/common_loading_5.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/common_loading_5.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/common_loading_5.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/common_loading_6.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/common_loading_6.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/common_loading_6.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/common_loading_6.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/common_loading_7.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/common_loading_7.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/common_loading_7.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/common_loading_7.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/common_loading_8.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/common_loading_8.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/common_loading_8.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/common_loading_8.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/common_loading_9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/common_loading_9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/common_loading_9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/common_loading_9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/ic_date_time.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/ic_date_time.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/ic_date_time.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/ic_date_time.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/ic_read.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/ic_read.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/ic_read.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/ic_read.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/icon_addfriend.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/icon_addfriend.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/icon_addfriend.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/icon_addfriend.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/icon_face_click.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/icon_face_click.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/icon_face_click.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/icon_face_click.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/icon_face_nor.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/icon_face_nor.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/icon_face_nor.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/icon_face_nor.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/icon_joinfroup.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/icon_joinfroup.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/icon_joinfroup.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/icon_joinfroup.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/icon_more.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/icon_more.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/icon_more.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/icon_more.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/icon_recent_sysmsg.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/icon_recent_sysmsg.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/icon_recent_sysmsg.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/icon_recent_sysmsg.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/input_box_bg.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/input_box_bg.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/input_box_bg.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/input_box_bg.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/list_head_border_whitebg.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/list_head_border_whitebg.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/list_head_border_whitebg.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/list_head_border_whitebg.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/login_default_avatar.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/login_default_avatar.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/login_default_avatar.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/login_default_avatar.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/mchat_navbar_tab_m_normal.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/mchat_navbar_tab_m_normal.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/mchat_navbar_tab_m_normal.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/mchat_navbar_tab_m_normal.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/mchat_navbar_tab_m_pressed.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/mchat_navbar_tab_m_pressed.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/mchat_navbar_tab_m_pressed.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/mchat_navbar_tab_m_pressed.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/profile_photowall_avatar_frame_nor.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/profile_photowall_avatar_frame_nor.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/profile_photowall_avatar_frame_nor.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/profile_photowall_avatar_frame_nor.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/profile_photowall_bg_female.jpg b/cim_for_mina/client-mchat-android/res/drawable-320dpi/profile_photowall_bg_female.jpg similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/profile_photowall_bg_female.jpg rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/profile_photowall_bg_female.jpg diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/profile_photowall_bg_male.jpg b/cim_for_mina/client-mchat-android/res/drawable-320dpi/profile_photowall_bg_male.jpg similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/profile_photowall_bg_male.jpg rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/profile_photowall_bg_male.jpg diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_aio_input_bar_bg.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_aio_input_bar_bg.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_aio_input_bar_bg.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_aio_input_bar_bg.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_aio_more_nor.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_aio_more_nor.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_aio_more_nor.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_aio_more_nor.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_aio_more_pressed.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_aio_more_pressed.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_aio_more_pressed.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_aio_more_pressed.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_aio_send_button_normal.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_aio_send_button_normal.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_aio_send_button_normal.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_aio_send_button_normal.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_aio_send_button_pressed.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_aio_send_button_pressed.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_aio_send_button_pressed.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_aio_send_button_pressed.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_bottom_bar_background.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_bottom_bar_background.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_bottom_bar_background.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_bottom_bar_background.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_common_btn_blue_bg_pressed.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_common_btn_blue_bg_pressed.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_common_btn_blue_bg_pressed.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_common_btn_blue_bg_pressed.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_common_btn_blue_unpressed.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_common_btn_blue_unpressed.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_common_btn_blue_unpressed.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_common_btn_blue_unpressed.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_common_btn_green_disable.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_common_btn_green_disable.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_common_btn_green_disable.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_common_btn_green_disable.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_common_btn_green_normal.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_common_btn_green_normal.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_common_btn_green_normal.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_common_btn_green_normal.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_common_btn_green_pressed.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_common_btn_green_pressed.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_common_btn_green_pressed.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_common_btn_green_pressed.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_common_btn_red_disabled.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_common_btn_red_disabled.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_common_btn_red_disabled.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_common_btn_red_disabled.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_common_btn_red_pressed.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_common_btn_red_pressed.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_common_btn_red_pressed.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_common_btn_red_pressed.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_common_btn_red_unpressed.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_common_btn_red_unpressed.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_common_btn_red_unpressed.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_common_btn_red_unpressed.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_common_btn_white_disabled.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_common_btn_white_disabled.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_common_btn_white_disabled.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_common_btn_white_disabled.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_common_btn_white_pressed.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_common_btn_white_pressed.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_common_btn_white_pressed.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_common_btn_white_pressed.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_common_btn_white_unpressed.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_common_btn_white_unpressed.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_common_btn_white_unpressed.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_common_btn_white_unpressed.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_contact_add_btn_normal.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_contact_add_btn_normal.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_contact_add_btn_normal.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_contact_add_btn_normal.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_contact_add_btn_press.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_contact_add_btn_press.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_contact_add_btn_press.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_contact_add_btn_press.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_header_bar_bg.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_header_bar_bg.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_header_bar_bg.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_header_bar_bg.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_header_btn_back_normal.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_header_btn_back_normal.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_header_btn_back_normal.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_header_btn_back_normal.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_header_btn_back_press.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_header_btn_back_press.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_header_btn_back_press.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_header_btn_back_press.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_header_btn_disable.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_header_btn_disable.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_header_btn_disable.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_header_btn_disable.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_header_btn_indicative_normal.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_header_btn_indicative_normal.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_header_btn_indicative_normal.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_header_btn_indicative_normal.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_header_btn_indicative_press.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_header_btn_indicative_press.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_header_btn_indicative_press.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_header_btn_indicative_press.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_header_btn_normal.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_header_btn_normal.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_header_btn_normal.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_header_btn_normal.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_header_btn_press.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_header_btn_press.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_header_btn_press.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_header_btn_press.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_header_icon_group.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_header_icon_group.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_header_icon_group.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_header_icon_group.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_header_icon_single.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_header_icon_single.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_header_icon_single.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_header_icon_single.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_header_tab_left_normal.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_header_tab_left_normal.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_header_tab_left_normal.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_header_tab_left_normal.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_header_tab_left_pressed.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_header_tab_left_pressed.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_header_tab_left_pressed.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_header_tab_left_pressed.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_header_tab_right_normal.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_header_tab_right_normal.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_header_tab_right_normal.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_header_tab_right_normal.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_header_tab_right_pressed.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_header_tab_right_pressed.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_header_tab_right_pressed.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_header_tab_right_pressed.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_tab_icon_contact_normal.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_tab_icon_contact_normal.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_tab_icon_contact_normal.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_tab_icon_contact_normal.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_tab_icon_contact_selected.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_tab_icon_contact_selected.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_tab_icon_contact_selected.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_tab_icon_contact_selected.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_tab_icon_conversation_normal.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_tab_icon_conversation_normal.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_tab_icon_conversation_normal.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_tab_icon_conversation_normal.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_tab_icon_conversation_selected.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_tab_icon_conversation_selected.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_tab_icon_conversation_selected.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_tab_icon_conversation_selected.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_tab_icon_plugin_normal.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_tab_icon_plugin_normal.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_tab_icon_plugin_normal.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_tab_icon_plugin_normal.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_tab_icon_plugin_selected.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_tab_icon_plugin_selected.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_tab_icon_plugin_selected.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_tab_icon_plugin_selected.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_tab_icon_setup_normal.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_tab_icon_setup_normal.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_tab_icon_setup_normal.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_tab_icon_setup_normal.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_tab_icon_setup_selected.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_tab_icon_setup_selected.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_tab_icon_setup_selected.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_tab_icon_setup_selected.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_tab_newmessage.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_tab_newmessage.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_tab_newmessage.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_tab_newmessage.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_tab_newmessage2.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_tab_newmessage2.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_tab_newmessage2.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_tab_newmessage2.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_tabbar_tab_select.9.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_tabbar_tab_select.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_tabbar_tab_select.9.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_tabbar_tab_select.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_tabbar_tab_select_left.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_tabbar_tab_select_left.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_tabbar_tab_select_left.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_tabbar_tab_select_left.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/skin_tabbar_tab_select_right.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_tabbar_tab_select_right.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/skin_tabbar_tab_select_right.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/skin_tabbar_tab_select_right.png diff --git a/cim_for_mina/mchat-simple/res/drawable-320dpi/tab_new.png b/cim_for_mina/client-mchat-android/res/drawable-320dpi/tab_new.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-320dpi/tab_new.png rename to cim_for_mina/client-mchat-android/res/drawable-320dpi/tab_new.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/aicon_error.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/aicon_error.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/aicon_error.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/aicon_error.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/app_main_bg.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/app_main_bg.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/app_main_bg.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/app_main_bg.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/arrow.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/arrow.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/arrow.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/arrow.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/blue_button_normal.9.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/blue_button_normal.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/blue_button_normal.9.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/blue_button_normal.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/blue_button_pressed.9.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/blue_button_pressed.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/blue_button_pressed.9.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/blue_button_pressed.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/bodylisttop.9.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/bodylisttop.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/bodylisttop.9.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/bodylisttop.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/bottom.9.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/bottom.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/bottom.9.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/bottom.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/btn_check_off.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/btn_check_off.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/btn_check_off.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/btn_check_off.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/btn_check_on.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/btn_check_on.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/btn_check_on.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/btn_check_on.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/chat_time_block.9.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/chat_time_block.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/chat_time_block.9.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/chat_time_block.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/close_del.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/close_del.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/close_del.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/close_del.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/close_pressed.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/close_pressed.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/close_pressed.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/close_pressed.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/colorful_line.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/colorful_line.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/colorful_line.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/colorful_line.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/conversation_loading_icon.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/conversation_loading_icon.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/conversation_loading_icon.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/conversation_loading_icon.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/conversation_net_error_icon.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/conversation_net_error_icon.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/conversation_net_error_icon.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/conversation_net_error_icon.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/cutline.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/cutline.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/cutline.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/cutline.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/edittext_bg.9.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/edittext_bg.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/edittext_bg.9.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/edittext_bg.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f000.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f000.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f000.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f000.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f001.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f001.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f001.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f001.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f002.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f002.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f002.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f002.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f003.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f003.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f003.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f003.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f004.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f004.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f004.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f004.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f005.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f005.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f005.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f005.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f006.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f006.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f006.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f006.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f007.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f007.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f007.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f007.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f008.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f008.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f008.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f008.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f009.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f009.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f009.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f009.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f010.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f010.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f010.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f010.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f011.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f011.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f011.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f011.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f012.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f012.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f012.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f012.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f013.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f013.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f013.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f013.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f014.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f014.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f014.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f014.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f015.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f015.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f015.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f015.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f016.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f016.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f016.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f016.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f017.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f017.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f017.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f017.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f018.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f018.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f018.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f018.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f019.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f019.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f019.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f019.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f020.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f020.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f020.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f020.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f021.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f021.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f021.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f021.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f022.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f022.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f022.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f022.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f023.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f023.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f023.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f023.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f024.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f024.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f024.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f024.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f025.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f025.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f025.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f025.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f026.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f026.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f026.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f026.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f027.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f027.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f027.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f027.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f028.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f028.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f028.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f028.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f029.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f029.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f029.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f029.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f030.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f030.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f030.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f030.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f031.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f031.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f031.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f031.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f032.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f032.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f032.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f032.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f033.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f033.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f033.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f033.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f034.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f034.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f034.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f034.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f035.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f035.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f035.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f035.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f036.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f036.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f036.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f036.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f037.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f037.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f037.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f037.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f038.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f038.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f038.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f038.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f039.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f039.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f039.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f039.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f040.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f040.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f040.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f040.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f041.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f041.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f041.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f041.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f042.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f042.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f042.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f042.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f043.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f043.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f043.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f043.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f044.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f044.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f044.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f044.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f045.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f045.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f045.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f045.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f046.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f046.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f046.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f046.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f047.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f047.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f047.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f047.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f048.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f048.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f048.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f048.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f049.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f049.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f049.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f049.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f050.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f050.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f050.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f050.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f051.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f051.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f051.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f051.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f052.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f052.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f052.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f052.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f053.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f053.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f053.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f053.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f054.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f054.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f054.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f054.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f055.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f055.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f055.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f055.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f056.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f056.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f056.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f056.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f057.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f057.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f057.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f057.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f058.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f058.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f058.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f058.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f059.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f059.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f059.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f059.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f060.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f060.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f060.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f060.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f061.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f061.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f061.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f061.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f062.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f062.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f062.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f062.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f063.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f063.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f063.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f063.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f064.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f064.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f064.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f064.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f065.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f065.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f065.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f065.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f066.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f066.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f066.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f066.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f067.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f067.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f067.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f067.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f068.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f068.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f068.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f068.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f069.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f069.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f069.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f069.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f070.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f070.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f070.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f070.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f071.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f071.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f071.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f071.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f072.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f072.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f072.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f072.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f073.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f073.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f073.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f073.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f074.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f074.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f074.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f074.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f075.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f075.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f075.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f075.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f076.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f076.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f076.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f076.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f077.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f077.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f077.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f077.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f078.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f078.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f078.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f078.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f079.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f079.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f079.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f079.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f080.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f080.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f080.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f080.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f081.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f081.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f081.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f081.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f082.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f082.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f082.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f082.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f083.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f083.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f083.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f083.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f084.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f084.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f084.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f084.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f085.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f085.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f085.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f085.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f086.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f086.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f086.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f086.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f087.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f087.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f087.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f087.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f088.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f088.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f088.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f088.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f089.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f089.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f089.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f089.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f090.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f090.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f090.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f090.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f091.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f091.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f091.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f091.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f092.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f092.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f092.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f092.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f093.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f093.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f093.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f093.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f094.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f094.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f094.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f094.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f095.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f095.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f095.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f095.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f096.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f096.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f096.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f096.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f097.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f097.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f097.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f097.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f098.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f098.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f098.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f098.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f099.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f099.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f099.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f099.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f100.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f100.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f100.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f100.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f101.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f101.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f101.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f101.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f102.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f102.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f102.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f102.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f103.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f103.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f103.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f103.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f104.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f104.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f104.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f104.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f105.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f105.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f105.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f105.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f106.gif b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f106.gif similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f106.gif rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f106.gif diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_000.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_000.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_000.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_000.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_001.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_001.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_001.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_001.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_002.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_002.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_002.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_002.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_003.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_003.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_003.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_003.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_004.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_004.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_004.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_004.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_005.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_005.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_005.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_005.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_006.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_006.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_006.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_006.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_007.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_007.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_007.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_007.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_008.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_008.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_008.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_008.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_009.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_009.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_009.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_009.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_010.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_010.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_010.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_010.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_011.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_011.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_011.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_011.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_012.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_012.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_012.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_012.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_013.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_013.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_013.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_013.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_014.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_014.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_014.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_014.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_015.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_015.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_015.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_015.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_016.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_016.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_016.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_016.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_017.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_017.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_017.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_017.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_018.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_018.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_018.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_018.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_019.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_019.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_019.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_019.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_020.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_020.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_020.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_020.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_021.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_021.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_021.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_021.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_022.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_022.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_022.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_022.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_023.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_023.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_023.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_023.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_024.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_024.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_024.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_024.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_025.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_025.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_025.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_025.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_026.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_026.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_026.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_026.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_027.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_027.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_027.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_027.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_028.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_028.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_028.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_028.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_029.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_029.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_029.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_029.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_030.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_030.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_030.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_030.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_031.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_031.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_031.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_031.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_032.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_032.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_032.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_032.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_033.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_033.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_033.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_033.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_034.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_034.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_034.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_034.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_035.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_035.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_035.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_035.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_036.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_036.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_036.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_036.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_037.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_037.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_037.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_037.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_038.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_038.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_038.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_038.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_039.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_039.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_039.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_039.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_040.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_040.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_040.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_040.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_041.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_041.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_041.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_041.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_042.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_042.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_042.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_042.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_043.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_043.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_043.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_043.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_044.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_044.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_044.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_044.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_045.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_045.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_045.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_045.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_046.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_046.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_046.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_046.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_047.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_047.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_047.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_047.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_048.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_048.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_048.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_048.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_049.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_049.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_049.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_049.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_050.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_050.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_050.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_050.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_051.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_051.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_051.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_051.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_052.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_052.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_052.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_052.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_053.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_053.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_053.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_053.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_054.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_054.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_054.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_054.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_055.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_055.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_055.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_055.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_056.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_056.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_056.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_056.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_057.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_057.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_057.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_057.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_058.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_058.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_058.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_058.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_059.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_059.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_059.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_059.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_060.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_060.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_060.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_060.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_061.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_061.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_061.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_061.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_062.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_062.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_062.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_062.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_063.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_063.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_063.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_063.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_064.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_064.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_064.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_064.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_065.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_065.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_065.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_065.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_066.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_066.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_066.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_066.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_067.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_067.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_067.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_067.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_068.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_068.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_068.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_068.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_069.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_069.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_069.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_069.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_070.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_070.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_070.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_070.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_071.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_071.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_071.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_071.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_072.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_072.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_072.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_072.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_073.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_073.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_073.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_073.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_074.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_074.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_074.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_074.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_075.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_075.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_075.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_075.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_076.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_076.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_076.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_076.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_077.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_077.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_077.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_077.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_078.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_078.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_078.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_078.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_079.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_079.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_079.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_079.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_080.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_080.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_080.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_080.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_081.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_081.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_081.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_081.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_082.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_082.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_082.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_082.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_083.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_083.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_083.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_083.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_084.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_084.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_084.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_084.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_085.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_085.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_085.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_085.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_086.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_086.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_086.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_086.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_087.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_087.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_087.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_087.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_088.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_088.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_088.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_088.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_089.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_089.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_089.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_089.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_090.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_090.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_090.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_090.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_091.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_091.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_091.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_091.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_092.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_092.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_092.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_092.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_093.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_093.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_093.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_093.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_094.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_094.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_094.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_094.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_095.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_095.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_095.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_095.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_096.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_096.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_096.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_096.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_097.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_097.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_097.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_097.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_098.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_098.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_098.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_098.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_099.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_099.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_099.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_099.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_100.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_100.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_100.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_100.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_101.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_101.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_101.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_101.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_102.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_102.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_102.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_102.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_103.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_103.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_103.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_103.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_104.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_104.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_104.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_104.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_105.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_105.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_105.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_105.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_106.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_106.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/f_static_106.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/f_static_106.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/grouphead_normal.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/grouphead_normal.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/grouphead_normal.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/grouphead_normal.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/h033.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/h033.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/h033.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/h033.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/icon.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/icon.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/icon.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/icon.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/icon_away.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/icon_away.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/icon_away.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/icon_away.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/icon_error.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/icon_error.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/icon_error.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/icon_error.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/icon_invisiable.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/icon_invisiable.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/icon_invisiable.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/icon_invisiable.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/icon_logo.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/icon_logo.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/icon_logo.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/icon_logo.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/icon_normal.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/icon_normal.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/icon_normal.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/icon_normal.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/icon_notify.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/icon_notify.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/icon_notify.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/icon_notify.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/icon_offline.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/icon_offline.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/icon_offline.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/icon_offline.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/icon_online.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/icon_online.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/icon_online.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/icon_online.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/icon_share.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/icon_share.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/icon_share.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/icon_share.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/icon_success.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/icon_success.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/icon_success.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/icon_success.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/image_empty.jpg b/cim_for_mina/client-mchat-android/res/drawable-hdpi/image_empty.jpg similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/image_empty.jpg rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/image_empty.jpg diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/input.9.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/input.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/input.9.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/input.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/input_over.9.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/input_over.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/input_over.9.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/input_over.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/list_blockbg.9.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/list_blockbg.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/list_blockbg.9.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/list_blockbg.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/list_divider_line.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/list_divider_line.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/list_divider_line.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/list_divider_line.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/listitem_hover.9.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/listitem_hover.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/listitem_hover.9.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/listitem_hover.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/loading_1.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_1.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/loading_1.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_1.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/loading_10.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_10.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/loading_10.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_10.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/loading_11.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_11.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/loading_11.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_11.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/loading_12.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_12.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/loading_12.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_12.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/loading_13.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_13.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/loading_13.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_13.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/loading_14.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_14.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/loading_14.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_14.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/loading_15.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_15.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/loading_15.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_15.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/loading_16.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_16.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/loading_16.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_16.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/loading_17.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_17.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/loading_17.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_17.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/loading_18.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_18.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/loading_18.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_18.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/loading_19.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_19.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/loading_19.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_19.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/loading_2.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_2.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/loading_2.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_2.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/loading_20.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_20.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/loading_20.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_20.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/loading_21.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_21.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/loading_21.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_21.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/loading_22.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_22.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/loading_22.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_22.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/loading_23.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_23.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/loading_23.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_23.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/loading_24.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_24.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/loading_24.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_24.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/loading_3.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_3.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/loading_3.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_3.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/loading_4.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_4.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/loading_4.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_4.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/loading_5.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_5.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/loading_5.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_5.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/loading_6.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_6.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/loading_6.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_6.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/loading_7.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_7.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/loading_7.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_7.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/loading_8.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_8.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/loading_8.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_8.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/loading_9.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/loading_9.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/loading_bg.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_bg.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/loading_bg.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_bg.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/loading_coffee.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_coffee.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/loading_coffee.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/loading_coffee.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/login_bg.jpg b/cim_for_mina/client-mchat-android/res/drawable-hdpi/login_bg.jpg similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/login_bg.jpg rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/login_bg.jpg diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/login_input.9.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/login_input.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/login_input.9.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/login_input.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/message_hint.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/message_hint.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/message_hint.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/message_hint.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/msg_tips_bg_normal.9.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/msg_tips_bg_normal.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/msg_tips_bg_normal.9.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/msg_tips_bg_normal.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/msg_tips_bg_pressed.9.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/msg_tips_bg_pressed.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/msg_tips_bg_pressed.9.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/msg_tips_bg_pressed.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/narrow.9.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/narrow.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/narrow.9.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/narrow.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/narrow_select.9.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/narrow_select.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/narrow_select.9.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/narrow_select.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/scrollbar.9.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/scrollbar.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/scrollbar.9.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/scrollbar.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/set_list_bottom.9.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/set_list_bottom.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/set_list_bottom.9.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/set_list_bottom.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/set_list_bottom_pre.9.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/set_list_bottom_pre.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/set_list_bottom_pre.9.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/set_list_bottom_pre.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/set_list_middle.9.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/set_list_middle.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/set_list_middle.9.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/set_list_middle.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/set_list_middle_pre.9.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/set_list_middle_pre.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/set_list_middle_pre.9.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/set_list_middle_pre.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/set_list_single.9.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/set_list_single.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/set_list_single.9.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/set_list_single.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/set_list_single_pre.9.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/set_list_single_pre.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/set_list_single_pre.9.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/set_list_single_pre.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/set_list_top.9.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/set_list_top.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/set_list_top.9.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/set_list_top.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/set_list_top_pre.9.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/set_list_top_pre.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/set_list_top_pre.9.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/set_list_top_pre.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/show.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/show.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/show.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/show.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/skin_icon_arrow_right_normal.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/skin_icon_arrow_right_normal.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/skin_icon_arrow_right_normal.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/skin_icon_arrow_right_normal.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/skin_icon_arrow_right_pressed.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/skin_icon_arrow_right_pressed.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/skin_icon_arrow_right_pressed.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/skin_icon_arrow_right_pressed.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/skin_msgbox_bg_nor.9.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/skin_msgbox_bg_nor.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/skin_msgbox_bg_nor.9.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/skin_msgbox_bg_nor.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/skin_msgbox_bg_pressed.9.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/skin_msgbox_bg_pressed.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/skin_msgbox_bg_pressed.9.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/skin_msgbox_bg_pressed.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/skin_msgbox_bg_top.9.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/skin_msgbox_bg_top.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/skin_msgbox_bg_top.9.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/skin_msgbox_bg_top.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/splash_bg.jpg b/cim_for_mina/client-mchat-android/res/drawable-hdpi/splash_bg.jpg similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/splash_bg.jpg rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/splash_bg.jpg diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/success.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/success.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/success.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/success.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/tab2_normal.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/tab2_normal.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/tab2_normal.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/tab2_normal.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/tab2_over.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/tab2_over.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/tab2_over.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/tab2_over.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/tab3_normal.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/tab3_normal.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/tab3_normal.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/tab3_normal.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/tab3_over.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/tab3_over.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/tab3_over.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/tab3_over.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/table_arrow.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/table_arrow.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/table_arrow.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/table_arrow.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/toast_bg.9.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/toast_bg.9.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/toast_bg.9.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/toast_bg.9.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/topface_back.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/topface_back.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/topface_back.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/topface_back.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/troop_default_head_1.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/troop_default_head_1.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/troop_default_head_1.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/troop_default_head_1.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/troop_default_head_2.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/troop_default_head_2.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/troop_default_head_2.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/troop_default_head_2.png diff --git a/cim_for_mina/mchat-simple/res/drawable-hdpi/troop_default_head_3.png b/cim_for_mina/client-mchat-android/res/drawable-hdpi/troop_default_head_3.png similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable-hdpi/troop_default_head_3.png rename to cim_for_mina/client-mchat-android/res/drawable-hdpi/troop_default_head_3.png diff --git a/cim_for_mina/mchat-simple/res/drawable/common_button_blue.xml b/cim_for_mina/client-mchat-android/res/drawable/common_button_blue.xml similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable/common_button_blue.xml rename to cim_for_mina/client-mchat-android/res/drawable/common_button_blue.xml diff --git a/cim_for_mina/mchat-simple/res/drawable/common_msgbox_bg.xml b/cim_for_mina/client-mchat-android/res/drawable/common_msgbox_bg.xml similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable/common_msgbox_bg.xml rename to cim_for_mina/client-mchat-android/res/drawable/common_msgbox_bg.xml diff --git a/cim_for_mina/mchat-simple/res/drawable/top_back_left_selector.xml b/cim_for_mina/client-mchat-android/res/drawable/top_back_left_selector.xml similarity index 100% rename from cim_for_mina/mchat-simple/res/drawable/top_back_left_selector.xml rename to cim_for_mina/client-mchat-android/res/drawable/top_back_left_selector.xml diff --git a/cim_for_mina/mchat-simple/res/layout/activity_login.xml b/cim_for_mina/client-mchat-android/res/layout/activity_login.xml similarity index 100% rename from cim_for_mina/mchat-simple/res/layout/activity_login.xml rename to cim_for_mina/client-mchat-android/res/layout/activity_login.xml diff --git a/cim_for_mina/mchat-simple/res/layout/activity_splansh.xml b/cim_for_mina/client-mchat-android/res/layout/activity_splansh.xml similarity index 100% rename from cim_for_mina/mchat-simple/res/layout/activity_splansh.xml rename to cim_for_mina/client-mchat-android/res/layout/activity_splansh.xml diff --git a/cim_for_mina/mchat-simple/res/layout/activity_system_chat.xml b/cim_for_mina/client-mchat-android/res/layout/activity_system_chat.xml similarity index 65% rename from cim_for_mina/mchat-simple/res/layout/activity_system_chat.xml rename to cim_for_mina/client-mchat-android/res/layout/activity_system_chat.xml index ca20047..607b378 100644 --- a/cim_for_mina/mchat-simple/res/layout/activity_system_chat.xml +++ b/cim_for_mina/client-mchat-android/res/layout/activity_system_chat.xml @@ -1,5 +1,5 @@ - - + - \ No newline at end of file + \ No newline at end of file diff --git a/cim_for_mina/mchat-simple/res/layout/item_chat_sysmsg.xml b/cim_for_mina/client-mchat-android/res/layout/item_chat_sysmsg.xml similarity index 100% rename from cim_for_mina/mchat-simple/res/layout/item_chat_sysmsg.xml rename to cim_for_mina/client-mchat-android/res/layout/item_chat_sysmsg.xml diff --git a/cim_for_mina/mchat-simple/res/layout/layout_global_top_header.xml b/cim_for_mina/client-mchat-android/res/layout/layout_global_top_header.xml similarity index 100% rename from cim_for_mina/mchat-simple/res/layout/layout_global_top_header.xml rename to cim_for_mina/client-mchat-android/res/layout/layout_global_top_header.xml diff --git a/cim_for_mina/mchat-simple/res/raw/classic.mp3 b/cim_for_mina/client-mchat-android/res/raw/classic.mp3 similarity index 100% rename from cim_for_mina/mchat-simple/res/raw/classic.mp3 rename to cim_for_mina/client-mchat-android/res/raw/classic.mp3 diff --git a/cim_for_mina/mchat-simple/res/values/arrays.xml b/cim_for_mina/client-mchat-android/res/values/arrays.xml similarity index 100% rename from cim_for_mina/mchat-simple/res/values/arrays.xml rename to cim_for_mina/client-mchat-android/res/values/arrays.xml diff --git a/cim_for_mina/mchat-simple/res/values/attrs.xml b/cim_for_mina/client-mchat-android/res/values/attrs.xml similarity index 100% rename from cim_for_mina/mchat-simple/res/values/attrs.xml rename to cim_for_mina/client-mchat-android/res/values/attrs.xml diff --git a/cim_for_mina/mchat-simple/res/values/color.xml b/cim_for_mina/client-mchat-android/res/values/color.xml similarity index 100% rename from cim_for_mina/mchat-simple/res/values/color.xml rename to cim_for_mina/client-mchat-android/res/values/color.xml diff --git a/cim_for_mina/mchat-simple/res/values/dimens.xml b/cim_for_mina/client-mchat-android/res/values/dimens.xml similarity index 100% rename from cim_for_mina/mchat-simple/res/values/dimens.xml rename to cim_for_mina/client-mchat-android/res/values/dimens.xml diff --git a/cim_for_mina/mchat-simple/res/values/strings.xml b/cim_for_mina/client-mchat-android/res/values/strings.xml similarity index 100% rename from cim_for_mina/mchat-simple/res/values/strings.xml rename to cim_for_mina/client-mchat-android/res/values/strings.xml diff --git a/cim_for_mina/mchat-simple/res/values/styles.xml b/cim_for_mina/client-mchat-android/res/values/styles.xml similarity index 100% rename from cim_for_mina/mchat-simple/res/values/styles.xml rename to cim_for_mina/client-mchat-android/res/values/styles.xml diff --git a/cim_for_mina/mchat-simple/src/com/farsunset/ichat/example/adapter/MessageTimeDescComparator.java b/cim_for_mina/client-mchat-android/src/com/farsunset/ichat/example/adapter/MessageTimeDescComparator.java similarity index 85% rename from cim_for_mina/mchat-simple/src/com/farsunset/ichat/example/adapter/MessageTimeDescComparator.java rename to cim_for_mina/client-mchat-android/src/com/farsunset/ichat/example/adapter/MessageTimeDescComparator.java index 9fffdd0..ac1fc61 100644 --- a/cim_for_mina/mchat-simple/src/com/farsunset/ichat/example/adapter/MessageTimeDescComparator.java +++ b/cim_for_mina/client-mchat-android/src/com/farsunset/ichat/example/adapter/MessageTimeDescComparator.java @@ -2,7 +2,7 @@ package com.farsunset.ichat.example.adapter; import java.util.Comparator; -import com.farsunset.cim.nio.mutual.Message; +import com.farsunset.cim.client.model.Message; public class MessageTimeDescComparator implements Comparator{ diff --git a/cim_for_mina/mchat-simple/src/com/farsunset/ichat/example/adapter/SystemMsgListViewAdapter.java b/cim_for_mina/client-mchat-android/src/com/farsunset/ichat/example/adapter/SystemMsgListViewAdapter.java similarity index 97% rename from cim_for_mina/mchat-simple/src/com/farsunset/ichat/example/adapter/SystemMsgListViewAdapter.java rename to cim_for_mina/client-mchat-android/src/com/farsunset/ichat/example/adapter/SystemMsgListViewAdapter.java index 97aa182..2dd2872 100644 --- a/cim_for_mina/mchat-simple/src/com/farsunset/ichat/example/adapter/SystemMsgListViewAdapter.java +++ b/cim_for_mina/client-mchat-android/src/com/farsunset/ichat/example/adapter/SystemMsgListViewAdapter.java @@ -11,7 +11,7 @@ import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; -import com.farsunset.cim.nio.mutual.Message; +import com.farsunset.cim.client.model.Message; import com.farsunset.ichat.example.R; import com.farsunset.ichat.example.ui.SystemMessageActivity; diff --git a/cim_for_mina/mchat-simple/src/com/farsunset/ichat/example/app/CIMMonitorActivity.java b/cim_for_mina/client-mchat-android/src/com/farsunset/ichat/example/app/CIMMonitorActivity.java similarity index 85% rename from cim_for_mina/mchat-simple/src/com/farsunset/ichat/example/app/CIMMonitorActivity.java rename to cim_for_mina/client-mchat-android/src/com/farsunset/ichat/example/app/CIMMonitorActivity.java index 590e1e0..a3021e4 100644 --- a/cim_for_mina/mchat-simple/src/com/farsunset/ichat/example/app/CIMMonitorActivity.java +++ b/cim_for_mina/client-mchat-android/src/com/farsunset/ichat/example/app/CIMMonitorActivity.java @@ -6,12 +6,12 @@ import android.app.Activity; import android.net.NetworkInfo; import android.os.Bundle; +import com.farsunset.cim.client.android.CIMEventListener; import com.farsunset.cim.client.android.CIMListenerManager; -import com.farsunset.cim.client.android.OnCIMMessageListener; -import com.farsunset.cim.nio.mutual.Message; -import com.farsunset.cim.nio.mutual.ReplyBody; +import com.farsunset.cim.client.model.Message; +import com.farsunset.cim.client.model.ReplyBody; -public abstract class CIMMonitorActivity extends Activity implements OnCIMMessageListener{ +public abstract class CIMMonitorActivity extends Activity implements CIMEventListener{ CommonBaseControl commonBaseControl; @@ -61,14 +61,14 @@ public abstract class CIMMonitorActivity extends Activity implements OnCIMMess */ @Override - public void onConnectionClosed() {} + public void onCIMConnectionSucceed() {} /** * 连接服务端成功时回调 */ @Override - public void onConnectionSucceed() {} + public void onCIMConnectionClosed() {} @Override public void onConnectionStatus(boolean isConnected){} diff --git a/cim_for_mina/mchat-simple/src/com/farsunset/ichat/example/app/CommonBaseControl.java b/cim_for_mina/client-mchat-android/src/com/farsunset/ichat/example/app/CommonBaseControl.java similarity index 98% rename from cim_for_mina/mchat-simple/src/com/farsunset/ichat/example/app/CommonBaseControl.java rename to cim_for_mina/client-mchat-android/src/com/farsunset/ichat/example/app/CommonBaseControl.java index bbd38fe..87b872a 100644 --- a/cim_for_mina/mchat-simple/src/com/farsunset/ichat/example/app/CommonBaseControl.java +++ b/cim_for_mina/client-mchat-android/src/com/farsunset/ichat/example/app/CommonBaseControl.java @@ -26,7 +26,7 @@ public class CommonBaseControl { if(progressDialog==null) { - progressDialog = ProgressDialog.show(mMontent, title, message, true, false); + progressDialog = ProgressDialog.show(mMontent, title, message, true, true); }else if(progressDialog.isShowing()) { progressDialog.setTitle(title); diff --git a/cim_for_mina/mchat-simple/src/com/farsunset/ichat/example/app/Constant.java b/cim_for_mina/client-mchat-android/src/com/farsunset/ichat/example/app/Constant.java similarity index 78% rename from cim_for_mina/mchat-simple/src/com/farsunset/ichat/example/app/Constant.java rename to cim_for_mina/client-mchat-android/src/com/farsunset/ichat/example/app/Constant.java index a2f508f..af846e5 100644 --- a/cim_for_mina/mchat-simple/src/com/farsunset/ichat/example/app/Constant.java +++ b/cim_for_mina/client-mchat-android/src/com/farsunset/ichat/example/app/Constant.java @@ -11,10 +11,12 @@ package com.farsunset.ichat.example.app; */ public interface Constant { + //服务端IP地址 + public static final String CIM_SERVER_HOST = "192.168.2.3"; + //服务端web地址 - public static final String SERVER_URL = "http://10.0.0.127:8080/ichat-server"; - //服务端IP地址 - public static final String CIM_SERVER_HOST = "10.0.0.127"; + public static final String SERVER_URL = "http://"+CIM_SERVER_HOST+":8080/cim-server"; + //注意,这里的端口不是tomcat的端口,CIM端口在服务端spring-cim.xml中配置的,没改动就使用默认的23456 public static final int CIM_SERVER_PORT = 23456; diff --git a/cim_for_mina/mchat-simple/src/com/farsunset/ichat/example/network/HttpAPIRequester.java b/cim_for_mina/client-mchat-android/src/com/farsunset/ichat/example/network/HttpAPIRequester.java similarity index 100% rename from cim_for_mina/mchat-simple/src/com/farsunset/ichat/example/network/HttpAPIRequester.java rename to cim_for_mina/client-mchat-android/src/com/farsunset/ichat/example/network/HttpAPIRequester.java diff --git a/cim_for_mina/mchat-simple/src/com/farsunset/ichat/example/network/HttpAPIResponser.java b/cim_for_mina/client-mchat-android/src/com/farsunset/ichat/example/network/HttpAPIResponser.java similarity index 100% rename from cim_for_mina/mchat-simple/src/com/farsunset/ichat/example/network/HttpAPIResponser.java rename to cim_for_mina/client-mchat-android/src/com/farsunset/ichat/example/network/HttpAPIResponser.java diff --git a/cim_for_mina/mchat-simple/src/com/farsunset/ichat/example/network/Page.java b/cim_for_mina/client-mchat-android/src/com/farsunset/ichat/example/network/Page.java similarity index 100% rename from cim_for_mina/mchat-simple/src/com/farsunset/ichat/example/network/Page.java rename to cim_for_mina/client-mchat-android/src/com/farsunset/ichat/example/network/Page.java diff --git a/cim_for_mina/mchat-simple/src/com/farsunset/ichat/example/receiver/CustomCIMMessageReceiver.java b/cim_for_mina/client-mchat-android/src/com/farsunset/ichat/example/receiver/CustomCIMMessageReceiver.java similarity index 84% rename from cim_for_mina/mchat-simple/src/com/farsunset/ichat/example/receiver/CustomCIMMessageReceiver.java rename to cim_for_mina/client-mchat-android/src/com/farsunset/ichat/example/receiver/CustomCIMMessageReceiver.java index b4d0dba..4f5859c 100644 --- a/cim_for_mina/mchat-simple/src/com/farsunset/ichat/example/receiver/CustomCIMMessageReceiver.java +++ b/cim_for_mina/client-mchat-android/src/com/farsunset/ichat/example/receiver/CustomCIMMessageReceiver.java @@ -8,10 +8,11 @@ import android.content.Context; import android.content.Intent; import android.net.NetworkInfo; import android.util.Log; -import com.farsunset.cim.client.android.CIMEnventListenerReceiver; + +import com.farsunset.cim.client.android.CIMEventBroadcastReceiver; import com.farsunset.cim.client.android.CIMListenerManager; -import com.farsunset.cim.nio.mutual.Message; -import com.farsunset.cim.nio.mutual.ReplyBody; +import com.farsunset.cim.client.model.Message; +import com.farsunset.cim.client.model.ReplyBody; import com.farsunset.ichat.example.R; import com.farsunset.ichat.example.ui.SystemMessageActivity; @@ -20,7 +21,7 @@ import com.farsunset.ichat.example.ui.SystemMessageActivity; * @author 3979434 * */ -public final class CustomCIMMessageReceiver extends CIMEnventListenerReceiver { +public final class CustomCIMMessageReceiver extends CIMEventBroadcastReceiver { private NotificationManager notificationManager; @@ -28,7 +29,7 @@ public final class CustomCIMMessageReceiver extends CIMEnventListenerReceiver { //当收到消息时,会执行onMessageReceived,这里是消息第一入口 @Override - public void onMessageReceived(com.farsunset.cim.nio.mutual.Message message) { + public void onMessageReceived(com.farsunset.cim.client.model.Message message) { for (int index = 0 ;index - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/cim-core-1.6.jar b/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/cim-core-1.6.jar deleted file mode 100644 index 72401cc..0000000 Binary files a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/cim-core-1.6.jar and /dev/null differ diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/mina-core-2.0.7.jar b/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/mina-core-2.0.7.jar deleted file mode 100644 index e2fe618..0000000 Binary files a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/mina-core-2.0.7.jar and /dev/null differ diff --git a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/mina-integration-beans-2.0.0-RC1.jar b/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/mina-integration-beans-2.0.0-RC1.jar deleted file mode 100644 index d25dbbd..0000000 Binary files a/cim_for_mina/ichat-server/WebRoot/WEB-INF/lib/mina-integration-beans-2.0.0-RC1.jar and /dev/null differ diff --git a/cim_for_mina/ichat-server/src/main/resource/spring-cim.xml b/cim_for_mina/ichat-server/src/main/resource/spring-cim.xml deleted file mode 100644 index b1af340..0000000 --- a/cim_for_mina/ichat-server/src/main/resource/spring-cim.xml +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/cim_for_mina/mchat-simple/gen/com/farsunset/ichat/example/BuildConfig.java b/cim_for_mina/mchat-simple/gen/com/farsunset/ichat/example/BuildConfig.java deleted file mode 100644 index f60612a..0000000 --- a/cim_for_mina/mchat-simple/gen/com/farsunset/ichat/example/BuildConfig.java +++ /dev/null @@ -1,6 +0,0 @@ -/** Automatically generated file. DO NOT MODIFY */ -package com.farsunset.ichat.example; - -public final class BuildConfig { - public final static boolean DEBUG = true; -} \ No newline at end of file diff --git a/cim_for_mina/mchat-simple/gen/com/farsunset/ichat/example/R.java b/cim_for_mina/mchat-simple/gen/com/farsunset/ichat/example/R.java deleted file mode 100644 index 807bf56..0000000 --- a/cim_for_mina/mchat-simple/gen/com/farsunset/ichat/example/R.java +++ /dev/null @@ -1,947 +0,0 @@ -/* AUTO-GENERATED FILE. DO NOT MODIFY. - * - * This class was automatically generated by the - * aapt tool from the resource data it found. It - * should not be modified by hand. - */ - -package com.farsunset.ichat.example; - -public final class R { - public static final class anim { - public static final int activity_back=0x7f040000; - public static final int activity_finish=0x7f040001; - public static final int activity_new=0x7f040002; - public static final int activity_out=0x7f040003; - public static final int appear=0x7f040004; - public static final int disappear=0x7f040005; - public static final int disappear_del=0x7f040006; - public static final int extension_appear_from_bottom_to_top=0x7f040007; - public static final int extension_disappear_from_top_to_bottom=0x7f040008; - public static final int rotate=0x7f040009; - public static final int slide_in_from_bottom=0x7f04000a; - public static final int slide_in_from_left=0x7f04000b; - public static final int slide_out_to_bottom=0x7f04000c; - public static final int slide_out_to_right=0x7f04000d; - } - public static final class array { - public static final int emoticoKeys=0x7f060001; - public static final int emoticos=0x7f060000; - } - public static final class attr { - /**

May be a reference to another resource, in the form "@[+][package:]type:name" -or to a theme attribute in the form "?[package:][type:]name". -

May be a color value, in the form of "#rgb", "#argb", -"#rrggbb", or "#aarrggbb". - */ - public static final int firstButtonBackground=0x7f010000; - /**

May be a reference to another resource, in the form "@[+][package:]type:name" -or to a theme attribute in the form "?[package:][type:]name". -

May be a color value, in the form of "#rgb", "#argb", -"#rrggbb", or "#aarrggbb". - */ - public static final int lastButtonBackground=0x7f010001; - /**

May be a reference to another resource, in the form "@[+][package:]type:name" -or to a theme attribute in the form "?[package:][type:]name". -

May be a color value, in the form of "#rgb", "#argb", -"#rrggbb", or "#aarrggbb". - */ - public static final int middleButtonBackground=0x7f010002; - /**

May be a reference to another resource, in the form "@[+][package:]type:name" -or to a theme attribute in the form "?[package:][type:]name". -

May be a color value, in the form of "#rgb", "#argb", -"#rrggbb", or "#aarrggbb". - */ - public static final int uniqueButtonBackground=0x7f010003; - } - public static final class color { - public static final int alpha=0x7f070010; - public static final int black=0x7f070005; - public static final int blue=0x7f070002; - public static final int chat_myself=0x7f070011; - public static final int chat_other=0x7f070012; - public static final int darkgray=0x7f07000f; - public static final int gray=0x7f070004; - public static final int gray_blue=0x7f07000e; - public static final int green=0x7f070003; - public static final int light_white=0x7f070008; - public static final int login_text_button_selector=0x7f070013; - public static final int orange=0x7f070000; - public static final int red=0x7f070006; - public static final int theme_night_bg=0x7f07000b; - public static final int theme_night_text_color=0x7f07000c; - public static final int theme_setting_item_text_pressed=0x7f070007; - public static final int theme_text_color=0x7f07000d; - public static final int transparent=0x7f07000a; - public static final int white=0x7f070001; - public static final int window_bg=0x7f070009; - } - public static final class dimen { - public static final int aio_bubble_padding_align_error=0x7f080086; - public static final int aio_bubble_padding_align_head=0x7f080085; - public static final int aio_bubble_padding_bottom=0x7f080084; - public static final int aio_bubble_padding_top=0x7f080083; - public static final int aio_content_padding=0x7f080092; - public static final int aio_padding_bottom=0x7f080090; - public static final int aio_padding_bottom_for_last=0x7f080091; - public static final int aio_padding_left=0x7f08008e; - public static final int aio_padding_right=0x7f08008f; - public static final int aio_padding_top=0x7f08008d; - public static final int aio_secretfile_item_height=0x7f080099; - public static final int aio_secretfile_item_width=0x7f080098; - public static final int aio_secretfile_text1_margin_big=0x7f080094; - public static final int aio_secretfile_text1_margin_small=0x7f080095; - public static final int aio_secretfile_text2_margin_big=0x7f080096; - public static final int aio_secretfile_text2_margin_small=0x7f080097; - public static final int aio_share_padding=0x7f080093; - public static final int aio_text_padding_align_error=0x7f08008a; - public static final int aio_text_padding_align_head=0x7f080089; - public static final int aio_text_padding_bottom=0x7f080088; - public static final int aio_text_padding_top=0x7f080087; - public static final int aio_text_size_extra_large=0x7f080012; - public static final int aio_text_size_large=0x7f080011; - public static final int aio_text_size_middle=0x7f080010; - public static final int aio_text_size_small=0x7f08000f; - public static final int aio_text_size_small_stable=0x7f08000e; - public static final int aio_timestamp_padding_bottom=0x7f08008c; - public static final int aio_timestamp_padding_top=0x7f08008b; - public static final int album_cover_width=0x7f08007c; - public static final int album_grid_edge_padding=0x7f0800e2; - public static final int album_grid_edge_padding_half=0x7f0800e3; - public static final int album_grid_item_horizontal_spacing=0x7f0800df; - public static final int album_grid_item_vertical_spacing=0x7f0800e0; - public static final int album_grid_item_vertical_spacing_half=0x7f0800e1; - public static final int album_grid_space=0x7f080038; - public static final int album_item_maker_padding_x=0x7f0800e4; - public static final int album_item_maker_padding_y=0x7f0800e5; - public static final int album_item_wh=0x7f0800e7; - public static final int album_list_edge_padding=0x7f08013f; - public static final int album_list_h_space=0x7f080140; - public static final int album_list_item_cover_height=0x7f080144; - public static final int album_list_item_cover_width=0x7f080143; - public static final int album_list_item_halving_line_paddingTop=0x7f080146; - public static final int album_list_item_height=0x7f08013e; - public static final int album_list_item_padding=0x7f080145; - public static final int album_list_item_width=0x7f08013d; - public static final int album_list_v_space=0x7f080141; - public static final int album_list_v_space_half=0x7f080142; - public static final int album_margin=0x7f080036; - public static final int album_padding_lr=0x7f080037; - public static final int album_selected_item_width=0x7f0800e6; - public static final int btn_back_padding_left=0x7f08000a; - public static final int btn_back_padding_right=0x7f08000b; - public static final int btn_padding_left=0x7f080008; - public static final int btn_padding_right=0x7f080009; - public static final int card_visitor_left_margin=0x7f080039; - public static final int card_visitor_right_margin=0x7f08003a; - public static final int card_visitor_space=0x7f08003b; - public static final int choose_book_blackboard_height=0x7f0800b5; - public static final int choose_book_column_width=0x7f0800b8; - public static final int choose_book_gridview_padding_left=0x7f0800b9; - public static final int choose_book_height=0x7f0800b6; - public static final int choose_book_height_between_board_and_book=0x7f0800ba; - public static final int choose_book_width=0x7f0800b7; - public static final int com_tencent_open_agent_auth_perm_height=0x7f080018; - public static final int com_tencent_open_agent_buddy_list_selected_buddy_marginbottom=0x7f08001a; - public static final int com_tencent_open_agent_buddy_list_selected_buddy_marginright=0x7f080019; - public static final int com_tencent_open_agent_dp100=0x7f080013; - public static final int com_tencent_open_agent_dp110=0x7f080014; - public static final int com_tencent_open_agent_dp120=0x7f080015; - public static final int com_tencent_open_agent_dp130=0x7f080016; - public static final int com_tencent_open_agent_dp150=0x7f080017; - public static final int com_tencent_open_appdetail_appicon_height=0x7f080020; - public static final int com_tencent_open_appdetail_appicon_width=0x7f08001f; - public static final int com_tencent_open_appdetail_dp172=0x7f080022; - public static final int com_tencent_open_appdetail_dp285=0x7f080021; - public static final int com_tencent_open_appdetail_margin_bottom=0x7f08001e; - public static final int com_tencent_open_appdetail_margin_left=0x7f08001b; - public static final int com_tencent_open_appdetail_margin_right=0x7f08001c; - public static final int com_tencent_open_appdetail_margin_top=0x7f08001d; - public static final int comment_btn_hight=0x7f080115; - public static final int comment_btn_width=0x7f080116; - public static final int common_action_sheet_layout_padding=0x7f08006a; - public static final int common_menu_dialog_layout_btn_marginBottom=0x7f080070; - public static final int common_menu_dialog_layout_btn_marginTop=0x7f08006f; - public static final int common_menu_dialog_layout_cancel_marginBottom=0x7f08006e; - public static final int common_menu_dialog_layout_cancel_marginTop=0x7f08006d; - public static final int common_menu_dialog_layout_paddingLR=0x7f08006b; - public static final int common_menu_dialog_tile_marginBottom=0x7f080069; - public static final int common_menu_dialog_tile_marginTop=0x7f080068; - public static final int common_menu_dialog_tilte_paddingLR=0x7f08006c; - public static final int common_title_height=0x7f080113; - public static final int contat_buddy_list_name_width=0x7f08009b; - public static final int copytextview_menu_height=0x7f080124; - public static final int copytextview_menu_width=0x7f080123; - public static final int cover_padding_top=0x7f080137; - public static final int dataline_msg_item_image_height=0x7f08002b; - public static final int dataline_msg_item_image_width=0x7f08002a; - public static final int detail_p_activity_v=0x7f08004f; - public static final int dialogBase_btnArea_magrinLeft=0x7f080064; - public static final int dialogBase_btnArea_magrinRight=0x7f080065; - public static final int dialogBase_btnArea_magrinTop=0x7f080066; - public static final int dialogBase_btnHeight=0x7f080063; - public static final int dialogBase_btnWidth=0x7f080062; - public static final int dialogBase_button_marginTop=0x7f080060; - public static final int dialogBase_content_margin=0x7f08005b; - public static final int dialogBase_listWidth=0x7f080061; - public static final int dialogBase_message_lineSpacing=0x7f08005f; - public static final int dialogBase_message_paddingLeft=0x7f08005d; - public static final int dialogBase_message_paddingRight=0x7f08005e; - public static final int dialogBase_message_paddingTop=0x7f08005c; - public static final int dialogBase_titleHeight=0x7f080059; - public static final int dialogBase_titleIconMargin=0x7f08005a; - public static final int dialogBase_width=0x7f080058; - public static final int divider_height=0x7f080120; - public static final int dp1=0x7f0800ea; - public static final int dp10=0x7f0800f2; - public static final int dp105=0x7f080100; - public static final int dp11=0x7f0800f3; - public static final int dp12=0x7f0800f4; - public static final int dp126=0x7f080101; - public static final int dp13=0x7f0800f5; - public static final int dp14=0x7f0800f6; - public static final int dp15=0x7f0800f7; - public static final int dp155=0x7f080102; - public static final int dp169=0x7f080103; - public static final int dp17=0x7f0800f8; - public static final int dp2=0x7f0800eb; - public static final int dp23=0x7f0800f9; - public static final int dp25=0x7f0800fa; - public static final int dp3=0x7f0800ec; - public static final int dp30=0x7f0800fb; - public static final int dp32=0x7f0800fd; - public static final int dp35=0x7f0800fc; - public static final int dp5=0x7f0800ed; - public static final int dp50=0x7f0800fe; - public static final int dp53=0x7f0800ff; - public static final int dp6=0x7f0800ee; - public static final int dp7=0x7f0800ef; - public static final int dp8=0x7f0800f0; - public static final int dp9=0x7f0800f1; - public static final int fastscroll_overlay_size=0x7f08002c; - public static final int fastscroll_thumb_height=0x7f08002e; - public static final int fastscroll_thumb_width=0x7f08002d; - public static final int feed_content_line_spacing_extra=0x7f0800db; - public static final int feed_detail_banner_bottom_margin=0x7f080148; - public static final int feed_detail_banner_top_margin=0x7f080147; - public static final int feed_item_area_margin_top=0x7f0800da; - public static final int feed_item_assist_text_size=0x7f0800d5; - public static final int feed_item_btn_size=0x7f0800d4; - public static final int feed_item_comment_text_size=0x7f0800d2; - public static final int feed_item_content_text_size=0x7f0800d0; - public static final int feed_item_margin_left=0x7f0800d6; - public static final int feed_item_margin_right=0x7f0800d7; - public static final int feed_item_margin_top20px=0x7f0800d9; - public static final int feed_item_margin_top30px=0x7f0800d8; - public static final int feed_item_time_text_size=0x7f0800d1; - public static final int feed_item_username_text_size=0x7f0800d3; - public static final int feed_loading_diameter=0x7f08014a; - public static final int feed_loading_min_length=0x7f08014c; - public static final int feed_loading_strokewidth=0x7f08014b; - public static final int font_size_extra_large=0x7f080031; - public static final int font_size_extra_small=0x7f080035; - public static final int font_size_large=0x7f080032; - public static final int font_size_middle=0x7f080033; - public static final int font_size_small=0x7f080034; - public static final int friendfeeds_empty_icon_marginTop=0x7f080149; - public static final int gallery_space=0x7f080067; - public static final int gesture_pattern_line_width=0x7f08009a; - public static final int indicator_corner_radius=0x7f080111; - public static final int indicator_internal_padding=0x7f080112; - public static final int indicator_right_padding=0x7f080110; - public static final int info_card_info_marginBottom=0x7f08009c; - public static final int info_card_level_icon_size=0x7f080073; - public static final int info_card_middle_item_txtsize=0x7f080072; - public static final int info_card_moreinfo_item_paddingLR=0x7f080074; - public static final int info_card_moreinfo_item_paddingTB=0x7f080075; - public static final int iphone_title_min_width=0x7f080114; - public static final int layout_common_xlistview_paddingLR=0x7f080071; - public static final int lite_activity_horizontal_margin=0x7f080028; - public static final int lite_activity_vertical_margin=0x7f080029; - public static final int local_photo_bottombar_h=0x7f08012e; - public static final int local_photo_hspace=0x7f08012c; - public static final int local_photo_item_mark_paddingRight=0x7f080132; - public static final int local_photo_item_mark_paddingTop=0x7f080131; - public static final int local_photo_list_cover_h=0x7f080130; - public static final int local_photo_list_cover_w=0x7f08012f; - public static final int local_photo_padding=0x7f08012b; - public static final int local_photo_vspace=0x7f08012d; - public static final int myfeed_source_content_comment_line_margintop=0x7f0800dd; - public static final int myfeed_source_content_comment_margintop=0x7f0800dc; - public static final int nar_btn_hight=0x7f080026; - public static final int nar_btn_width=0x7f080027; - public static final int nav_btn_height=0x7f080005; - public static final int nav_btn_text_size=0x7f080006; - public static final int nav_height=0x7f080004; - public static final int nav_padding_top=0x7f080007; - public static final int network_album_cover_width=0x7f0800de; - public static final int new_photo_list_cell_edge_padding=0x7f080082; - public static final int new_photo_list_cell_horizontal_spacing=0x7f080080; - public static final int new_photo_list_cell_vertical_spacing=0x7f080081; - public static final int phone_country_code_padding=0x7f0800bd; - public static final int phone_country_code_width=0x7f0800bc; - public static final int photo_list_cell_edge_padding=0x7f08007f; - public static final int photo_list_cell_horizontal_spacing=0x7f08007d; - public static final int photo_list_cell_vertical_spacing=0x7f08007e; - public static final int photo_wall_divider_l=0x7f080052; - public static final int photo_wall_guest_avatar_size=0x7f080055; - public static final int photo_wall_host_avatar_h=0x7f080053; - public static final int photo_wall_host_avatar_size=0x7f080054; - public static final int photo_wall_lr=0x7f080051; - public static final int photo_wall_title_marginBottom=0x7f080057; - public static final int photo_wall_title_marginTop=0x7f080056; - public static final int photo_wall_top=0x7f080050; - public static final int popup_win_height=0x7f08000d; - public static final int publishicon_height=0x7f080105; - public static final int publishicon_width=0x7f080104; - public static final int qb_tenpay_big_text_size=0x7f0800c5; - public static final int qb_tenpay_bigbtn_height=0x7f0800cb; - public static final int qb_tenpay_btn_resend_height=0x7f0800cc; - public static final int qb_tenpay_editor_height=0x7f0800c9; - public static final int qb_tenpay_editor_space_h=0x7f0800cd; - public static final int qb_tenpay_margin=0x7f0800ce; - public static final int qb_tenpay_navi_btn_height=0x7f0800c3; - public static final int qb_tenpay_navi_text_size=0x7f0800c4; - public static final int qb_tenpay_normal_text_size=0x7f0800c6; - public static final int qb_tenpay_paycenter_yellow_height=0x7f0800ca; - public static final int qb_tenpay_small_text_size=0x7f0800c7; - public static final int qb_tenpay_smallest_text_size=0x7f0800c8; - public static final int qb_tenpay_space_height=0x7f0800cf; - public static final int qb_tenpay_title_height=0x7f0800c2; - public static final int qzone_cover_height=0x7f080133; - public static final int qzone_custom_dialog_width=0x7f080109; - public static final int qzone_feed_detail_avatar_width=0x7f080122; - public static final int qzone_feed_detail_main_action_height=0x7f080121; - public static final int qzone_feeds_cover_marginBottom=0x7f080136; - public static final int qzone_feeds_header_height=0x7f080134; - public static final int qzone_feeds_header_marginBottom=0x7f080135; - public static final int qzone_home_guest_cover_height=0x7f080138; - public static final int qzone_home_guest_detail_marginTop=0x7f08013a; - public static final int qzone_home_guest_feeds_header_height=0x7f080139; - public static final int qzone_home_guest_question_height=0x7f08013b; - public static final int qzone_home_guest_sendResult_marginTop=0x7f08013c; - public static final int qzone_pic_minheight_content=0x7f080106; - public static final int qzone_pic_minheight_forward=0x7f080107; - public static final int qzone_pictureviewer_bottom_detail_margin=0x7f08010d; - public static final int qzone_pictureviewer_bottom_detail_minwidth=0x7f08010c; - public static final int qzone_pictureviewer_bottom_height_down=0x7f08010b; - public static final int qzone_pictureviewer_bottom_height_up=0x7f08010a; - public static final int qzone_pictureviewer_item_padding_left=0x7f08010e; - public static final int qzone_pictureviewer_item_padding_right=0x7f08010f; - public static final int qzone_pictureviewer_loading_text=0x7f080108; - public static final int recent_game_list_avatar=0x7f0800a4; - public static final int recent_game_list_avatar_marginleft=0x7f0800a5; - public static final int recent_list_foot_height=0x7f08007a; - public static final int recent_list_head_height=0x7f080076; - public static final int recent_list_margin_bottom=0x7f080126; - public static final int recent_list_margin_top=0x7f080125; - public static final int recent_list_net_bar_height=0x7f080077; - public static final int recent_list_pushbanner_height=0x7f080079; - public static final int recent_list_update_bar_height=0x7f080078; - public static final int recent_no_chat_height=0x7f08007b; - public static final int refresh_header_height=0x7f08002f; - public static final int refresh_header_real_height=0x7f080030; - public static final int search_troop_filter_width=0x7f08003e; - public static final int setting_item_marginTop=0x7f08004e; - public static final int setting_tips_marginBottom=0x7f08004c; - public static final int setting_tips_marginLeft=0x7f08004b; - public static final int setting_tips_marginRight=0x7f08004d; - public static final int setting_tips_marginTop=0x7f08004a; - public static final int share_pic_preview_height=0x7f0800b4; - public static final int share_pic_preview_width=0x7f0800b3; - public static final int shuoshuo_seleted_photo_height=0x7f0800e9; - public static final int shuoshuo_seleted_photo_width=0x7f0800e8; - public static final int sp10=0x7f080119; - public static final int sp12=0x7f08011a; - public static final int sp13=0x7f08011b; - public static final int sp14=0x7f08011c; - public static final int sp16=0x7f08011d; - public static final int sp18=0x7f08011e; - public static final int sp20=0x7f08011f; - public static final int sp6=0x7f080117; - public static final int sp8=0x7f080118; - public static final int struct_msg_content_layout_marginBottom=0x7f0800a0; - public static final int struct_msg_content_layout_marginLeft=0x7f08009d; - public static final int struct_msg_content_layout_marginRight=0x7f08009e; - public static final int struct_msg_content_layout_marginTop=0x7f08009f; - public static final int struct_msg_content_layout_source_receiveleft_margin=0x7f0800a2; - public static final int struct_msg_content_layout_source_sendleft_margin=0x7f0800a1; - public static final int subaccount_msg_header_height=0x7f0800a3; - public static final int tab_left_padding_right=0x7f080129; - public static final int tab_min_h=0x7f080128; - public static final int tab_min_w=0x7f080127; - public static final int tab_right_padding_left=0x7f08012a; - public static final int textSize11sp=0x7f08003f; - public static final int textSize12sp=0x7f080040; - public static final int textSize13sp=0x7f080041; - public static final int textSize14sp=0x7f080042; - public static final int textSize15sp=0x7f080043; - public static final int textSize16sp=0x7f080044; - public static final int textSize17sp=0x7f080045; - public static final int textSize18sp=0x7f080046; - public static final int textSize19sp=0x7f080047; - public static final int textSize20sp=0x7f080048; - public static final int textSize21sp=0x7f080049; - public static final int textSizeS1=0x7f080000; - public static final int textSizeS2=0x7f080001; - public static final int textSizeS3=0x7f080002; - public static final int textSizeS4=0x7f080003; - public static final int tip_layout_padding=0x7f08000c; - public static final int title_bar_height=0x7f08003c; - public static final int title_bar_main_alpha_height=0x7f080025; - public static final int title_bar_main_content_height=0x7f080024; - public static final int title_bar_offset=0x7f08003d; - public static final int title_margin_top=0x7f080023; - public static final int userguide_2_gv1Top=0x7f0800ae; - public static final int userguide_2_gv2Top=0x7f0800af; - public static final int userguide_3_Top=0x7f0800b2; - public static final int userguide_3_gv1Top=0x7f0800b0; - public static final int userguide_3_gv2Top=0x7f0800b1; - public static final int userguide_4_paddingbottom=0x7f0800ab; - public static final int userguide_4_paddingtop=0x7f0800aa; - public static final int userguide_btn_marginTop=0x7f0800a9; - public static final int userguide_choosebook_title_marginTop=0x7f0800bb; - public static final int userguide_sheet1_marginTop=0x7f0800ac; - public static final int userguide_sheet2_marginTop=0x7f0800ad; - public static final int userguide_sheet_marginBottom=0x7f0800a8; - public static final int userguide_t234_marginTop=0x7f0800a7; - public static final int userguide_t_marginTop=0x7f0800a6; - public static final int video_smallview_move_thresholdX=0x7f0800c0; - public static final int video_smallview_move_thresholdY=0x7f0800c1; - public static final int video_subview_right_margin=0x7f0800bf; - public static final int video_tool_bar_height=0x7f0800be; - public static final int widget_vip_progress_height=0x7f08014e; - public static final int widget_vip_progress_marginTop=0x7f08014f; - public static final int widget_vip_progress_minWidth=0x7f080150; - public static final int widget_vip_progress_text_marginLeft=0x7f080152; - public static final int widget_vip_progress_text_marginRight=0x7f080153; - public static final int widget_vip_progress_width=0x7f08014d; - public static final int widget_vip_speed_marginTop=0x7f080151; - } - public static final class drawable { - public static final int action_sheet_base_9=0x7f020000; - public static final int add_contacts_create_troop=0x7f020001; - public static final int add_contacts_look_for_similarity=0x7f020002; - public static final int add_contacts_look_for_troop=0x7f020003; - public static final int aicon_error=0x7f020004; - public static final int aio_friend_bg_nor=0x7f020005; - public static final int aio_friend_bg_pressed=0x7f020006; - public static final int aio_user_bg_nor=0x7f020007; - public static final int aio_user_bg_pressed=0x7f020008; - public static final int app_main_bg=0x7f020009; - public static final int arrow=0x7f02000a; - public static final int blue_button_normal=0x7f02000b; - public static final int blue_button_pressed=0x7f02000c; - public static final int bodylisttop=0x7f02000d; - public static final int bottom=0x7f02000e; - public static final int btn_check_off=0x7f02000f; - public static final int btn_check_on=0x7f020010; - public static final int card_avatar=0x7f020011; - public static final int chat_time_block=0x7f020012; - public static final int chat_tool_camera=0x7f020013; - public static final int chat_tool_location=0x7f020014; - public static final int chat_tool_photo=0x7f020015; - public static final int chat_tool_send_file=0x7f020016; - public static final int close_del=0x7f020017; - public static final int close_pressed=0x7f020018; - public static final int colorful_line=0x7f020019; - public static final int common_button_blue=0x7f02001a; - public static final int common_loading_0=0x7f02001b; - public static final int common_loading_1=0x7f02001c; - public static final int common_loading_10=0x7f02001d; - public static final int common_loading_11=0x7f02001e; - public static final int common_loading_2=0x7f02001f; - public static final int common_loading_3=0x7f020020; - public static final int common_loading_4=0x7f020021; - public static final int common_loading_5=0x7f020022; - public static final int common_loading_6=0x7f020023; - public static final int common_loading_7=0x7f020024; - public static final int common_loading_8=0x7f020025; - public static final int common_loading_9=0x7f020026; - public static final int common_msgbox_bg=0x7f020027; - public static final int conversation_loading_icon=0x7f020028; - public static final int conversation_net_error_icon=0x7f020029; - public static final int cutline=0x7f02002a; - public static final int edittext_bg=0x7f02002b; - public static final int f000=0x7f02002c; - public static final int f001=0x7f02002d; - public static final int f002=0x7f02002e; - public static final int f003=0x7f02002f; - public static final int f004=0x7f020030; - public static final int f005=0x7f020031; - public static final int f006=0x7f020032; - public static final int f007=0x7f020033; - public static final int f008=0x7f020034; - public static final int f009=0x7f020035; - public static final int f010=0x7f020036; - public static final int f011=0x7f020037; - public static final int f012=0x7f020038; - public static final int f013=0x7f020039; - public static final int f014=0x7f02003a; - public static final int f015=0x7f02003b; - public static final int f016=0x7f02003c; - public static final int f017=0x7f02003d; - public static final int f018=0x7f02003e; - public static final int f019=0x7f02003f; - public static final int f020=0x7f020040; - public static final int f021=0x7f020041; - public static final int f022=0x7f020042; - public static final int f023=0x7f020043; - public static final int f024=0x7f020044; - public static final int f025=0x7f020045; - public static final int f026=0x7f020046; - public static final int f027=0x7f020047; - public static final int f028=0x7f020048; - public static final int f029=0x7f020049; - public static final int f030=0x7f02004a; - public static final int f031=0x7f02004b; - public static final int f032=0x7f02004c; - public static final int f033=0x7f02004d; - public static final int f034=0x7f02004e; - public static final int f035=0x7f02004f; - public static final int f036=0x7f020050; - public static final int f037=0x7f020051; - public static final int f038=0x7f020052; - public static final int f039=0x7f020053; - public static final int f040=0x7f020054; - public static final int f041=0x7f020055; - public static final int f042=0x7f020056; - public static final int f043=0x7f020057; - public static final int f044=0x7f020058; - public static final int f045=0x7f020059; - public static final int f046=0x7f02005a; - public static final int f047=0x7f02005b; - public static final int f048=0x7f02005c; - public static final int f049=0x7f02005d; - public static final int f050=0x7f02005e; - public static final int f051=0x7f02005f; - public static final int f052=0x7f020060; - public static final int f053=0x7f020061; - public static final int f054=0x7f020062; - public static final int f055=0x7f020063; - public static final int f056=0x7f020064; - public static final int f057=0x7f020065; - public static final int f058=0x7f020066; - public static final int f059=0x7f020067; - public static final int f060=0x7f020068; - public static final int f061=0x7f020069; - public static final int f062=0x7f02006a; - public static final int f063=0x7f02006b; - public static final int f064=0x7f02006c; - public static final int f065=0x7f02006d; - public static final int f066=0x7f02006e; - public static final int f067=0x7f02006f; - public static final int f068=0x7f020070; - public static final int f069=0x7f020071; - public static final int f070=0x7f020072; - public static final int f071=0x7f020073; - public static final int f072=0x7f020074; - public static final int f073=0x7f020075; - public static final int f074=0x7f020076; - public static final int f075=0x7f020077; - public static final int f076=0x7f020078; - public static final int f077=0x7f020079; - public static final int f078=0x7f02007a; - public static final int f079=0x7f02007b; - public static final int f080=0x7f02007c; - public static final int f081=0x7f02007d; - public static final int f082=0x7f02007e; - public static final int f083=0x7f02007f; - public static final int f084=0x7f020080; - public static final int f085=0x7f020081; - public static final int f086=0x7f020082; - public static final int f087=0x7f020083; - public static final int f088=0x7f020084; - public static final int f089=0x7f020085; - public static final int f090=0x7f020086; - public static final int f091=0x7f020087; - public static final int f092=0x7f020088; - public static final int f093=0x7f020089; - public static final int f094=0x7f02008a; - public static final int f095=0x7f02008b; - public static final int f096=0x7f02008c; - public static final int f097=0x7f02008d; - public static final int f098=0x7f02008e; - public static final int f099=0x7f02008f; - public static final int f100=0x7f020090; - public static final int f101=0x7f020091; - public static final int f102=0x7f020092; - public static final int f103=0x7f020093; - public static final int f104=0x7f020094; - public static final int f105=0x7f020095; - public static final int f106=0x7f020096; - public static final int f_static_000=0x7f020097; - public static final int f_static_001=0x7f020098; - public static final int f_static_002=0x7f020099; - public static final int f_static_003=0x7f02009a; - public static final int f_static_004=0x7f02009b; - public static final int f_static_005=0x7f02009c; - public static final int f_static_006=0x7f02009d; - public static final int f_static_007=0x7f02009e; - public static final int f_static_008=0x7f02009f; - public static final int f_static_009=0x7f0200a0; - public static final int f_static_010=0x7f0200a1; - public static final int f_static_011=0x7f0200a2; - public static final int f_static_012=0x7f0200a3; - public static final int f_static_013=0x7f0200a4; - public static final int f_static_014=0x7f0200a5; - public static final int f_static_015=0x7f0200a6; - public static final int f_static_016=0x7f0200a7; - public static final int f_static_017=0x7f0200a8; - public static final int f_static_018=0x7f0200a9; - public static final int f_static_019=0x7f0200aa; - public static final int f_static_020=0x7f0200ab; - public static final int f_static_021=0x7f0200ac; - public static final int f_static_022=0x7f0200ad; - public static final int f_static_023=0x7f0200ae; - public static final int f_static_024=0x7f0200af; - public static final int f_static_025=0x7f0200b0; - public static final int f_static_026=0x7f0200b1; - public static final int f_static_027=0x7f0200b2; - public static final int f_static_028=0x7f0200b3; - public static final int f_static_029=0x7f0200b4; - public static final int f_static_030=0x7f0200b5; - public static final int f_static_031=0x7f0200b6; - public static final int f_static_032=0x7f0200b7; - public static final int f_static_033=0x7f0200b8; - public static final int f_static_034=0x7f0200b9; - public static final int f_static_035=0x7f0200ba; - public static final int f_static_036=0x7f0200bb; - public static final int f_static_037=0x7f0200bc; - public static final int f_static_038=0x7f0200bd; - public static final int f_static_039=0x7f0200be; - public static final int f_static_040=0x7f0200bf; - public static final int f_static_041=0x7f0200c0; - public static final int f_static_042=0x7f0200c1; - public static final int f_static_043=0x7f0200c2; - public static final int f_static_044=0x7f0200c3; - public static final int f_static_045=0x7f0200c4; - public static final int f_static_046=0x7f0200c5; - public static final int f_static_047=0x7f0200c6; - public static final int f_static_048=0x7f0200c7; - public static final int f_static_049=0x7f0200c8; - public static final int f_static_050=0x7f0200c9; - public static final int f_static_051=0x7f0200ca; - public static final int f_static_052=0x7f0200cb; - public static final int f_static_053=0x7f0200cc; - public static final int f_static_054=0x7f0200cd; - public static final int f_static_055=0x7f0200ce; - public static final int f_static_056=0x7f0200cf; - public static final int f_static_057=0x7f0200d0; - public static final int f_static_058=0x7f0200d1; - public static final int f_static_059=0x7f0200d2; - public static final int f_static_060=0x7f0200d3; - public static final int f_static_061=0x7f0200d4; - public static final int f_static_062=0x7f0200d5; - public static final int f_static_063=0x7f0200d6; - public static final int f_static_064=0x7f0200d7; - public static final int f_static_065=0x7f0200d8; - public static final int f_static_066=0x7f0200d9; - public static final int f_static_067=0x7f0200da; - public static final int f_static_068=0x7f0200db; - public static final int f_static_069=0x7f0200dc; - public static final int f_static_070=0x7f0200dd; - public static final int f_static_071=0x7f0200de; - public static final int f_static_072=0x7f0200df; - public static final int f_static_073=0x7f0200e0; - public static final int f_static_074=0x7f0200e1; - public static final int f_static_075=0x7f0200e2; - public static final int f_static_076=0x7f0200e3; - public static final int f_static_077=0x7f0200e4; - public static final int f_static_078=0x7f0200e5; - public static final int f_static_079=0x7f0200e6; - public static final int f_static_080=0x7f0200e7; - public static final int f_static_081=0x7f0200e8; - public static final int f_static_082=0x7f0200e9; - public static final int f_static_083=0x7f0200ea; - public static final int f_static_084=0x7f0200eb; - public static final int f_static_085=0x7f0200ec; - public static final int f_static_086=0x7f0200ed; - public static final int f_static_087=0x7f0200ee; - public static final int f_static_088=0x7f0200ef; - public static final int f_static_089=0x7f0200f0; - public static final int f_static_090=0x7f0200f1; - public static final int f_static_091=0x7f0200f2; - public static final int f_static_092=0x7f0200f3; - public static final int f_static_093=0x7f0200f4; - public static final int f_static_094=0x7f0200f5; - public static final int f_static_095=0x7f0200f6; - public static final int f_static_096=0x7f0200f7; - public static final int f_static_097=0x7f0200f8; - public static final int f_static_098=0x7f0200f9; - public static final int f_static_099=0x7f0200fa; - public static final int f_static_100=0x7f0200fb; - public static final int f_static_101=0x7f0200fc; - public static final int f_static_102=0x7f0200fd; - public static final int f_static_103=0x7f0200fe; - public static final int f_static_104=0x7f0200ff; - public static final int f_static_105=0x7f020100; - public static final int f_static_106=0x7f020101; - public static final int grouphead_normal=0x7f020102; - public static final int h033=0x7f020103; - public static final int ic_date_time=0x7f020104; - public static final int ic_read=0x7f020105; - public static final int icon=0x7f020106; - public static final int icon_addfriend=0x7f020107; - public static final int icon_away=0x7f020108; - public static final int icon_error=0x7f020109; - public static final int icon_face_click=0x7f02010a; - public static final int icon_face_nor=0x7f02010b; - public static final int icon_invisiable=0x7f02010c; - public static final int icon_joinfroup=0x7f02010d; - public static final int icon_logo=0x7f02010e; - public static final int icon_more=0x7f02010f; - public static final int icon_normal=0x7f020110; - public static final int icon_notify=0x7f020111; - public static final int icon_offline=0x7f020112; - public static final int icon_online=0x7f020113; - public static final int icon_recent_sysmsg=0x7f020114; - public static final int icon_share=0x7f020115; - public static final int icon_success=0x7f020116; - public static final int image_empty=0x7f020117; - public static final int input=0x7f020118; - public static final int input_box_bg=0x7f020119; - public static final int input_over=0x7f02011a; - public static final int list_blockbg=0x7f02011b; - public static final int list_divider_line=0x7f02011c; - public static final int list_head_border_whitebg=0x7f02011d; - public static final int listitem_hover=0x7f02011e; - public static final int loading_1=0x7f02011f; - public static final int loading_10=0x7f020120; - public static final int loading_11=0x7f020121; - public static final int loading_12=0x7f020122; - public static final int loading_13=0x7f020123; - public static final int loading_14=0x7f020124; - public static final int loading_15=0x7f020125; - public static final int loading_16=0x7f020126; - public static final int loading_17=0x7f020127; - public static final int loading_18=0x7f020128; - public static final int loading_19=0x7f020129; - public static final int loading_2=0x7f02012a; - public static final int loading_20=0x7f02012b; - public static final int loading_21=0x7f02012c; - public static final int loading_22=0x7f02012d; - public static final int loading_23=0x7f02012e; - public static final int loading_24=0x7f02012f; - public static final int loading_3=0x7f020130; - public static final int loading_4=0x7f020131; - public static final int loading_5=0x7f020132; - public static final int loading_6=0x7f020133; - public static final int loading_7=0x7f020134; - public static final int loading_8=0x7f020135; - public static final int loading_9=0x7f020136; - public static final int loading_bg=0x7f020137; - public static final int loading_coffee=0x7f020138; - public static final int login_bg=0x7f020139; - public static final int login_default_avatar=0x7f02013a; - public static final int login_input=0x7f02013b; - public static final int mchat_navbar_tab_m_normal=0x7f02013c; - public static final int mchat_navbar_tab_m_pressed=0x7f02013d; - public static final int message_hint=0x7f02013e; - public static final int msg_tips_bg_normal=0x7f02013f; - public static final int msg_tips_bg_pressed=0x7f020140; - public static final int narrow=0x7f020141; - public static final int narrow_select=0x7f020142; - public static final int profile_photowall_avatar_frame_nor=0x7f020143; - public static final int profile_photowall_bg_female=0x7f020144; - public static final int profile_photowall_bg_male=0x7f020145; - public static final int scrollbar=0x7f020146; - public static final int set_list_bottom=0x7f020147; - public static final int set_list_bottom_pre=0x7f020148; - public static final int set_list_middle=0x7f020149; - public static final int set_list_middle_pre=0x7f02014a; - public static final int set_list_single=0x7f02014b; - public static final int set_list_single_pre=0x7f02014c; - public static final int set_list_top=0x7f02014d; - public static final int set_list_top_pre=0x7f02014e; - public static final int show=0x7f02014f; - public static final int silver=0x7f020191; - public static final int skin_aio_input_bar_bg=0x7f020150; - public static final int skin_aio_more_nor=0x7f020151; - public static final int skin_aio_more_pressed=0x7f020152; - public static final int skin_aio_send_button_normal=0x7f020153; - public static final int skin_aio_send_button_pressed=0x7f020154; - public static final int skin_bottom_bar_background=0x7f020155; - public static final int skin_common_btn_blue_bg_pressed=0x7f020156; - public static final int skin_common_btn_blue_unpressed=0x7f020157; - public static final int skin_common_btn_green_disable=0x7f020158; - public static final int skin_common_btn_green_normal=0x7f020159; - public static final int skin_common_btn_green_pressed=0x7f02015a; - public static final int skin_common_btn_red_disabled=0x7f02015b; - public static final int skin_common_btn_red_pressed=0x7f02015c; - public static final int skin_common_btn_red_unpressed=0x7f02015d; - public static final int skin_common_btn_white_disabled=0x7f02015e; - public static final int skin_common_btn_white_pressed=0x7f02015f; - public static final int skin_common_btn_white_unpressed=0x7f020160; - public static final int skin_contact_add_btn_normal=0x7f020161; - public static final int skin_contact_add_btn_press=0x7f020162; - public static final int skin_header_bar_bg=0x7f020163; - public static final int skin_header_btn_back_normal=0x7f020164; - public static final int skin_header_btn_back_press=0x7f020165; - public static final int skin_header_btn_disable=0x7f020166; - public static final int skin_header_btn_indicative_normal=0x7f020167; - public static final int skin_header_btn_indicative_press=0x7f020168; - public static final int skin_header_btn_normal=0x7f020169; - public static final int skin_header_btn_press=0x7f02016a; - public static final int skin_header_icon_group=0x7f02016b; - public static final int skin_header_icon_single=0x7f02016c; - public static final int skin_header_tab_left_normal=0x7f02016d; - public static final int skin_header_tab_left_pressed=0x7f02016e; - public static final int skin_header_tab_right_normal=0x7f02016f; - public static final int skin_header_tab_right_pressed=0x7f020170; - public static final int skin_icon_arrow_right_normal=0x7f020171; - public static final int skin_icon_arrow_right_pressed=0x7f020172; - public static final int skin_msgbox_bg_nor=0x7f020173; - public static final int skin_msgbox_bg_pressed=0x7f020174; - public static final int skin_msgbox_bg_top=0x7f020175; - public static final int skin_tab_icon_contact_normal=0x7f020176; - public static final int skin_tab_icon_contact_selected=0x7f020177; - public static final int skin_tab_icon_conversation_normal=0x7f020178; - public static final int skin_tab_icon_conversation_selected=0x7f020179; - public static final int skin_tab_icon_plugin_normal=0x7f02017a; - public static final int skin_tab_icon_plugin_selected=0x7f02017b; - public static final int skin_tab_icon_setup_normal=0x7f02017c; - public static final int skin_tab_icon_setup_selected=0x7f02017d; - public static final int skin_tab_newmessage=0x7f02017e; - public static final int skin_tab_newmessage2=0x7f02017f; - public static final int skin_tabbar_tab_select=0x7f020180; - public static final int skin_tabbar_tab_select_left=0x7f020181; - public static final int skin_tabbar_tab_select_right=0x7f020182; - public static final int splash_bg=0x7f020183; - public static final int success=0x7f020184; - public static final int tab2_normal=0x7f020185; - public static final int tab2_over=0x7f020186; - public static final int tab3_normal=0x7f020187; - public static final int tab3_over=0x7f020188; - public static final int tab_new=0x7f020189; - public static final int table_arrow=0x7f02018a; - public static final int toast_bg=0x7f02018b; - public static final int top_back_left_selector=0x7f02018c; - public static final int topface_back=0x7f02018d; - public static final int troop_default_head_1=0x7f02018e; - public static final int troop_default_head_2=0x7f02018f; - public static final int troop_default_head_3=0x7f020190; - } - public static final class id { - public static final int TITLE_TEXT=0x7f0b000f; - public static final int TOP_BACK_BUTTON=0x7f0b000e; - public static final int account=0x7f0b0004; - public static final int chat_list=0x7f0b0008; - public static final int content=0x7f0b000d; - public static final int face=0x7f0b0001; - public static final int headImageView=0x7f0b000c; - public static final int header=0x7f0b0007; - public static final int input=0x7f0b0003; - public static final int login=0x7f0b0006; - public static final int loginInputView=0x7f0b0002; - public static final int loginlayout=0x7f0b0005; - public static final int rlSystemMsg=0x7f0b000b; - public static final int scrollAreaLayout=0x7f0b0000; - public static final int textMsgType=0x7f0b0009; - public static final int time=0x7f0b000a; - } - public static final class layout { - public static final int activity_login=0x7f030000; - public static final int activity_splansh=0x7f030001; - public static final int activity_system_chat=0x7f030002; - public static final int item_chat_sysmsg=0x7f030003; - public static final int layout_global_top_header=0x7f030004; - } - public static final class raw { - public static final int classic=0x7f050000; - } - public static final class string { - public static final int app_name=0x7f090000; - public static final int at_now=0x7f09000d; - public static final int check_update_tips=0x7f09000a; - public static final int dayago=0x7f090003; - public static final int find_new_verson_tips=0x7f09000c; - public static final int hourago=0x7f090002; - public static final int minuteago=0x7f090001; - public static final int no_new_verson_tips=0x7f09000b; - public static final int refresh_lasttime=0x7f090006; - public static final int refresh_pull=0x7f090005; - public static final int refresh_release=0x7f090004; - public static final int tip_look_more=0x7f090009; - public static final int tip_network_busy=0x7f090008; - public static final int tip_reload=0x7f090007; - } - public static final class style { - public static final int AnimationActivity=0x7f0a0003; - public static final int Animations_PopUpMenu_BottomToTop=0x7f0a0005; - public static final int ChatMsgContentStyle=0x7f0a0006; - public static final int DialogStyle=0x7f0a0000; - public static final int GlobeEditText=0x7f0a0001; - public static final int GlobeTextView=0x7f0a0002; - public static final int GlobeTheme=0x7f0a0004; - } - public static final class styleable { - /** Attributes that can be used with a SegmentedControlView. -

Includes the following attributes:

- - - - - - - - -
AttributeDescription
{@link #SegmentedControlView_firstButtonBackground com.farsunset.ichat.example:firstButtonBackground}
{@link #SegmentedControlView_lastButtonBackground com.farsunset.ichat.example:lastButtonBackground}
{@link #SegmentedControlView_middleButtonBackground com.farsunset.ichat.example:middleButtonBackground}
{@link #SegmentedControlView_uniqueButtonBackground com.farsunset.ichat.example:uniqueButtonBackground}
- @see #SegmentedControlView_firstButtonBackground - @see #SegmentedControlView_lastButtonBackground - @see #SegmentedControlView_middleButtonBackground - @see #SegmentedControlView_uniqueButtonBackground - */ - public static final int[] SegmentedControlView = { - 0x7f010000, 0x7f010001, 0x7f010002, 0x7f010003 - }; - /** -

This symbol is the offset where the {@link com.farsunset.ichat.example.R.attr#firstButtonBackground} - attribute's value can be found in the {@link #SegmentedControlView} array. - - -

May be a reference to another resource, in the form "@[+][package:]type:name" -or to a theme attribute in the form "?[package:][type:]name". -

May be a color value, in the form of "#rgb", "#argb", -"#rrggbb", or "#aarrggbb". - @attr name com.farsunset.ichat.example:firstButtonBackground - */ - public static final int SegmentedControlView_firstButtonBackground = 0; - /** -

This symbol is the offset where the {@link com.farsunset.ichat.example.R.attr#lastButtonBackground} - attribute's value can be found in the {@link #SegmentedControlView} array. - - -

May be a reference to another resource, in the form "@[+][package:]type:name" -or to a theme attribute in the form "?[package:][type:]name". -

May be a color value, in the form of "#rgb", "#argb", -"#rrggbb", or "#aarrggbb". - @attr name com.farsunset.ichat.example:lastButtonBackground - */ - public static final int SegmentedControlView_lastButtonBackground = 1; - /** -

This symbol is the offset where the {@link com.farsunset.ichat.example.R.attr#middleButtonBackground} - attribute's value can be found in the {@link #SegmentedControlView} array. - - -

May be a reference to another resource, in the form "@[+][package:]type:name" -or to a theme attribute in the form "?[package:][type:]name". -

May be a color value, in the form of "#rgb", "#argb", -"#rrggbb", or "#aarrggbb". - @attr name com.farsunset.ichat.example:middleButtonBackground - */ - public static final int SegmentedControlView_middleButtonBackground = 2; - /** -

This symbol is the offset where the {@link com.farsunset.ichat.example.R.attr#uniqueButtonBackground} - attribute's value can be found in the {@link #SegmentedControlView} array. - - -

May be a reference to another resource, in the form "@[+][package:]type:name" -or to a theme attribute in the form "?[package:][type:]name". -

May be a color value, in the form of "#rgb", "#argb", -"#rrggbb", or "#aarrggbb". - @attr name com.farsunset.ichat.example:uniqueButtonBackground - */ - public static final int SegmentedControlView_uniqueButtonBackground = 3; - }; -} diff --git a/cim_for_mina/mchat-simple/libs/cim-core-1.6.jar b/cim_for_mina/mchat-simple/libs/cim-core-1.6.jar deleted file mode 100644 index 72401cc..0000000 Binary files a/cim_for_mina/mchat-simple/libs/cim-core-1.6.jar and /dev/null differ diff --git a/cim_for_mina/mchat-simple/libs/mina-core-2.0.7.jar b/cim_for_mina/mchat-simple/libs/mina-core-2.0.7.jar deleted file mode 100644 index 5ec135b..0000000 Binary files a/cim_for_mina/mchat-simple/libs/mina-core-2.0.7.jar and /dev/null differ diff --git a/cim_for_mina/mchat-simple/src/com/farsunset/ichat/example/util/API.java b/cim_for_mina/mchat-simple/src/com/farsunset/ichat/example/util/API.java deleted file mode 100644 index 12cbbfb..0000000 --- a/cim_for_mina/mchat-simple/src/com/farsunset/ichat/example/util/API.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.farsunset.ichat.example.util; - -import java.io.File; -import java.io.IOException; -import java.nio.charset.Charset; -import java.util.HashMap; -import java.util.Map; - -import org.apache.http.HttpResponse; -import org.apache.http.client.ClientProtocolException; -import org.apache.http.client.HttpClient; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.entity.mime.MultipartEntity; -import org.apache.http.entity.mime.content.ContentBody; -import org.apache.http.entity.mime.content.FileBody; -import org.apache.http.entity.mime.content.StringBody; -import org.apache.http.impl.client.DefaultHttpClient; -import org.apache.http.params.CoreConnectionPNames; -import org.apache.http.util.EntityUtils; - -import com.farsunset.cim.nio.mutual.Message; -import com.farsunset.ichat.example.app.Constant; -public class API { - - public final static String API_URL=Constant.SERVER_URL+"/cgi/"; - - -/* public static LinkedHashMap sendMessage(Message msg,File file) throws Exception{ - Map map = new HashMap(); - map.put("content", msg.getContent()); - map.put("title", msg.getTitle()); - map.put("sender", msg.getSender()); - map.put("receiver", msg.getReceiver()); - map.put("type", msg.getType()); - map.put("fileType", msg.getFileType()); - String json = httpPost(API_URL+"message_send.api",map,file); - - return new Gson().fromJson(json, new TypeToken>(){}.getType()); - }*/ - - public static String httpPost(String url,Map map,File file) throws ClientProtocolException, IOException - { - HttpPost httpPost = new HttpPost(url); - - MultipartEntity mpEntity = new MultipartEntity(); //文件传输 - if(file!=null){ - ContentBody cbFile = new FileBody(file); - mpEntity.addPart("file", cbFile); - } - for(String key:map.keySet()) - { - if(map.get(key)!=null) - { - StringBody stringBody = new StringBody(map.get(key), Charset.forName("UTF-8")); - mpEntity.addPart(key,stringBody); - } - } - - // 设置参数实体 - httpPost.setEntity(mpEntity); - System.out.println("request params:--->>" + map.toString()); - // 获取HttpClient对象 - HttpClient httpClient = new DefaultHttpClient(); - //连接超时 - httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 30000); - //请求超时 - httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 30000); - - HttpResponse httpResp = httpClient.execute(httpPost); - String json = EntityUtils.toString(httpResp.getEntity(), "UTF-8"); - System.out.println(json); - return json; - } - - - - public static String httpPost(String url,Map map) throws ClientProtocolException, IOException - { - return httpPost(url,map,null); - } - - -}