| 
 | 
 
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); 
            } 
        } 
    }; 
} 
 
 |  
  
 |   
 
 
 
 |