#无线开放 android SDK
##android sdk 1.2.3 版特性(支持bongX 和 XX)
- oauth授权,并获取该用户绑定设备信息。
- 事件感知:后台扫描、感知滑动触摸事件、睡眠入出、bong状态入出等事件。
- 距离获取:支持获取蓝牙设备的rssi信息。
- 绑定设备同步:因bongX是长连的,若bong app在连接中,只能通知bong app触发同步。
- 切换环境、调试模式等
- bong X/XX 需要beta版本测试环境的APK绑定,请注意
##android sdk 1.2.0 版特性
- 独立的蓝牙能力:后台扫描、感知Yes!键触摸事件
- oauth授权,并获取该用户绑定设备信息
- 绑定设备同步:同步数据并上传云端
- 绑定设备通信:点亮、震动、获取传感器原始数据
- 切换环境、调试模式等
- 加入触摸Yes!键震动开关
触摸Yes!键大约1秒为短触后松开(亮灯一次),3秒触摸为长触(亮灯两次),[手机]也会对应有短、长震动反馈。
###快速调试
-
- 自助注册一个测试环境的账号,上面项目中有测试环境APK下载,安装后注册并绑定bong。
-
- 下载或clone SDK开发包,可运行Demo程序。
-
- 运行后,首先点击“用户授权”,就取到了令牌以及绑定设备信息,即可调试demo。
- 注意:请注意,如果需要你输入账号和密码,是指输入bong的账号和密码,如果你在使用的是测试环境,测试环境的数据库与正式环境是切分开的,因此你需要使用测试环境版本的APP重新注册。
###调测、账号注意事项
- [测试环境]和[线上环境]的账号、数据完全独立,交叉登录则会报密码错误或未注册;开发者可到开放平台 ,或者此github项目内下载测试环境的安装包,来自助注册测试账号并在测试环境使用、调测。
- 默认最初分配的AppID、AppKey等信息仅对测试环境生效,意味着只能在测试环境授权通过并调测,否则可能报授权失败。
- 测试完成将要上线时请到bong[开放平台] ,申请应用上线,通过后线上环境即生效。
###开发环境
- 测试环境:账号、数据与正式环境隔离,测试专用,线上用户看不到。
- 预发环境:预发环境(GM)和线上环境账号、数据体系一致,预发环境测试通过后将发布线上。
- 正式环境:线上用户使用的环境。
###同步的建议(如果你的app需要)重要!!
- 避免短时间内发起多次,建议两次同步需要大于2分钟。
- 建议一次同步的数据范围不大于24小时,同步一天内的数据(尽管你可以一次同步N天数据)。
- 建议自动保存上次同步时间,从上次同步时间同步到现在。
###快速集成
-
- 注册: 在bong开放平台[申请创建应用],注册并获取AppID、AppKey、AppSecret等信息。
-
- 集成: 将开发包里libs文件夹里jar包拷入你项目的libs文件夹并引入项目。
-
- 注册: 将下面权限等信息注册到你项目的manifest文件。
permission
<!-- 必须的权限声明 over-->
<permission android:name="cn.bong.android.permission.EVENT"
android:label="bong event"
android:protectionLevel="dangerous"/>
<uses-permission android:name="cn.bong.android.permission.EVENT"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<!-- 必须的权限声明 over-->
application
<!-- 必须的一些组件声明 -->
<activity
android:name="cn.bong.android.sdk.AuthActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait"/>
<receiver android:name="cn.bong.android.sdk.BongDataReceiver"
android:permission="cn.bong.android.permission.EVENT">
<intent-filter>
<action android:name="cn.bong.android.action.event"/>
<action android:name="cn.bong.android.action.command"/>
</intent-filter>
</receiver>
<service android:name="cn.bong.android.sdk.BlueService"/>
<!-- 必须的一些组件声明 over-->
###使用简介: ####初始化 必须要到开放平台[申请]申请专属的获取AppID、AppKey、AppSecret等信息。
// 初始化sdk(接入api时需要AppID和AppSecret,且请注意AppSecret等信息的保密工作,防止被盗用)
BongManager.initialize(this, "1419735044202", "", "558860f5ba4546ddb31eafeee11dc8f4");
// 开启 调试模式,打印日志(默认关闭)
BongManager.setDebuged(true);
//设置 环境(默认线上):Daily(测试), PreDeploy(预发,线上数据), Product(线上);
BongManager.setEnvironment(Environment.Daily);
// 设置触摸Yes键时震动
BongManager.setTouchVibrate(true);
####反序列化,释放资源
// 会清空各种数据,包括授权信息,恢复到调用initialize方法前的状态。
BongManager.unitialize();
####开启授权(注意一次授权有效期为3个月,所以注意不要频繁调用,仅当没有授权和授权过期时才调用此方法) 注意SDK初始化时输入你的AppID以及AppKey,测试环境注册一个测试账号,调用下面方法来完成授权。
// 开启 bong 触摸监听 实例
BongManager.bongAuth(this, "demo", new AuthUiListener() {
@Override
public void onError(AuthError error) {
}
@Override
public void onSucess(AuthInfo result) {
}
@Override
public void onCancel() {
}
});
####授权相关方法(授权的同时也获取了绑定设备信息,同步、Yes键监听时需要绑定设备才行)
// 清除AccessToken和UserID等信息并登出
BongManager.bongLogout();
// 判断是否有AccessToken和UserID
BongManager.isSessionValid();
// 获取AccessToken
BongManager.getAccessToken();
// 获取UserID
BongManager.getLoginUid();
####同步数据
// 增量同步:最后一次同步到现在
BongManager.bongDataSyncnizedByUpdate(listener);
// 同步过去的24小时到现在
BongManager.bongDataSyncnizedByHours(listener, System.currentTimeMillis(), 24);
// 同步指定时间内数据
BongManager.bongDataSyncnizedByTime(listener, startTime, endTime);
DataSyncUiListener listener = new DataSyncUiListener() {
@Override
public void onStateChanged(DataSyncState state) {
}
@Override
public void onError(DataSyncError error) {
}
@Override
public void onSucess() {
}
};
####开启触摸监听
// 开启 bong 触摸监听 实例
BongManager.turnOnTouchEventListen(this, new TouchEventListener() {
@Override
public void onTouch(TouchEvent event) {
}
@Override
public void onLongTouch(TouchEvent event) {
}
});
####关闭触摸监听
// 关闭 bong 触摸监听服务(与开启对应,注意在合适时机关闭)
BongManager.turnOffTouchEventListen(context);
###注意:下面方法需要和bong通信,需要触摸Yes键来建立连接 ####开启传感器示例
BongManager.bongStartSensorOutput(sensorUiListener);
ConnectUiListener sensorUiListener = new ConnectUiListener() {
@Override
public void onStateChanged(ConnectState state) {
}
@Override
public void onFailed(String msg) {
}
@Override
public void onSucess() {
}
@Override
public void onDataReadInBackground(byte[] data) {
// data是一个length为3的数组,data[0]为X轴数据,data[1]为Y轴数据,data[3]为Z轴数据。
}
};
####关闭传感器示例
// 和开启传感器是一对,请注意在合适的时候注销监听防止内存泄露
BongManager.bongStopSensorOutput(sensorUiListener);
####震动示例
// 第一个参数为震动次数
BongManager.bongVibrate(3, null);
####点亮示例
// 第一个参数为点亮次数
BongManager.bongLight(3, null);
####触摸事件监听 开启&关闭
if (BongManager.isTouchCatching()) {
// 关闭触摸事件监听
BongManager.turnOffTouchEventListen(this);
} else {
// 开启触摸事件监听
BongManager.turnOnTouchEventListen(this, new TouchEventListener() {
@Override
public void onTouch(TouchEvent event) {
if (BongManager.getBongType() == BongType.bong2) {
// bong 2
} else if (BongManager.getBongType().isBongXorXX()) {
// bong X or XX
// bongX 或者 bongXX 的具体事件类型如下
switch (event.getTouchType()) {
case None:
setTitle(R.string.app_name);
break;
case ToLeft:
// 向左滑动
break;
case ToRight:
// 向右滑动
break;
case ToTop:
// 向上滑动
break;
case ToBottom:
// 向下滑动
break;
case Clockwise:
//顺时针滑动
break;
case AntiClockwise:
//逆时针滑动
break;
case SleepIn:
//睡眠进入
break;
case SleepOut:
//睡眠退出
break;
case BongIn:
//进入bong状态
break;
case BongOut:
//退出bong状态
break;
default:
break;
}
}
}
@Override
public void onLongTouch(TouchEvent event) {
events.add(event);
adapter.notifyDataSetChanged();
if (!BongManager.getBongType().isBongXorXX()) {
showMoreActions();
}
}
});
}
####距离感知 开启&关闭
if (BongManager.getBongType().isBongXorXX()) {
if (!BongManager.isRssiGeting()) {
BongManager.turnOnRssitListen(this, new RssiListener() {
@Override
public void onRssi(int rssi) {
}
});
} else {
BongManager.turnOffRssitListen(this);
}
} else {
DialogUtil.showTips(activity, null, "仅bongX 和bongXX 支持获取距离");
}