DemoPresenceMapping.java
上传用户:szyujian
上传日期:2016-09-20
资源大小:320k
文件大小:3k
源码类别:

android开发

开发平台:

C/C++

  1. /*
  2.  * Copyright (C) 2008 Esmertec AG.
  3.  * Copyright (C) 2008 The Android Open Source Project
  4.  *
  5.  * Licensed under the Apache License, Version 2.0 (the "License");
  6.  * you may not use this file except in compliance with the License.
  7.  * You may obtain a copy of the License at
  8.  *
  9.  *      http://www.apache.org/licenses/LICENSE-2.0
  10.  *
  11.  * Unless required by applicable law or agreed to in writing, software
  12.  * distributed under the License is distributed on an "AS IS" BASIS,
  13.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14.  * See the License for the specific language governing permissions and
  15.  * limitations under the License.
  16.  */
  17. package com.android.im.plugin.demo;
  18. import com.android.im.plugin.ImPluginConstants;
  19. import com.android.im.plugin.IPresenceMapping;
  20. import java.util.Map;
  21. /**
  22.  * A simple implementation of PresenceMaping for the provider.
  23.  *
  24.  */
  25. public class DemoPresenceMapping extends IPresenceMapping.Stub {
  26.     public int[] getSupportedPresenceStatus() {
  27.         return new int[] {
  28.                 ImPluginConstants.PRESENCE_AVAILABLE,
  29.                 ImPluginConstants.PRESENCE_DO_NOT_DISTURB,
  30.                 ImPluginConstants.PRESENCE_OFFLINE
  31.         };
  32.     }
  33.     public boolean getOnlineStatus(int status) {
  34.         return status != ImPluginConstants.PRESENCE_OFFLINE;
  35.     }
  36.     public String getUserAvaibility(int status) {
  37.         switch (status) {
  38.             case ImPluginConstants.PRESENCE_AVAILABLE:
  39.                 return ImPluginConstants.PA_AVAILABLE;
  40.             case ImPluginConstants.PRESENCE_DO_NOT_DISTURB:
  41.                 return ImPluginConstants.PA_DISCREET;
  42.             case ImPluginConstants.PRESENCE_OFFLINE:
  43.                 return ImPluginConstants.PA_NOT_AVAILABLE;
  44.             default:
  45.                 return null;
  46.         }
  47.     }
  48.     public Map<String, Object> getExtra(int status) {
  49.         // We don't have extra values except OnlineStatus and UserAvaibility
  50.         // need to be sent to the server. If we do need other values to the server,
  51.         // return a map the values structured the same as they are defined in the spec.
  52.         //
  53.         // e.g.
  54.         // Map<String, Object> extra = new HashMap<String, Object>();
  55.         //
  56.         // HashMap<String, Object> commCap = new HashMap<String, Object>();
  57.         //
  58.         // HashMap<String, Object> commC = new HashMap<String, Object>();
  59.         // commC.put("Qualifier", "T");
  60.         // commC.put("Cap", "IM");
  61.         // commC.put("Status", "Open");
  62.         //
  63.         // commCap.put("Qualifier", "T");
  64.         // commCap.put("CommC", commC);
  65.         //
  66.         // extra.put("CommCap", commCap);
  67.         // return extra;
  68.         return null;
  69.     }
  70.     public boolean requireAllPresenceValues() {
  71.         // Return false since we don't need all values received from the server
  72.         // when map it to the predefined presence status.
  73.         return false;
  74.     }
  75.     public int getPresenceStatus(boolean onlineStatus, String userAvailability,
  76.             Map allValues) {
  77.         if (!onlineStatus) {
  78.             return ImPluginConstants.PRESENCE_OFFLINE;
  79.         }
  80.         if (ImPluginConstants.PA_NOT_AVAILABLE.equals(userAvailability)) {
  81.             return ImPluginConstants.PRESENCE_AWAY;
  82.         } else if (ImPluginConstants.PA_DISCREET.equals(userAvailability)) {
  83.             return ImPluginConstants.PRESENCE_DO_NOT_DISTURB;
  84.         } else {
  85.             return ImPluginConstants.PRESENCE_AVAILABLE;
  86.         }
  87.     }
  88. }