# Conflicts: # app/build.gradle # app/src/main/java/aicare/net/cn/sdk/ailinksdkdemoandroid/MainActivity.java # app/src/main/java/aicare/net/cn/sdk/ailinksdkdemoandroid/RopeSkippingActivity.java # app/src/main/java/aicare/net/cn/sdk/ailinksdkdemoandroid/ShowBleActivity.java # app/src/main/java/aicare/net/cn/sdk/ailinksdkdemoandroid/WeightScaleWifiBleActivity.java # app/src/main/res/layout/activity_rope_skipping.xmlmaster
applicationId "aicare.net.cn.sdk.ailinksdkdemoandroid" | applicationId "aicare.net.cn.sdk.ailinksdkdemoandroid" | ||||
minSdkVersion 19 | minSdkVersion 19 | ||||
targetSdkVersion 29 | targetSdkVersion 29 | ||||
versionCode 6 | |||||
versionName "1.5.6" | |||||
versionCode 7 | |||||
versionName "1.5.7" | |||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" | ||||
} | } | ||||
buildTypes { | buildTypes { |
<activity android:name=".ClearShakeHandsActivity" /> | <activity android:name=".ClearShakeHandsActivity" /> | ||||
<activity android:name=".BloodSugar4GActivity" /> | <activity android:name=".BloodSugar4GActivity" /> | ||||
<activity android:name=".BloodOxygenActivity" /> | <activity android:name=".BloodOxygenActivity" /> | ||||
<activity android:name=".RopeSkippingActivity" /> | |||||
<service android:name="com.pingwang.bluetoothlib.server.ELinkBleServer"/> | <service android:name="com.pingwang.bluetoothlib.server.ELinkBleServer"/> | ||||
</application> | </application> |
if (bleDevice != null) { | if (bleDevice != null) { | ||||
HeightBodyFatBleData.init(bleDevice); | HeightBodyFatBleData.init(bleDevice); | ||||
HeightBodyFatBleData.getInstance().setOnHeightBodyFatDataCallback(this); | HeightBodyFatBleData.getInstance().setOnHeightBodyFatDataCallback(this); | ||||
HeightBodyFatBleData.getInstance().setOnHeightBodyFatDataCallback(this); | |||||
} | } | ||||
} | } | ||||
@Override | @Override | ||||
public void onScanning(BleValueBean data) { | public void onScanning(BleValueBean data) { | ||||
if (data.getMac().equalsIgnoreCase(mAddress)){ | |||||
connectBle(data.getMac()); | |||||
} | |||||
} | } | ||||
if (mac.equals(mAddress)) { | if (mac.equals(mAddress)) { | ||||
logList.add(0, "连接已经断开"); | logList.add(0, "连接已经断开"); | ||||
listAdapter.notifyDataSetChanged(); | listAdapter.notifyDataSetChanged(); | ||||
startScanBle(0); | |||||
} | } | ||||
@Override | @Override | ||||
public void onServicesDiscovered(String mac) { | public void onServicesDiscovered(String mac) { | ||||
BleDevice bleDevice = mBluetoothService.getBleDevice(mAddress); | |||||
if (bleDevice != null) { | |||||
HeightBodyFatBleData.init(bleDevice); | |||||
HeightBodyFatBleData.getInstance().setOnHeightBodyFatDataCallback(this); | |||||
} | |||||
} | } | ||||
import android.view.View; | import android.view.View; | ||||
import android.widget.TextView; | import android.widget.TextView; | ||||
import com.pingwang.bluetoothlib.AILinkBleManager; | |||||
import com.pingwang.bluetoothlib.AILinkSDK; | import com.pingwang.bluetoothlib.AILinkSDK; | ||||
import com.pingwang.bluetoothlib.config.BleConfig; | |||||
import com.pingwang.bluetoothlib.utils.BleLog; | import com.pingwang.bluetoothlib.utils.BleLog; | ||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.config.BleDeviceConfig; | import aicare.net.cn.sdk.ailinksdkdemoandroid.config.BleDeviceConfig; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.find.FindDeviceNewActivity; | import aicare.net.cn.sdk.ailinksdkdemoandroid.find.FindDeviceNewActivity; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.modules.broadcast_height.BroadcastHeightActivity; | import aicare.net.cn.sdk.ailinksdkdemoandroid.modules.broadcast_height.BroadcastHeightActivity; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.modules.broadcast_nutrition.BroadNutritionActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.SP; | import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.SP; | ||||
private String mAddress; | private String mAddress; | ||||
private boolean isPauseLog = false; | |||||
@Override | @Override | ||||
public void onServiceSuccess() { | public void onServiceSuccess() { | ||||
@Override | @Override | ||||
public void onServiceErr() { | public void onServiceErr() { | ||||
if (mArrayAdapter != null && logList != null) { | if (mArrayAdapter != null && logList != null) { | ||||
logList.add("绑定服务失败"); | |||||
mArrayAdapter.notifyDataSetChanged(); | |||||
refreshLog("绑定服务失败"); | |||||
} | } | ||||
} | } | ||||
@Override | @Override | ||||
public void unbindServices() { | public void unbindServices() { | ||||
if (mArrayAdapter != null && logList != null) { | if (mArrayAdapter != null && logList != null) { | ||||
logList.add("解除绑定服务"); | |||||
mArrayAdapter.notifyDataSetChanged(); | |||||
refreshLog("解除绑定服务"); | |||||
} | } | ||||
} | } | ||||
@Override | @Override | ||||
public void onClick(View v) { | public void onClick(View v) { | ||||
if (v.getId() == R.id.btn_syn_time) { | if (v.getId() == R.id.btn_syn_time) { | ||||
logList.add("同步时间搓"); | |||||
if (RopeSkippingBleData.getInstance() != null) { | if (RopeSkippingBleData.getInstance() != null) { | ||||
RopeSkippingBleData.getInstance().synTime(System.currentTimeMillis()); | RopeSkippingBleData.getInstance().synTime(System.currentTimeMillis()); | ||||
} | } | ||||
mArrayAdapter.notifyDataSetChanged(); | |||||
refreshLog("同步时间搓"); | |||||
} else if (v.getId() == R.id.btn_free_jump) { | } else if (v.getId() == R.id.btn_free_jump) { | ||||
logList.add("启动自由跳绳"); | |||||
if (RopeSkippingBleData.getInstance() != null) { | if (RopeSkippingBleData.getInstance() != null) { | ||||
RopeSkippingBleData.getInstance().startOrStopMode(1, 1); | RopeSkippingBleData.getInstance().startOrStopMode(1, 1); | ||||
} | } | ||||
mArrayAdapter.notifyDataSetChanged(); | |||||
refreshLog("启动自由跳绳"); | |||||
} else if (v.getId() == R.id.btn_time_jump) { | } else if (v.getId() == R.id.btn_time_jump) { | ||||
logList.add("启动倒计时跳绳"); | |||||
if (RopeSkippingBleData.getInstance() != null) { | if (RopeSkippingBleData.getInstance() != null) { | ||||
RopeSkippingBleData.getInstance().startOrStopMode(2, 1); | RopeSkippingBleData.getInstance().startOrStopMode(2, 1); | ||||
} | } | ||||
mArrayAdapter.notifyDataSetChanged(); | |||||
refreshLog("启动倒计时跳绳"); | |||||
} else if (v.getId() == R.id.btn_num_jump) { | } else if (v.getId() == R.id.btn_num_jump) { | ||||
logList.add("启动倒计数跳绳绳"); | |||||
if (RopeSkippingBleData.getInstance() != null) { | if (RopeSkippingBleData.getInstance() != null) { | ||||
RopeSkippingBleData.getInstance().startOrStopMode(3, 1); | RopeSkippingBleData.getInstance().startOrStopMode(3, 1); | ||||
} | } | ||||
mArrayAdapter.notifyDataSetChanged(); | |||||
refreshLog("启动倒计数跳绳绳"); | |||||
} else if (v.getId() == R.id.btn_clear_log) { | } else if (v.getId() == R.id.btn_clear_log) { | ||||
logList.clear(); | |||||
mArrayAdapter.notifyDataSetChanged(); | |||||
if (!isPauseLog) { | |||||
isPauseLog = true; | |||||
} else { | |||||
isPauseLog = false; | |||||
} | |||||
} else if (v.getId() == R.id.btn_stop_free_jump) { | } else if (v.getId() == R.id.btn_stop_free_jump) { | ||||
logList.add("结束自由跳绳"); | |||||
if (RopeSkippingBleData.getInstance() != null) { | if (RopeSkippingBleData.getInstance() != null) { | ||||
RopeSkippingBleData.getInstance().startOrStopMode(1, 0); | RopeSkippingBleData.getInstance().startOrStopMode(1, 0); | ||||
} | } | ||||
mArrayAdapter.notifyDataSetChanged(); | |||||
refreshLog("结束自由跳绳"); | |||||
} else if (v.getId() == R.id.btn_stop_time_jump) { | } else if (v.getId() == R.id.btn_stop_time_jump) { | ||||
logList.add("结束倒计时跳绳"); | |||||
if (RopeSkippingBleData.getInstance() != null) { | if (RopeSkippingBleData.getInstance() != null) { | ||||
RopeSkippingBleData.getInstance().startOrStopMode(2, 0); | RopeSkippingBleData.getInstance().startOrStopMode(2, 0); | ||||
} | } | ||||
mArrayAdapter.notifyDataSetChanged(); | |||||
refreshLog("结束倒计时跳绳"); | |||||
} else if (v.getId() == R.id.btn_stop_num_jump) { | } else if (v.getId() == R.id.btn_stop_num_jump) { | ||||
logList.add("结束倒计数跳绳绳"); | |||||
if (RopeSkippingBleData.getInstance() != null) { | if (RopeSkippingBleData.getInstance() != null) { | ||||
RopeSkippingBleData.getInstance().startOrStopMode(3, 0); | RopeSkippingBleData.getInstance().startOrStopMode(3, 0); | ||||
} | } | ||||
mArrayAdapter.notifyDataSetChanged(); | |||||
refreshLog("结束倒计数跳绳绳"); | |||||
} else if (v.getId() == R.id.btn_default_num) { | } else if (v.getId() == R.id.btn_default_num) { | ||||
logList.add("默认倒计数100"); | |||||
if (RopeSkippingBleData.getInstance() != null) { | if (RopeSkippingBleData.getInstance() != null) { | ||||
RopeSkippingBleData.getInstance().setCountDownNum(50); | RopeSkippingBleData.getInstance().setCountDownNum(50); | ||||
} | } | ||||
mArrayAdapter.notifyDataSetChanged(); | |||||
refreshLog("默认倒计数100"); | |||||
} else if (v.getId() == R.id.btn_default_timer) { | } else if (v.getId() == R.id.btn_default_timer) { | ||||
logList.add("默认倒计时60"); | |||||
if (RopeSkippingBleData.getInstance() != null) { | if (RopeSkippingBleData.getInstance() != null) { | ||||
RopeSkippingBleData.getInstance().setTimerNum(120); | RopeSkippingBleData.getInstance().setTimerNum(120); | ||||
} | } | ||||
mArrayAdapter.notifyDataSetChanged(); | |||||
refreshLog("默认倒计时60"); | |||||
} else if (v.getId() == R.id.btn_get_history) { | } else if (v.getId() == R.id.btn_get_history) { | ||||
logList.add("获取离线记录"); | |||||
if (RopeSkippingBleData.getInstance() != null) { | if (RopeSkippingBleData.getInstance() != null) { | ||||
RopeSkippingBleData.getInstance().offlineHistory(1); | RopeSkippingBleData.getInstance().offlineHistory(1); | ||||
} | } | ||||
mArrayAdapter.notifyDataSetChanged(); | |||||
refreshLog("获取离线记录"); | |||||
} else if (v.getId() == R.id.btn_bind) { | } else if (v.getId() == R.id.btn_bind) { | ||||
logList.add("请按确认按钮"); | |||||
if (RopeSkippingBleData.getInstance() != null) { | if (RopeSkippingBleData.getInstance() != null) { | ||||
RopeSkippingBleData.getInstance().questBind(); | RopeSkippingBleData.getInstance().questBind(); | ||||
} | } | ||||
mArrayAdapter.notifyDataSetChanged(); | |||||
refreshLog("请按确认按钮"); | |||||
} | } | ||||
} | } | ||||
private void refreshLog(String content) { | |||||
if (!isPauseLog) { | |||||
logList.add(content); | |||||
mArrayAdapter.notifyDataSetChanged(); | |||||
} | |||||
} | |||||
@Override | @Override | ||||
public void onFinish(RopeSkipRecord ropeSkipBean) { | public void onFinish(RopeSkipRecord ropeSkipBean) { | ||||
logList.add("跳绳结束"); | |||||
logList.add(ropeSkipBean.toString() + " \n绊绳=" + new Gson().toJson(ropeSkipBean.getStopDetail())); | |||||
mArrayAdapter.notifyDataSetChanged(); | |||||
refreshLog("跳绳结束" + "\n" + ropeSkipBean.toString() + " \n绊绳=" + new Gson().toJson(ropeSkipBean.getStopDetail())); | |||||
} | } | ||||
@Override | @Override | ||||
@Override | @Override | ||||
public void onCurrentData(int status, int mode, int defaultValue, int currentJumpNum, int currentJumpTime, int batter) { | public void onCurrentData(int status, int mode, int defaultValue, int currentJumpNum, int currentJumpTime, int batter) { | ||||
logList.add("实时数据 \n" + "状态: " + status + " ( 0:准备 1:进行中 2:完成) \n" + "模式: " | |||||
refreshLog("实时数据 \n" + "状态: " + status + " ( 0:准备 1:进行中 2:完成) \n" + "模式: " | |||||
+ mode + " (1:自由 2:倒计时 3:倒计数) \n" | + mode + " (1:自由 2:倒计时 3:倒计数) \n" | ||||
+ "默认值: " + defaultValue + " 电量 " + batter + "\n 当前个数: " + currentJumpNum + " 时间 " + currentJumpTime); | + "默认值: " + defaultValue + " 电量 " + batter + "\n 当前个数: " + currentJumpNum + " 时间 " + currentJumpTime); | ||||
mArrayAdapter.notifyDataSetChanged(); | |||||
} | } | ||||
@Override | @Override | ||||
public void onResultTimerAndCountDownNum(int mode, int timer) { | public void onResultTimerAndCountDownNum(int mode, int timer) { | ||||
if (mode == 2) { | if (mode == 2) { | ||||
logList.add("设置默认时间:" + timer); | |||||
refreshLog("设置默认时间:" + timer); | |||||
} else if (mode == 3) { | } else if (mode == 3) { | ||||
logList.add("设置默认个数:" + timer); | |||||
refreshLog("设置默认个数:" + timer); | |||||
} | } | ||||
mArrayAdapter.notifyDataSetChanged(); | |||||
} | } | ||||
@Override | @Override | ||||
public void onResultStatus(int mode, int result) { | public void onResultStatus(int mode, int result) { | ||||
logList.add("模式: " + mode + " (1:自由 2:倒计时 3:倒计数)" + "结果: " + result + "0:成功 1:失败 2:不支持"); | |||||
mArrayAdapter.notifyDataSetChanged(); | |||||
refreshLog("模式: " + mode + " (1:自由 2:倒计时 3:倒计数)" + "结果: " + result + "0:成功 1:失败 2:不支持"); | |||||
} | } | ||||
@Override | @Override | ||||
public void onBindResult(int result) { | public void onBindResult(int result) { | ||||
logList.add("确认绑定结果: " + result + " 0 : 成功 1 :失败 2 不支持"); | |||||
mArrayAdapter.notifyDataSetChanged(); | |||||
refreshLog("确认绑定结果: " + result + " 0 : 成功 1 :失败 2 不支持"); | |||||
} | } | ||||
@Override | @Override | ||||
public void onFinishOffHistory(List<RopeSkipRecord> list) { | public void onFinishOffHistory(List<RopeSkipRecord> list) { | ||||
if (list==null){ | |||||
logList.add("没有离线记录"); | |||||
}else { | |||||
logList.add("离线记录:"); | |||||
logList.add(new Gson().toJson(list)); | |||||
mArrayAdapter.notifyDataSetChanged(); | |||||
if (list == null) { | |||||
refreshLog("没有离线记录"); | |||||
} else { | |||||
refreshLog("离线记录:\n" + new Gson().toJson(list)); | |||||
} | } | ||||
} | } | ||||
@Override | |||||
public void finish() { | |||||
super.finish(); | |||||
if (mBluetoothService != null) | |||||
mBluetoothService.disconnectAll(); | |||||
} | |||||
} | } |
import java.util.Map; | import java.util.Map; | ||||
import java.util.UUID; | import java.util.UUID; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.config.AppConfig; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.config.BleDeviceConfig; | import aicare.net.cn.sdk.ailinksdkdemoandroid.config.BleDeviceConfig; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.dialog.LoadingIosDialogFragment; | import aicare.net.cn.sdk.ailinksdkdemoandroid.dialog.LoadingIosDialogFragment; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.find.FindDeviceNewActivity; | import aicare.net.cn.sdk.ailinksdkdemoandroid.find.FindDeviceNewActivity; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.modules.ble_nutrition.BleNutritionActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.modules.blood_glucose.BloodGlucoseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.modules.coffee_scale.CoffeeScaleActivity; | import aicare.net.cn.sdk.ailinksdkdemoandroid.modules.coffee_scale.CoffeeScaleActivity; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.modules.food_temp.FoodTempActivity; | import aicare.net.cn.sdk.ailinksdkdemoandroid.modules.food_temp.FoodTempActivity; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.modules.share_charger.ShareChargerActivity; | import aicare.net.cn.sdk.ailinksdkdemoandroid.modules.share_charger.ShareChargerActivity; | ||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import androidx.appcompat.app.AppCompatActivity; | import androidx.appcompat.app.AppCompatActivity; | ||||
import androidx.core.app.ActivityCompat; | import androidx.core.app.ActivityCompat; | ||||
import cn.net.aicare.modulelibrary.module.RopeSkipping.RopeSkippingBleData; | |||||
import cn.net.aicare.modulelibrary.module.scooter.SkateboardBleConfig; | import cn.net.aicare.modulelibrary.module.scooter.SkateboardBleConfig; | ||||
bleDevice.setA7Encryption(false); | bleDevice.setA7Encryption(false); | ||||
mNoEncryptionMac = ""; | mNoEncryptionMac = ""; | ||||
} | } | ||||
dismissLoading(); | dismissLoading(); | ||||
Intent intent = new Intent(); | Intent intent = new Intent(); |
mMHandler.sendEmptyMessage(ToRefreUi); | mMHandler.sendEmptyMessage(ToRefreUi); | ||||
} | } | ||||
@Override | @Override | ||||
public void onSupportUnit(List<SupportUnitBean> list) { | public void onSupportUnit(List<SupportUnitBean> list) { | ||||
import com.pingwang.bluetoothlib.listener.OnCallbackBle; | import com.pingwang.bluetoothlib.listener.OnCallbackBle; | ||||
import com.pingwang.bluetoothlib.utils.BleLog; | import com.pingwang.bluetoothlib.utils.BleLog; | ||||
import com.pingwang.bluetoothlib.utils.BleStrUtils; | import com.pingwang.bluetoothlib.utils.BleStrUtils; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.config.BleDeviceConfig; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.dialog.WifiDialog; | |||||
import java.lang.ref.WeakReference; | import java.lang.ref.WeakReference; | ||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.HashMap; | import java.util.HashMap; | ||||
import java.util.List; | import java.util.List; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.config.BleDeviceConfig; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.dialog.WifiDialog; | |||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import cn.net.aicare.modulelibrary.module.BodyFatScale.AppHistoryRecordBean; | import cn.net.aicare.modulelibrary.module.BodyFatScale.AppHistoryRecordBean; | ||||
import cn.net.aicare.modulelibrary.module.BodyFatScale.BodyFatBleUtilsData; | import cn.net.aicare.modulelibrary.module.BodyFatScale.BodyFatBleUtilsData; | ||||
bodyFatBleUtilsData.sendData(BodyFatDataUtil.getInstance().checkUrl()); | bodyFatBleUtilsData.sendData(BodyFatDataUtil.getInstance().checkUrl()); | ||||
break; | break; | ||||
} | |||||
} | |||||
} | |||||
private byte[] convertToASCII(String string) { | private byte[] convertToASCII(String string) { | ||||
char[] ch = string.toCharArray(); | char[] ch = string.toCharArray(); |
public final static int SHARE_CONDOM = 0x1007; | public final static int SHARE_CONDOM = 0x1007; | ||||
/** | |||||
* 跳绳 | |||||
*/ | |||||
public final static int ROPE_SKIPPING = 0x002f; | |||||
/** | /** | ||||
* 身高体脂秤 | * 身高体脂秤 | ||||
*/ | */ |
android:layout_width="wrap_content" | android:layout_width="wrap_content" | ||||
android:layout_height="wrap_content" | android:layout_height="wrap_content" | ||||
android:text="共享套套机" /> | android:text="共享套套机" /> | ||||
<Button | |||||
android:id="@+id/btn_rope_skip" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="跳绳" /> | |||||
<Button | <Button | ||||
android:id="@+id/btn_rope_skip" | android:id="@+id/btn_rope_skip" |