Genius 发表于 2016-7-7 16:30:53

Android SDK 2.0文档 3-SDK流程之初始化部分

3.1.        SDK初始化部分3.1.1.        初始化部分流程图https://gizwits.kf5.com/attachments/download/751738/001576118177c3b32a410be52249ce9/
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);
            }
      }
    };
}



页: [1]
查看完整版本: Android SDK 2.0文档 3-SDK流程之初始化部分