机智云SDK导入学习笔记
第一部分:下载SDK,并完成初始化
- 下载机智云集成SDK
- 导入jar包。添加Library
- 在main文件夹下添加jniLibs文件夹,将armeabi文件夹放入,并在build.gradle 添加相应依赖
4.添加闪屏页,添加一个activity,并添加布局文件,在
AndroidManifes.xml下,将
<intent-filter> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
添加到你注册的activity下,完成入口切换
5.初始化SDK:
//写一个方法初始化SDK
private void initSdk() {
GizWifiSDK.sharedInstance().setListener(mListener);
ConcurrentHashMap<String,String> appInfo = new ConcurrentHashMap<>();appInfo.put("appId", "your_app_id");
appInfo.put("appSecret", "your_app_secret");// 设置要过滤的设备 productKey 列表。不过滤则直接传 null
List<ConcurrentHashMap<String, String>> productInfo=new ArrayList<>();
ConcurrentHashMap<String, String> product = new ConcurrentHashMap<>();
product.put("productKey", "your_product_secret");
product.put("productSecret", "your_product_secret");
productInfo.add(product);// 指定要切换的域名信息。使用机智云生产环境则传 null
GizWifiSDK.sharedInstance().startWithAppInfo(this, appInfo,productInfo, null, false);
};
//设置监听,测试是否成功初始化
private GizWifiSDKListener mListener = new GizWifiSDKListener(){
@Override
public void didNotifyEvent(GizEventType eventType, Object eventSource, GizWifiErrorCode eventID, String eventMessage) {
super.didNotifyEvent(eventType, eventSource, eventID, eventMessage);
Log.e("=w",eventType.toString());
//如果初始化成功,就匿名登录
if(eventType==GizEventType.GizEventSDK){
GizWifiSDK.sharedInstance().userLoginAnonymous();
}
第二部分 动态获取权限
-
请将下面权限配置代码复制到 AndroidManifest.xml 文件中:
android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" /> ```
2.动态获取权限:
//检查权限情况
private void CheckAndroidPermission() {
if(Build.VERSION.SDK_INT>=23)
{
requestRunPerMison(new String[]{
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.ACCESS_WIFI_STATE
});
}
}
private void requestRunPerMison(String[] strings) {
int states =0;
for (String permison:strings) {
if(ContextCompat.checkSelfPermission(this,permison)!= PackageManager.PERMISSION_GRANTED)
ActivityCompat.requestPermissions(this,strings,108);
else{
states++;//如果有权限,就加一
}
}//窗口弹窗授权权限方法
if(states==5)
{
mhandler.sendEmptyMessageDelayed(107,2500);//都已经获取成功,跳转页面
}
}
//获取状态回调函数
OnRequestPermissionsResultCallback a =new OnRequestPermissionsResultCallback() {
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode){
case 108:if(grantResults.length>0)
{
List<String> denioedPermison = new ArrayList<>();
for(int i=0;i<grantResults.length;i++) {
int grantPermison = grantResults[i];
String Permison =permissions[i];
if(grantPermison!=PackageManager.PERMISSION_GRANTED)
denioedPermison.add(Permison);
}//循环查询,如果有拒绝的,就添加到LIST列表
if(denioedPermison.isEmpty()){
mhandler.sendEmptyMessage(107);
}else {
Toast.makeText(SplashActivity.this,"你拒绝了部分权限,请手动打开",Toast.LENGTH_SHORT).show();
mhandler.sendEmptyMessageDelayed(107,2500);//发送消息
}
}
}
3.导入第三方UI库,快捷开发
QMUI 第三方UI库
https://github.com/Tencent/QMUI_Android/
添加无导航栏,主题style中设置
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>//设置全屏显示
将第三方库中的需要的color 和style 尽量copy进自己的项目,否则报错。
QMUITopBar topBar=findViewById(R.id.topbar);//定义控件
topBar.setTitle("科派科技");//设置标题
/*此处设置右边的图片按钮,跳转至配网界面*/
topBar.addRightImageButton(R.mipmap.ico_add,R.id.addic).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
将设备回调的token保存到本地
SharedPreferences
封装一个SharePreference 方法
private static final String SP_NAME="config";//定义一个静态常量。
//key是键值 value 存储字符
//储存数据
private void putString(Context mcontext,String key,String value){
//打开一个SharedPreferences
SharedPreferences sp=mcontext.getSharedPreferences(SP_NAME,Context.MODE_PRIVATE);
SharedPreferences.Editor editor=sp.edit();
editor.putString(key,value);
editor.apply();//要应用下才能保存
}
//获取数据
private static String getString(Context mcontext,String key,String defvalue){
SharedPreferences sp=mcontext.getSharedPreferences(SP_NAME,Context.MODE_PRIVATE);
return sp.getString(key,defvalue);
}