|
3.1. SDK初始化部分3.1.1. 初始化部分流程图
3.1.2. 配置AndroidManifest.xml请将下面权限配置代码复制到 AndroidManifest.xml 文件中:
1
2
3
4
5
6
7
8
9
| <uses-permission 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" />
| 权限说明:
权限用途
ACCESS_NETWORK_STATE允许程序访问有关GSM网络信息
ACCESS_WIFI_STATE允许程序访问WiFI网络状态信息
READ_PHONE_STATE允许程序访问手机状态信息
ACCESS_COARSE_LOCATION允许程序访问CellID或WiFi热点来获取粗略的位置
ACCESS_FINE_LOCATION允许程序访问精良位置(如GPRS)
WRITE_EXTERNAL_STORAGE允许程序写入外部SD卡
INTERNET允许程序打开网络接口
CHANGE_WIFI_STATE允许程序改变WiFi连接状态
CHANGE_WIFI_MULTICAST_STATE允许程序改变WiFi多播状态3.1.3. 注册SDK通用**注册SDK通用**是为了能让APP收到来自GizWifiSDK类的响应事件,包含了注册、登录、配置设备、绑定设备等回调接口。该**是SDK使用中十分重要的一个**,与GizWifiSDK类相关的操作都会在这里会回调。如果没有正确注册通用**,将无法正常使用SDK。注册监听时,APP可以根据自己的需求实现回调接口。建议两种设置方式:
1、在每一个使用到的Activity中都实例化一次**并注册一次,且只实现需要的回调接口。该种方式比较灵活,可在service中使用。但要注意必须每次打开activity都监听一次, 且无法多个Activity同时收到回调。
【示例代码】
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| // 实例化**
GizWifiSDKListener mListener = new GizWifiSDKListener() {
// 实现手机号注册用户回调
@Override
public void didRegisterUser(GizWifiErrorCode result, String uid, String token){
if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
// 注册成功,处理注册成功的逻辑
} else {
// 注册失败,处理注册失败的逻辑
}
}
};
public void onCreate() {
super.onCreate();
// 注册**
GizWifiSDK.sharedInstance().setListener(mListener);
// 调用SDK的手机号注册接口
GizWifiSDK.sharedInstance().registerUser("HelloGizwits", "12345678");
}
| 2、在一个基类中实例化一次**,并把回调抛出,子类继承基类,这就不需要每个子类都实例化一次**。该种方式通过继承的方式,可以多个Activity都收到回调。但该种方式无法在Service中使用。如无特别说明,文档中的范例都是使用该方法注册**。
【示例代码】
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
| // 创建基类,在基类中实例化和注册**
public class BaseActivity extends Activity {
private GizWifiSDKListener mListener = new GizWifiSDKListener() {
@Override
public void didRegisterUser(GizWifiErrorCode result, String uid, String token) {
BaseActivity.this.didRegisterUser(result, uid, token);
}
};
public void didRegisterUser(GizWifiErrorCode result, String uid, String token){
// 实现逻辑
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//每次启动activity都要注册一次sdk**,保证sdk状态能正确回调
GizWifiSDK.sharedInstance().setListener(mListener);
}
}
//子类继承基类,实现基类的回调接口。
public class TestActivity extends BaseActivity {
protected void onCreate(android.os.Bundle savedInstanceState) {
//调用父类方法
super.onCreate(savedInstanceState);
//调用用户注册方法
GizWifiSDK.sharedInstance().registerUser ("your_phone_number", "your_ password", “your_verify_code”, GizUserAccountType.GizUserPhone);
}
@Override
public void didRegisterUser(GizWifiErrorCode result, String uid, String token) {
if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
// 注册成功
} else {
// 注册失败
}
}
}
| 3.1.4. 初始化 sdkSDK启动前,任何功能都是无法正常使用的。SDK启动时,会进行SDK初始化,并自动发现当前局域网设备。SDK将通过通用监听,上报已发现的设备以及相应的事件。APP可以先设置SDK的通用监听,再启动SDK,以便处理这些事件通知。
SDK启动时需要指定应用程序的AppID,开发者需要先在机智云网站上为自己的APP申请一个AppID,请在应用的Application或者第一个启动的Activity的onCreate中调用该方法指定应用的APPID。该方法只需要调用一次。
SDK的日志可以帮助开发者发现APP运行时发生的问题,SDK默认将所有日志信息输出到调试终端和日志文件中。如果手机有SD卡,则日志文件会保存在SD卡上,如果没有SD卡,就只保存在应用程序路径下。SD卡上的日志文件目录为手机SD卡路径下的app_package_name/GizWifiSDK/GizSDKLog。APP如果不希望在调试终端输出日志,可以通过日志级别设置接口,把日志输出级别修改为GizLogPrintNone。
【示例代码】
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| public void onCreate() {
super.onCreate();
GizWifiSDK.sharedInstance().setListener(mListener);
GizWifiSDK.sharedInstance().startWithAppID(getApplicationContext(), "your_app_id");
GizWifiSDKListener mListener = new GizWifiSDKListener() {
@Override
public void didNotifyEvent(GizEventType eventType, Object eventSource, GizWifiErrorCode eventID, String eventMessage) {
if (eventType == GizEventType.GizEventSDK) {
// SDK的事件通知
Log.i("GizWifiSDK", "SDK event happened: " + eventID + ", " + eventMessage);
} else if (eventType == GizEventType.GizEventDevice) {
// 设备连接断开时可能产生的通知
GizWifiDevice mDevice = (GizWifiDevice)eventSource;
Log.i("GizWifiSDK", "device mac: " + mDevice.getMacAddress() + " disconnect caused by eventID: " + eventID + ", eventMessage: " + eventMessage);
} else if (eventType == GizEventType.GizEventM2MService) {
// M2M服务返回的异常通知
Log.i("GizWifiSDK", "M2M domain " + (String)eventSource + " exception happened, eventID: " + eventID + ", eventMessage: " + eventMessage);
} else if (eventType == GizEventType.GizEventToken) {
// token失效通知
Log.i("GizWifiSDK", "token " + (String)eventSource + " expired: " + eventMessage);
}
}
};
}
|
|
|