CaaS Engine是华为依托畅连业务通信能力,面向应用开发者和硬件开发者提供的开放接口,帮助开发者实现应用内实时共享的能力,助力用户即刻分享应用内允许共享的内容。
在这个Codelab中,你将创建Demo Project,并将CaaS Engine的SDK集成到Demo Project中,以及完成CaaS Engine服务的整体流程搭建。
集成CaaS Engine能力,需要完成以下准备工作:
向项目中的build.gradle中配置仓库:
buildscript {
repositories {
google()
jcenter()
maven {url 'http://developer.huawei.com/repo/'}
}
}
allprojects {
repositories {
maven {url 'http://developer.huawei.com/repo/'}
google()
jcenter()
}
}
在工程APP目录中的build.gradle中添加如下依赖:
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
implementation group: 'com.huawei.caaskit', name: 'caaskitlite', version: '1.0.1.400', ext: 'aar'
}
点击同步工程按钮,进行工程同步,如下图所示:
同步成功后,如下图所示:
在自身应用AndroidManifest.xml中添加开发者联盟创建应用时生成的appid信息,name为"com.huawei.hms.client.appid",value为"appid=*",*用自己注册的appid。权限申请,请依照《开发指南》中"开发准备"的详细说明来完成。
CaaS服务的初始化封装代码如下:CaasKitHelper.java
public class CaasKitHelper {
private static final String TAG = "CaasKitHelper";
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) {
...
}
@Override
public void initFail(int retCode) {
...
}
@Override
public void releaseSuccess() {
...
}
};
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;
}
}
}
在合适的位置进行调用:CaasKitDemoActivity.java
public class CaasKitDemoActivity extends AppCompatActivity {
private static final String TAG = "CaaSKitDemoActivity";
@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();
}
}
CaasKitHelper.java
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);
}
}
@Override
public void initFail(int retCode) {
...
}
@Override
public void releaseSuccess() {
...
}
};
}
CaasKitHelper.java
public class CaasKitHelper {
private static final String TAG = "CaasKitHelper";
private HwCaasHandler mHwCaasHandler;
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);
}
}
}
在合适的位置调用:CaasKitDemoActivity.java
public class CaasKitDemoActivity extends AppCompatActivity {
private static final String TAG = "CaaSKitDemoActivity";
private Button mSharePause;
private Button mShareResume;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
mSharePause = findViewById(R.id.share_pause);
mShareResume = findViewById(R.id.share_resume);
mSharePause.setOnClickListener(v ->{
CaasKitHelper.getInstance().pauseShare();
});
mShareResume.setOnClickListener(v ->{
CaasKitHelper.getInstance().resumeShare();
});
}
}
CaasKitHelper.java
public class CaasKitHelper {
private static final String TAG = "CaasKitHelper";
private static CaasKitHelper sCaasKitHelper;
private HwCaasServiceManager mHwCaasServiceManager;
private HwCaasHandler mHwCaasHandler;
private Context mContext;
private boolean mIsSendShowFail;
private boolean mIsCaasKitInit;
private boolean mIsHasCaaSContacts = false;
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;
}
}
在合适的位置调用:CaasKitDemoActivity.java
public class CaasKitDemoActivity extends AppCompatActivity {
private static final String TAG = "CaaSKitDemoActivity";
private Button mCallShow;
private Button mCallHide;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
mCallShow = findViewById(R.id.call_show);
mCallHide = findViewById(R.id.call_hide);
mCallShow.setOnClickListener(v ->{
CaasKitHelper.getInstance().sendShow();
});
mCallHide.setOnClickListener(v ->{
CaasKitHelper.getInstance().sendHide();
});
}
}
CaasKitHelper.java
public class CaasKitHelper {
...
public void caasKitRelease() {
Log.d(TAG, "caasKitRelease." + mIsCaasKitInit);
if (mIsCaasKitInit) {
if (mHwCaasServiceManager != null) {
// source release.
mHwCaasServiceManager.release();
mHwCaasServiceManager = null;
}
mIsCaasKitInit = false;
}
}
}
在合适的位置调用:CaasKitDemoActivity.java
public class CaasKitDemoActivity extends AppCompatActivity {
@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroy.");
CaasKitHelper.getInstance().caasKitRelease();
}
}
祝贺你,你已经成功完成了Codelab并学到了:
您可以阅读下面链接,了解更多相关的信息。
相关文档