智能客服
你问我答,随时在线为你解决问题
模块 | 文件名 | 文件用途 |
|---|---|---|
CaaSEngineDemo | 对CaaS Engine接口的封装类。 | |
全局的Application。 | ||
全局Activity布局文件。 |
- /*
- * Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved.
- */
-
- package com.huawei.caaskitdemo.caaskit;
-
- import android.content.Context;
- import android.util.Log;
-
- import com.huawei.caas.caasservice.HwCaasHandler;
- import com.huawei.caas.caasservice.HwCaasServiceCallBack;
- import com.huawei.caas.caasservice.HwCaasServiceManager;
- import com.huawei.caas.caasservice.HwCaasUtils;
- import com.huawei.caas.caasservice.HwCallStateCallBack;
- import com.huawei.caaskitdemo.CaasKitApplication;
-
- /**
- * CaasKit Helper.
- *
- * @since 2019-10-21
- */
- public class CaasKitHelper {
- private static final String TAG = "CaasKitHelper";
-
- private static final int VIEWHEIGHT = 248;
-
- private static final int VIEWWIDTH = 256;
-
- private static final int LOCATION_X = 102;
-
- private static final int LOCATION_Y = 140;
-
- private static CaasKitHelper sCaasKitHelper;
-
- private HwCaasServiceManager mHwCaasServiceManager;
-
- private HwCaasHandler mHwCaasHandler;
-
- private Context mContext;
-
- private boolean mIsSendShowFail;
-
- private boolean mIsCaasKitInit;
-
- private boolean mIsHasCaaSContacts = false;
-
- private HwCallStateCallBack mCallStateCallBack = new HwCallStateCallBack() {
- @Override
- public void notifyCallState(HwCaasUtils.CallState state) {
- Log.d(TAG, "callState: " + state);
- }
- };
-
- private HwCaasServiceCallBack mCallBack = new HwCaasServiceCallBack() {
- @Override
- public void initSuccess(HwCaasHandler handler) {
- // callback after successful initialization of HwCaasHandler.
- mHwCaasHandler = handler;
- if (mHwCaasHandler != null) {
- // 显示在对端呼入界面的来电应用名称,必须设置,不然畅连入口无法显示
- mHwCaasHandler.setCallerAppName("Application");
- // 联系人选择悬浮窗也可以选择全屏列表(类似系统联系人界面)
- mHwCaasHandler.setContactViewStyle(HwCaasUtils.ContactsViewStyle.FULL_SCREEN);
-
- // 当选择悬浮窗时,可设置悬浮窗的大小和初始位置,选择全屏联系人界面了这些设置就不需要了
- // mHwCaasHandler.setContactViewStyle(HwCaasUtils.ContactsViewStyle.FLOAT_VIEW);
- // mHwCaasHandler.setContactViewSize(VIEWWIDTH, VIEWHEIGHT);
- // mHwCaasHandler.setFloatViewLocation(HwCaasUtils.STARTVIEW,
- // HwCaasUtils.POINT_RIGHTANDDOWN, LOCATION_X, LOCATION_Y);
- // mHwCaasHandler.setFloatViewLocation(HwCaasUtils.CONTACTVIEW, HwCaasUtils.POINT_RIGHTANDDOWN, LOCATION_X, LOCATION_Y);
-
- //监听通话状态,呼出中,通话中,无通话,不关心则不用设置
- mHwCaasHandler.setCallStateCallBack(mCallStateCallBack);
- //查询是否有符合要求的联系人,ContactsType.NORMAL_CONTACTS - 普通畅连联系人;ContactsType.SCREEN_SHARING_CONTACTS - 支持屏幕共享的联系人
- mIsHasCaaSContacts = mHwCaasHandler.hasCaaSContacts(HwCaasUtils.ContactsType.SCREEN_SHARING_CONTACTS);
- if (mIsSendShowFail) {
- sendShow();
- mIsSendShowFail = false;
- }
- }
- }
-
- @Override
- public void initFail(int retCode) {
- // callback if init Handler fail.
- Log.i(TAG, "retCode: " + retCode);
- }
-
- @Override
- public void releaseSuccess() {
- // callback after successful release of mHwCaasServiceManager.
- mHwCaasHandler = null;
- mIsSendShowFail = false;
- }
- };
-
- private CaasKitHelper() {
- mContext = CaasKitApplication.getContext();
- }
-
- public synchronized static CaasKitHelper getInstance() {
- if (sCaasKitHelper == null) {
- sCaasKitHelper = new CaasKitHelper();
- }
- return sCaasKitHelper;
- }
-
- public void caasKitInit() {
- Log.d(TAG, "caasKitInit.");
- if (!mIsCaasKitInit) {
- // initialize mHwCaasServiceManager instance.
- mHwCaasServiceManager = HwCaasServiceManager.init();
- // initialize HwCaasHandler instance through handlerType.
- mHwCaasServiceManager.initHandler(mContext, HwCaasUtils.SCREEN_SHARING_TYPE, mCallBack);
- mIsCaasKitInit = true;
- }
- }
-
- public void sendShow() {
- Log.d(TAG, "sendShow.");
- if (mHwCaasHandler != null) {
- Log.d(TAG, "isHasCaaSContacts: " + mIsHasCaaSContacts);
- if (mIsHasCaaSContacts) {
- // 点击入口在应用侧,直接显示联系人列表
- boolean ret = mHwCaasHandler.sendEventToCaasService(HwCaasUtils.SHOW_CONTACTS);
- // 应用侧控制显示悬浮球,用户点击后显示联系人列表
- // boolean ret = mHwCaasHandler.sendEventToCaasService(HwCaasUtils.SHOW);
- Log.d(TAG, "ret: " + ret);
- }
- } else {
- mIsSendShowFail = true;
- Log.e(TAG, "sendShow fail.");
- }
- }
-
- public boolean sendHide() {
- Log.d(TAG, "sendHide.");
- if (mHwCaasHandler != null) {
- // 隐藏联系人列表与 HwCaasUtils.SHOW_CONTACTS 配对使用
- boolean ret = mHwCaasHandler.sendEventToCaasService(HwCaasUtils.HIDE_CONTACTS);
- // 隐藏悬浮球与 HwCaasUtils.SHOW 配对使用
- // boolean isSendoK = mHwCaasHandler.sendEventToCaasService(HwCaasUtils.HIDE);
- Log.d(TAG, "ret: " + ret);
- return ret;
- }
- Log.e(TAG, "sendHide fail.");
- return false;
- }
-
- public void pauseShare() {
- Log.d(TAG, "pauseShare.");
- if (mHwCaasHandler != null) {
- boolean isSendoK = mHwCaasHandler.sendEventToCaasService(HwCaasUtils.SCREEN_SHARING_PAUSE);
- Log.d(TAG, "isSendoK: " + isSendoK);
- }
- }
-
- public void resumeShare() {
- Log.d(TAG, "resumeShare.");
- if (mHwCaasHandler != null) {
- boolean isSendoK = mHwCaasHandler.sendEventToCaasService(HwCaasUtils.SCREEN_SHARING_RESUME);
- Log.d(TAG, "isSendoK: " + isSendoK);
- }
- }
-
- public void caasKitRelease() {
- Log.d(TAG, "caasKitRelease.");
- if (mIsCaasKitInit) {
- if (mHwCaasServiceManager != null) {
- // source release.
- mHwCaasServiceManager.release();
- mHwCaasServiceManager = null;
- }
- mIsCaasKitInit = false;
- }
- }
- }
- /*
- * Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved.
- */
-
- package com.huawei.caaskitdemo;
-
- import android.app.Application;
- import android.content.Context;
- import android.util.Log;
-
- /**
- * Main application.
- *
- * @since 2019-10-21
- */
- public class CaasKitApplication extends Application {
- private static final String TAG = "CaasKitApplication";
-
- private static CaasKitApplication sApplication;
-
- @Override
- public void onCreate() {
- Log.i(TAG, "onCreate.");
- super.onCreate();
- setApp(this);
- }
-
- public static CaasKitApplication getInstance() {
- return sApplication;
- }
-
- public static Context getContext() {
- return sApplication.getApplicationContext();
- }
-
- private static synchronized void setApp(CaasKitApplication app) {
- sApplication = app;
- }
- }
- /*
- * Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved.
- */
-
- package com.huawei.caaskitdemo;
-
- import android.content.Context;
- import android.os.Bundle;
- import android.support.v7.app.AppCompatActivity;
- import android.util.Log;
- import android.view.MotionEvent;
- import android.view.View;
- import android.view.WindowManager;
- import android.view.inputmethod.InputMethodManager;
- import android.widget.Button;
- import android.widget.ImageView;
- import android.widget.TextView;
-
- import com.huawei.caaskitdemo.caaskit.CaasKitHelper;
-
- public class CaasKitDemoActivity extends AppCompatActivity {
- private static final String TAG = "CaaSKitDemoActivity";
-
- private Button mCallShow;
-
- private Button mCallHide;
-
- private Button mSharePause;
-
- private Button mShareResume;
-
- private TextView mPasswordView;
-
- private ImageView mBackgroundView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
- WindowManager.LayoutParams.FLAG_FULLSCREEN);
- setContentView(R.layout.activity_caaskitdemo);
- CaasKitHelper.getInstance().caasKitInit();
- mCallShow = findViewById(R.id.call_show);
- mCallHide = findViewById(R.id.call_hide);
- mCallShow.setOnClickListener(v ->{
- CaasKitHelper.getInstance().sendShow();
- });
- mCallHide.setOnClickListener(v ->{
- CaasKitHelper.getInstance().sendHide();
- });
- mSharePause = findViewById(R.id.share_pause);
- mShareResume = findViewById(R.id.share_resume);
- mSharePause.setOnClickListener(v ->{
- CaasKitHelper.getInstance().pauseShare();
- });
- mShareResume.setOnClickListener(v ->{
- CaasKitHelper.getInstance().resumeShare();
- });
- mPasswordView = findViewById(R.id.paasword_view);
- mPasswordView.setOnFocusChangeListener(new android.view.View.OnFocusChangeListener() {
- @Override
- public void onFocusChange(View v, boolean hasFocus) {
- Log.d(TAG, "onFocusChange:" + hasFocus);
- if (hasFocus) {
- CaasKitHelper.getInstance().pauseShare();
- } else {
- InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
- imm.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0);
- CaasKitHelper.getInstance().resumeShare();
- }
- }
- });
- mBackgroundView = findViewById(R.id.back_ground);
- mBackgroundView.setOnTouchListener(new View.OnTouchListener() {
- @Override
- public boolean onTouch(View var1, MotionEvent var2) {
- if (mPasswordView != null) {
- mPasswordView.clearFocus();
- }
- return true;
- }
- });
- }
-
- @Override
- protected void onPause() {
- Log.d(TAG, "onPause.");
- CaasKitHelper.getInstance().pauseShare();
- super.onPause();
- }
-
- @Override
- protected void onStop() {
- super.onStop();
- Log.d(TAG, "onStop.");
- }
-
- @Override
- protected void onResume() {
- super.onResume();
- Log.d(TAG, "onResume.");
- CaasKitHelper.getInstance().resumeShare();
- }
-
- @Override
- protected void onDestroy() {
- super.onDestroy();
- Log.d(TAG, "onDestroy.");
- CaasKitHelper.getInstance().caasKitRelease();
- }
- }