-keep class com.zhixun.blesdk.hssdk.entity.*{*;}
-keep class com.zhixun.blesdk.hssdk.entity.weather.*{*;}
-keep class com.zhixun.blesdk.hssdk.entity.file.*{*;}
--keep class com.zhixun.blesdk.hssdk.HsAgentSdk{*;}
+-keep class com.zhixun.blesdk.hssdk.HsFileAgentSdk{*;}
-keep class com.zhixun.android.sdk.polysdk.callback.*{*;}
-keep class com.zhixun.android.sdk.polysdk.entity.*{*;}
import android.os.Bundle;
import android.view.View;
-import android.widget.ListView;
import com.zhixun.blesdk.app.adapter.MsgAdapter;
-import com.zhixun.blesdk.hssdk.data.AiManage;
import java.util.ArrayList;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
-import androidx.documentfile.provider.DocumentFile;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.content.ActivityNotFoundException;
-import android.content.ContentUris;
-import android.content.Context;
import android.content.Intent;
-import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
-import android.os.Environment;
-import android.provider.DocumentsContract;
-import android.provider.MediaStore;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
-import android.widget.ListView;
import android.widget.Toast;
import com.zhixun.blesdk.app.adapter.MsgAdapter;
import com.zhixun.blesdk.app.utils.FileHelper;
-import com.zhixun.blesdk.hssdk.HsAgentSdk;
-import com.zhixun.blesdk.hssdk.callback.ISendFileListener;
-import com.zhixun.blesdk.hssdk.entity.file.HsMarketDialSum;
+import com.zhixun.blesdk.hssdk.HsFileAgentSdk;
+import com.zhixun.blesdk.hssdk.file.filecallback.ISendFileListener;
+import com.zhixun.blesdk.hssdk.file.entity.HsMarketDialSum;
import java.io.File;
import java.io.FileNotFoundException;
List<String> paths = new ArrayList<>();
paths.add(path);
- HsAgentSdk.getInstance().getAPI().installMarketDial(dialSum, paths, new ISendFileListener() {
+ HsFileAgentSdk.getInstance().getAPI().installMarketDial(dialSum, paths, new ISendFileListener() {
@Override
public void onProgressChange(int progress) {
runOnUiThread(new Runnable() {
import androidx.core.app.ActivityCompat;
import android.content.Intent;
-import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Handler;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
-import android.widget.Toast;
import com.google.gson.Gson;
import com.zhixun.blesdk.app.adapter.DeviceAdapter;
-import com.zhixun.blesdk.app.utils.ByteTools;
import com.zhixun.blesdk.app.utils.PermissionUtil;
-import com.zhixun.blesdk.hssdk.HsAgentSdk;
+import com.zhixun.blesdk.hssdk.HsFileAgentSdk;
import com.zhixun.blesdk.hssdk.callback.BtVtransferCallback;
import com.zhixun.blesdk.hssdk.callback.IBtScanCallback;
import com.zhixun.blesdk.hssdk.callback.OnMsgSendCallBack;
import com.zhixun.blesdk.hssdk.entity.E3MsgBody;
import com.zhixun.blesdk.hssdk.entity.HsAlarmItem;
-import com.zhixun.blesdk.hssdk.entity.HsSleepItem;
-import com.zhixun.blesdk.hssdk.entity.MsgBody;
+import com.zhixun.blesdk.hssdk.file.entity.MsgBody;
import com.zhixun.blesdk.hssdk.entity.MsgResponse;
import com.zhixun.blesdk.hssdk.entity.HsWearDevice;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
- HsAgentSdk.getInstance().init(this, true, true);
- HsAgentSdk.getInstance().getAPI().AIinit(this);
+ HsFileAgentSdk.getInstance().init(this, true, true);
+ HsFileAgentSdk.getInstance().getAPI().AIinit(this);
// FileLogger.init(this);
// PicZipApi.getInstance().init();
deviceListview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- HsAgentSdk.getInstance().getAPI().disconnect();
- HsAgentSdk.getInstance().getAPI().connect(bluetoothDevices.get(position));
+ HsFileAgentSdk.getInstance().getAPI().disconnect();
+ HsFileAgentSdk.getInstance().getAPI().connect(bluetoothDevices.get(position));
}
});
// }, 1000);
- HsAgentSdk.getInstance().getAPI().setOnWearConnectCallBack(new BtVtransferCallback() {
+ HsFileAgentSdk.getInstance().getAPI().setOnWearConnectCallBack(new BtVtransferCallback() {
@Override
public void onConnectStateChange(int connectState, HsWearDevice device) {
super.onConnectStateChange(connectState, device);
}
});
- checkOtaChannel_btn.setText("切换ota通道(目前:"+(HsAgentSdk.getInstance().getFileCannel()==0?"2AE0":"2AE6")+")");
+ checkOtaChannel_btn.setText("切换ota通道(目前:"+(HsFileAgentSdk.getInstance().getFileCannel()==0?"2AE0":"2AE6")+")");
}
public void test(View view) {
//FC:9B:36:E1:74:1E FC:9B:55:29:33:EA
//02010A 020A00 0FFF 4A48 08 EA3329559BFC 0504 010110 0E09 4B554D4920553620333345410000000000000000000000000000000000000000000000000000
//02010A 020A00 0FFF 4A48 08 1E74E1369BFC 0504 010110 0E09 4B 55 4D 49 20 55 36 20 37 34 31 45 0000000000000000000000000000000000000000000000000000
- if (HsAgentSdk.getInstance().getAPI().isConnected()) return;
+ if (HsFileAgentSdk.getInstance().getAPI().isConnected()) return;
- HsAgentSdk.getInstance().getAPI().startScan();
- HsAgentSdk.getInstance().getAPI().setScanCallback(new IBtScanCallback() {
+ HsFileAgentSdk.getInstance().getAPI().startScan();
+ HsFileAgentSdk.getInstance().getAPI().setScanCallback(new IBtScanCallback() {
@Override
public void onScanResultUpdate(List<HsWearDevice> results) {
Log.i(TAG, "onScanResultUpdate--" + new Gson().toJson(results));
//String data = "730210 01000000 1F000000 01000000 1F00 7B226D6163223A5B5D2C22706E223A225869616F6D69222C227470223A307DB0";
// String data = "73 01 01 01000000 00000000 01000000 0000";
E3MsgBody msgBody = new E3MsgBody(MsgBody.TYPE_GET_ALRAMS);
- HsAgentSdk.getInstance().sendMsg(msgBody, new OnMsgSendCallBack() {
+ HsFileAgentSdk.getInstance().sendMsg(msgBody, new OnMsgSendCallBack() {
@Override
public void onResponse(MsgResponse msgResponse) {
List<HsAlarmItem> alarmItems = (List<HsAlarmItem>) msgResponse.getBody();
}
public void disconnect(View view) {
- HsAgentSdk.getInstance().getAPI().disconnect();
+ HsFileAgentSdk.getInstance().getAPI().disconnect();
}
public void checkOtaChannel(View view) {
- int channel = HsAgentSdk.getInstance().getFileCannel();
+ int channel = HsFileAgentSdk.getInstance().getFileCannel();
if(channel==0){
channel = 1;
}else {
channel = 0;
}
- HsAgentSdk.getInstance().setFileCannel(channel);
+ HsFileAgentSdk.getInstance().setFileCannel(channel);
checkOtaChannel_btn.setText("切换ota通道(目前:"+(channel==0?"2AE0":"2AE6")+")");
}
startActivity(new Intent(this, AiLogActivity.class));
}
public void reconnect(View view) {
- HsWearDevice bean = HsAgentSdk.getInstance().getAPI().getLastDevice();
- HsAgentSdk.getInstance().getAPI().connect(bean);
+ HsWearDevice bean = HsFileAgentSdk.getInstance().getAPI().getLastDevice();
+ HsFileAgentSdk.getInstance().getAPI().connect(bean);
Log.d(TAG,"--"+MsgBody.TRAIN_TYPE_RUN);
//2024-07-23 01:31:00/2024-07-23 04:29:00 2024-07-23 04:39:00/2024-07-23 08:13:00
@Override
protected void onDestroy() {
super.onDestroy();
- HsAgentSdk.getInstance().getAPI().stopScan();
+ HsFileAgentSdk.getInstance().getAPI().stopScan();
}
//TODO 处理权限结果回调
import com.google.gson.Gson;
import com.zhixun.blesdk.app.R;
import com.zhixun.blesdk.app.adapter.FuncationAdapter;
-import com.zhixun.blesdk.hssdk.HsAgentSdk;
+import com.zhixun.blesdk.hssdk.HsFileAgentSdk;
import com.zhixun.blesdk.hssdk.callback.IFileReceiverCallback;
-import com.zhixun.blesdk.hssdk.callback.ISendFileListener;
+import com.zhixun.blesdk.hssdk.file.filecallback.ISendFileListener;
import com.zhixun.blesdk.hssdk.callback.OnFindPhoneListener;
import com.zhixun.blesdk.hssdk.callback.OnMsgSendCallBack;
import com.zhixun.blesdk.hssdk.callback.OnTrainStateListener;
import com.zhixun.blesdk.hssdk.entity.HsPhoneNumber;
import com.zhixun.blesdk.hssdk.entity.HsSleepItem;
import com.zhixun.blesdk.hssdk.entity.HsSleepSetting;
-import com.zhixun.blesdk.hssdk.entity.OTAInfo;
+import com.zhixun.blesdk.hssdk.file.entity.OTAInfo;
import com.zhixun.blesdk.hssdk.entity.E3MsgBody;
import com.zhixun.blesdk.hssdk.entity.E4MsgBody;
import com.zhixun.blesdk.hssdk.entity.HsAlarmItem;
import com.zhixun.blesdk.hssdk.entity.HsUserInfo;
import com.zhixun.blesdk.hssdk.entity.HsValueItem;
import com.zhixun.blesdk.hssdk.entity.HsWaterRemind;
-import com.zhixun.blesdk.hssdk.entity.MsgBody;
+import com.zhixun.blesdk.hssdk.file.entity.MsgBody;
import com.zhixun.blesdk.hssdk.entity.MsgResponse;
-import com.zhixun.blesdk.hssdk.entity.file.HsCustomDialSum;
-import com.zhixun.blesdk.hssdk.entity.file.HsMarketDialSum;
+import com.zhixun.blesdk.hssdk.file.entity.HsMarketDialSum;
import java.io.File;
import java.text.SimpleDateFormat;
otaInfo.setMid(2);
otaInfo.setMinor(1);
oldpro = -1;
- HsAgentSdk.getInstance().getAPI().startOTA(filePath,
+ HsFileAgentSdk.getInstance().getAPI().startOTA(filePath,
otaInfo, new ISendFileListener() {
@Override
public void onProgressChange(int progress) {
});*/
break;
case 43:
- HsAgentSdk.getInstance().getAPI().cancleFileSend(1, new OnMsgSendCallBack() {
+ HsFileAgentSdk.getInstance().getAPI().cancleFileSend(1, new OnMsgSendCallBack() {
@Override
public void onResponse(MsgResponse msgResponse) {
if(onResultListener!=null){
oldDialPro = -1;
List<String> paths = new ArrayList<>();
paths.add("/sdcard/Android/data/com.zhixun.blesdk.app/files/hs_sdk/mainbg.lzma");
- HsAgentSdk.getInstance().getAPI().installMarketDial(dialSum, paths, new ISendFileListener() {
+ HsFileAgentSdk.getInstance().getAPI().installMarketDial(dialSum, paths, new ISendFileListener() {
@Override
public void onProgressChange(int progress) {
if(onResultListener!=null&&oldDialPro!=progress){
msgBody4.setData(ByteTools.little_intToByte(1,2));
break;
case 49:
- HsAgentSdk.getInstance().getAPI().getDeviceLog(new IFileReceiverCallback() {
+ HsFileAgentSdk.getInstance().getAPI().getDeviceLog(new IFileReceiverCallback() {
@Override
public void onProgressChange(String progress) {
if(onResultListener!=null){
}
if(msgBody!=null||msgBody4!=null){
- HsAgentSdk.getInstance().getAPI().sendMessage(msgBody==null?msgBody4:msgBody, new OnMsgSendCallBack() {
+ HsFileAgentSdk.getInstance().getAPI().sendMessage(msgBody==null?msgBody4:msgBody, new OnMsgSendCallBack() {
@Override
public void onResponse(MsgResponse msgResponse) {
String msg = "";
}
});
- HsAgentSdk.getInstance().getAPI().setOnTrainingListener(new OnTrainStateListener() {
+ HsFileAgentSdk.getInstance().getAPI().setOnTrainingListener(new OnTrainStateListener() {
@Override
public void onState(int state, int time) {
if(onResultListener!=null){
}
});
- HsAgentSdk.getInstance().getAPI().setFindPhoneListener(new OnFindPhoneListener() {
+ HsFileAgentSdk.getInstance().getAPI().setFindPhoneListener(new OnFindPhoneListener() {
@Override
public void onfind(int state) {
if(onResultListener!=null){
versionCode 1
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles "consumer-rules.pro"
- versionName '0.0.6'
+ versionName '0.0.1'
buildConfigField("String", "SDK_VERSION", "\"${versionName}\"")
multiDexEnabled true
}
variant ->
variant.outputs.all {
//在这里修改文件名
- outputFileName = "HS-SDK-${defaultConfig.versionName}-${getTime()}.aar"
+ outputFileName = "HS-FILE-SDK-${defaultConfig.versionName}-${getTime()}.aar"
}
}
return new Date().format("yyyyMMddHHmm")
}
+// 定义一个任务来打包生成jar
+task makeJar(type: Copy) {
+ // 删除存在的jar文件
+// delete 'build/libs/Poly-SDK.jar'
+
+ // 设置要复制的文件
+ from('build/intermediates/aar_main_jar/release/')
+
+ // 打包成jar
+ into('build/libs/')
+
+ // 包含classes.jar文件
+ include('classes.jar')
+
+ // 重命名为自定义的名字
+ rename('classes.jar', 'HS-FILE-SDK-v0.1-241015.jar')
+}
+
dependencies {
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.8.0'
- implementation files('libs\\Poly-SDK-v1.6-240812.jar')
+// implementation files('libs\\Poly-SDK-v1.6-240812.jar')
// implementation files('libs\\Poly-SDK-v1.5-240809.jar')
testImplementation 'junit:junit:4.13.2'
-classobfuscationdictionary src/main/assets/rules.txt
-packageobfuscationdictionary src/main/assets/rules.txt
--keep class com.zhixun.blesdk.hssdk.callback.*{*;}
--keep class com.zhixun.blesdk.hssdk.entity.*{*;}
--keep class com.zhixun.blesdk.hssdk.entity.weather.*{*;}
--keep class com.zhixun.blesdk.hssdk.entity.file.*{*;}
--keep class com.zhixun.blesdk.hssdk.HsAgentSdk{*;}
-
--keep class com.zhixun.android.sdk.polysdk.callback.*{*;}
--keep class com.zhixun.android.sdk.polysdk.entity.*{*;}
--keep class com.zhixun.android.sdk.polysdk.bean.*{*;}
--keep class com.zhixun.android.sdk.polysdk.PolymerizeAgent{*;}
--keep class com.zhixun.android.sdk.polysdk.callback.*{*;}
--keep class com.zhixun.android.sdk.polysdk.entity.*{*;}
--keep class com.zhixun.android.sdk.polysdk.bean.*{*;}
+-keep class com.zhixun.blesdk.hssdk.file.filecallback.*{*;}
+-keep class com.zhixun.blesdk.hssdk.file.entity.*{*;}
+-keep class com.zhixun.blesdk.hssdk.HsFileAgentSdk{*;}
+
+#-keep class com.zhixun.android.sdk.polysdk.callback.*{*;}
+#-keep class com.zhixun.android.sdk.polysdk.entity.*{*;}
+#-keep class com.zhixun.android.sdk.polysdk.bean.*{*;}
+#-keep class com.zhixun.android.sdk.polysdk.PolymerizeAgent{*;}
+#-keep class com.zhixun.android.sdk.polysdk.callback.*{*;}
+#-keep class com.zhixun.android.sdk.polysdk.entity.*{*;}
+#-keep class com.zhixun.android.sdk.polysdk.bean.*{*;}
import android.content.Context;
-import com.zhixun.blesdk.hssdk.callback.IHSWearAPI;
-import com.zhixun.blesdk.hssdk.callback.OnMsgSendCallBack;
+import com.zhixun.blesdk.hssdk.file.filecallback.IHSWearAPI;
import com.zhixun.blesdk.hssdk.data.HsApiKit;
-import com.zhixun.blesdk.hssdk.entity.MsgBody;
import com.zhixun.blesdk.hssdk.util.SobLog;
-import com.zhixun.blesdk.hssdk.util.SpUtils;
/**
* 获取到此实例后
* - 调用init初始化
* - 进行功能调用
*/
-public class HsAgentSdk{
+public class HsFileAgentSdk {
- private static HsAgentSdk sInstance = null;
+ private static HsFileAgentSdk sInstance = null;
private Context mContext;
private IHSWearAPI wearAPI;
private int fileCannel = 1;//0走之前的通道流程,1走新的流程
- private HsAgentSdk() {
+ private HsFileAgentSdk() {
wearAPI = new HsApiKit();
}
*
* @return SDK实例
*/
- public static HsAgentSdk getInstance() {
+ public static HsFileAgentSdk getInstance() {
if(sInstance == null) {
- synchronized(HsAgentSdk.class) {
+ synchronized(HsFileAgentSdk.class) {
if(sInstance == null) {
- sInstance = new HsAgentSdk();
+ sInstance = new HsFileAgentSdk();
}
}
}
return wearAPI;
}
- public void sendMsg(MsgBody body, OnMsgSendCallBack callBack){
- wearAPI.sendMessage(body,callBack);
- }
/**
* 初始化SDK
wearAPI.init(context);
}
- public int getFileCannel() {
+ /*public int getFileCannel() {
fileCannel = SpUtils.getInstance().getIntValue(SpUtils.KEY_FILE_CANNEL);
return fileCannel;
}
public void setFileCannel(int fileCannel) {
this.fileCannel = fileCannel;
SpUtils.getInstance().saveIntValue(SpUtils.KEY_FILE_CANNEL,fileCannel);
- }
+ }*/
}
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
-import static com.zhixun.blesdk.hssdk.callback.BtVtransferCallback.STATE_CONNECTFAIL;
-
import android.Manifest;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothGattService;
import android.bluetooth.BluetoothManager;
import android.bluetooth.BluetoothProfile;
-import android.bluetooth.BluetoothSocket;
import android.bluetooth.le.BluetoothLeScanner;
import android.bluetooth.le.ScanCallback;
import android.bluetooth.le.ScanFilter;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
-import android.content.pm.ProviderInfo;
import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.os.ParcelUuid;
import android.text.TextUtils;
import android.util.Log;
-import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import com.google.gson.Gson;
-import com.zhixun.blesdk.hssdk.HsAgentSdk;
import com.zhixun.blesdk.hssdk.callback.BtVtransferCallback;
import com.zhixun.blesdk.hssdk.callback.IBtScanCallback;
-import com.zhixun.blesdk.hssdk.callback.ISendFileListener;
import com.zhixun.blesdk.hssdk.callback.OnMsgSendCallBack;
import com.zhixun.blesdk.hssdk.data.BleMsgReceiverHandler;
import com.zhixun.blesdk.hssdk.data.BleMsgSendHandler;
-import com.zhixun.blesdk.hssdk.data.FileHandler;
import com.zhixun.blesdk.hssdk.entity.AppTime;
import com.zhixun.blesdk.hssdk.entity.E4MsgBody;
import com.zhixun.blesdk.hssdk.entity.HsWearDevice;
-import com.zhixun.blesdk.hssdk.entity.MsgBody;
+import com.zhixun.blesdk.hssdk.file.entity.MsgBody;
import com.zhixun.blesdk.hssdk.entity.MsgResponse;
import com.zhixun.blesdk.hssdk.entity.PhoneInfo;
import com.zhixun.blesdk.hssdk.util.BleDataUtil;
import com.zhixun.blesdk.hssdk.util.SobLog;
import com.zhixun.blesdk.hssdk.util.SpUtils;
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Calendar;
SobLog.d(TAG, "mBleDeviceMap--remove---" + mBleConnectDevice.toString());
}
refreshDeviceCache();
- HsAgentSdk.getInstance().getAPI().release();
+
// mBleConnectDevice = null;
}
}
+++ /dev/null
-package com.zhixun.blesdk.hssdk.callback;
-
-import android.content.Context;
-import android.graphics.Bitmap;
-
-import com.zhixun.android.sdk.polysdk.callback.IPicCompressCallback;
-import com.zhixun.blesdk.hssdk.entity.OTAInfo;
-import com.zhixun.blesdk.hssdk.entity.file.HsEpoInfo;
-import com.zhixun.blesdk.hssdk.entity.HsNotifyParams;
-import com.zhixun.blesdk.hssdk.entity.HsWearDevice;
-import com.zhixun.blesdk.hssdk.entity.MsgBody;
-import com.zhixun.blesdk.hssdk.entity.file.HsMarketDialSum;
-
-import java.util.List;
-
-public interface IHSWearAPI {
-
- void AIinit(Context var1);
-
- void init(Context var1);
-
- void setWearDevice(HsWearDevice var1);
-
- void startScan();
-
- void setScanCallback(IBtScanCallback scanCallback);
- void stopScan();
- HsWearDevice getWearDevice();
-
- HsWearDevice getLastDevice();
-
- void reConnectDevice();
-
- void clearLastDevice();
-
- /** @deprecated */
- @Deprecated
- void setLanguageMode(int mode, OnMsgSendCallBack callBack);
-
- void setUnitMode(int mode, OnMsgSendCallBack callBack);
-
- void sendMessage(MsgBody body, OnMsgSendCallBack callBack);
-
- boolean isConnected();
-
- boolean isConnecting();
-
- void connect(HsWearDevice hsWearDevice);
-
- void unBondDevice();
-
- boolean isUnBonding();
-
- void disconnect();
-
-
- void setOnWearConnectCallBack(BtVtransferCallback callback);
-
- void sendNotifyMsg(HsNotifyParams params, OnMsgSendCallBack callBack);
- void removeNotifyMsg(int uid, OnMsgSendCallBack callBack);
-
- void sendEpoFile(HsEpoInfo epoInfo, OnMsgSendCallBack callBack);
- void sendMusicFile(String filePath, OnMsgSendCallBack callBack);
-
- void setFindPhoneListener(OnFindPhoneListener onFindPhoneListener);
- //void addReceiveCallback(OnReceiveCallback var1);
-
- //void removeReceiveCallback(OnReceiveCallback var1);
-
- //void addOnSwitchDialCallBack(OnSwitchDialCallBack<WearDevice> var1);
-
- // void removeOnSwitchDialCallBack(OnSwitchDialCallBack var1);
-
- void delectDeviceDial(int uid, OnMsgSendCallBack callBack);
- void setOnUnBondDeviceCallBack(OnUnBondDeviceCallBack onUnBondDeviceCallBack);
-
- void setOnTrainingListener(OnTrainStateListener onTrainStateListener);
-
- void setTakePhotoListener(OnTakePhotoListener onTakePhotoListener);
-
- void setOnGetWeatherListener(OnGetWeatherListener onGetWeatherListener);
- void startOTA(String path,OTAInfo otaInfo,ISendFileListener sendFileListener);
-
- /**
- * 1:OTA
- * 2:MP3
- * 3:表盘
- * @param type
- * @param callBack
- */
- void cancleFileSend(int type, OnMsgSendCallBack callBack);
-
- void installMarketDial(HsMarketDialSum dialSum, List<String> files, ISendFileListener sendFileListener);
-
- void isInstallDial(int uid, OnMsgSendCallBack callBack);
-
- void deleteDial(int uid, OnMsgSendCallBack callBack);
-
- void picCompress(Bitmap bitmap, IPicCompressCallback picCompressCallback);
-
- void getDeviceLog(IFileReceiverCallback iFileReceiverCallback);
- void release();
-}
+++ /dev/null
-package com.zhixun.blesdk.hssdk.data;
-
-import android.content.Context;
-import android.media.AudioFormat;
-import android.media.AudioRecord;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-import android.text.TextUtils;
-import android.util.Log;
-
-import androidx.annotation.NonNull;
-
-import com.zhixun.android.sdk.polysdk.PolymerizeAgent;
-import com.zhixun.android.sdk.polysdk.callback.AuthCallback;
-import com.zhixun.android.sdk.polysdk.callback.IAIChannelChangeCallback;
-import com.zhixun.android.sdk.polysdk.callback.IAudioConvertListener;
-import com.zhixun.android.sdk.polysdk.callback.OnChatMsgListener;
-import com.zhixun.android.sdk.polysdk.callback.OnTranscriptionDataChange;
-import com.zhixun.blesdk.hssdk.bttools.ByteTools;
-import com.zhixun.blesdk.hssdk.callback.OnMsgSendCallBack;
-import com.zhixun.blesdk.hssdk.entity.E3MsgBody;
-import com.zhixun.blesdk.hssdk.entity.E4MsgBody;
-import com.zhixun.blesdk.hssdk.entity.MsgBody;
-import com.zhixun.blesdk.hssdk.entity.MsgResponse;
-import com.zhixun.blesdk.hssdk.util.SobLog;
-import com.zhixun.blesdk.hssdk.util.SpUtils;
-
-public class AiManage {
-
- private String TAG = "AiManage";
-
- private static AiManage sInstance;
-
- public static final int TYPE_GET_WEAR_AUDIO = 13313;
- public static final int TYPE_SEND_AI_RESULT = 7938;
-
- private Handler handler = new Handler(Looper.getMainLooper()){
- @Override
- public void handleMessage(@NonNull Message msg) {
- super.handleMessage(msg);
- switch (msg.what){
- case 101:
- PolymerizeAgent.getInstance().getAiAPI().stopTrans();
- receiverLenth = 0;
- allLenth = 0;
- break;
- }
- }
- };
- public AiManage() {
-
- }
- public static AiManage getInstance() {
- if (sInstance == null) {
- synchronized (AiManage.class) {
- if (null == sInstance)
- sInstance = new AiManage();
- }
- }
-
- return sInstance;
- }
- private boolean isLogin = false;
- private boolean isTransStart = false;
- public void init(Context context){
- PolymerizeAgent.getInstance().init(context,true,true);
- doLogin();
- PolymerizeAgent.getInstance().getAiAPI().setOnTranscriptionDataChange(new OnTranscriptionDataChange() {
- @Override
- public void onStartChange(int action,boolean b) {
- SobLog.i(TAG,"onStartChange--"+b);
- isTransStart = b;
- if(b){
-
- sendAudio(audio);
- }else {
- receiverLenth = 0;
- allLenth = 0;
- }
- }
-
- @Override
- public void onChange(String s, String s1) {
- SobLog.d(TAG,"onChange--"+"s--"+s+"-s1--"+s1);
- if(s.equals("end")||s.equals("fail")){
-// handler.removeMessages(101);
-
- if(s.equals("end")){
- E4MsgBody msgBody = new E4MsgBody(TYPE_SEND_AI_RESULT);
- msgBody.setAiValue(E4MsgBody.TYPE_AI_REQ_TRANS,s1);
- BleMsgSendHandler.getInstance().sendMsg(msgBody,null);
-
- PolymerizeAgent.getInstance().getAiAPI().sendChatMsg(s1);
- }else if(s.equals("fail")){
- E4MsgBody msgBody = new E4MsgBody(TYPE_SEND_AI_RESULT);
- msgBody.setData(ByteTools.little_intToByte(4,1));
- BleMsgSendHandler.getInstance().sendMsg(msgBody,null);
- }
-
- if(onAiLogListener!=null){
- onAiLogListener.onLogChange("识别结果--"+s1);
- }
- }
-
- }
- });
-
-
- PolymerizeAgent.getInstance().getAiAPI().setOnChatMsgListener(new OnChatMsgListener() {
- @Override
- public void onChange(String chatType, String text) {
- SobLog.d(TAG,"OnChatonChange--"+"chatType--"+chatType+"-text--"+text);
- if(chatType.equals("start")){
- chatReq = new StringBuffer();
- }else if(chatType.equals("end")){
- /*String msg = chatReq.toString().trim();
- SobLog.d(TAG,"send--"+msg);
- if(!TextUtils.isEmpty(msg)){
- E4MsgBody msgBody = new E4MsgBody(TYPE_SEND_AI_RESULT);
- msgBody.setAiValue(E4MsgBody.TYPE_AI_REQ_CHAT,msg);
- BleMsgSendHandler.getInstance().sendMsg(msgBody,null);
- }*/
- E4MsgBody msgBody = new E4MsgBody(TYPE_SEND_AI_RESULT);
- msgBody.setData(ByteTools.little_intToByte(4,1));
- BleMsgSendHandler.getInstance().sendMsg(msgBody,null);
- if(onAiLogListener!=null){
- onAiLogListener.onLogChange("回复结束");
- }
- }else {
- if(!TextUtils.isEmpty(text)){
- if(text.startsWith("failed:")){
- E4MsgBody msgBody = new E4MsgBody(TYPE_SEND_AI_RESULT);
- msgBody.setData(ByteTools.little_intToByte(3,1));
- BleMsgSendHandler.getInstance().sendMsg(msgBody,null);
- }else {
- E4MsgBody msgBody = new E4MsgBody(TYPE_SEND_AI_RESULT);
- msgBody.setAiValue(E4MsgBody.TYPE_AI_REQ_CHAT,text);
- BleMsgSendHandler.getInstance().sendMsg(msgBody,null);
- }
-
- }
- if(onAiLogListener!=null){
- onAiLogListener.onLogChange("回复中&&"+text);
- }
-// chatReq.append(text);m
- }
- }
- });
- }
-
- private StringBuffer chatReq = new StringBuffer();
-
- private void sendAudio(byte[] outData){
- int bufferSize = AudioRecord.getMinBufferSize(16000,
- AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);
- if(outData.length<=bufferSize){
- PolymerizeAgent.getInstance().getAiAPI().sendTransByte(outData);
- }else {
- PolymerizeAgent.getInstance().getAiAPI().convertAudioSbcToPcm(outData, "16000", "1", new IAudioConvertListener() {
- @Override
- public void onError(String s) {
- Log.i(TAG,"onError--"+s);
- E4MsgBody msgBody = new E4MsgBody(TYPE_SEND_AI_RESULT);
- msgBody.setData(ByteTools.little_intToByte(0,1));
- BleMsgSendHandler.getInstance().sendMsg(msgBody,null);
- }
-
- @Override
- public void onSuccess(String s) {
- Log.i(TAG,"onSuccess--"+s);
- }
-
- @Override
- public void onSuccess(int page,int all,byte[] bytes) {
- Log.i(TAG,"onSuccess--"+bytes.length);
- PolymerizeAgent.getInstance().getAiAPI().sendTransByte(bytes);
-
- if(page==all-1){
- if(receiverLenth==allLenth){
- handler.sendEmptyMessageDelayed(101,800);
- }
- if(onAiLogListener!=null){
- onAiLogListener.onLogChange("语音识别中--");
- }
- }
- }
- });
-
-
- }
- }
-
- private byte[] audio;
- public void startTrans(){
- if(onAiLogListener!=null){
- onAiLogListener.onLogChange("收到语音数据--");
- }
- E3MsgBody body = new E3MsgBody(TYPE_GET_WEAR_AUDIO);
- BleMsgSendHandler.getInstance().sendMsg(body, new OnMsgSendCallBack() {
- @Override
- public void onResponse(MsgResponse msgResponse) {
-
-
- audio = (byte[]) msgResponse.getBody();
- PolymerizeAgent.getInstance().getAiAPI().startTrans();
-// SobLog.d(TAG,"sendAudio--"+audio.length);
- receiverLenth = receiverLenth+audio.length;
-
- SobLog.d(TAG,receiverLenth+"/"+allLenth);
-// sendAudio(audio);//只有测试GPT时 使用
- if(onAiLogListener!=null){
- onAiLogListener.onLogChange("语音接收结束--"+receiverLenth+"/"+allLenth);
- }
- }
-
- @Override
- public void onFailure(int code, String msg) {
- if(onAiLogListener!=null){
- onAiLogListener.onLogChange("startTrans onFailure--"+code+"--"+msg);
- }
-
- }
- });
- }
-
- private int allLenth = 0;
- private int receiverLenth = 0;
- public void setAllLenth(int lenth){
- if(allLenth==0){
- this.allLenth = lenth;
- }
- }
-
- public void clear(){
- if(isTransStart){
-
- PolymerizeAgent.getInstance().getAiAPI().stopTrans();
- }
- allLenth = 0;
- receiverLenth = 0;
- }
-
-
- public void doLogin(){
- String pwd = SpUtils.getInstance().getStringValue(SpUtils.KEY_AI_PWD);
- if(TextUtils.isEmpty(pwd)){
- pwd = "CVOachlw1DO1Ei5uabOkHd1wRYoMQA";
- }
- PolymerizeAgent.getInstance().getAuthenAPI().authentication("281106AFB0F7"
- , pwd, "HHosiYUNdG42t1cTgKOzIUPOvAVMI2QT", new AuthCallback() {
- @Override
- public void onSuccess(String result) {
- isLogin = true;
- SobLog.i(TAG,"result--"+result);
- if(onAiLogListener!=null){
- onAiLogListener.onLogChange("鉴权结果-onSuccess-"+result);
- }
- }
-
- @Override
- public void onFail(int code,String msg) {
- SobLog.i(TAG,"onFail--"+msg);
- if(onAiLogListener!=null){
- onAiLogListener.onLogChange("鉴权结果-onFail-"+msg);
- }
- if(code==50021){
- if(onAiLogListener!=null){
- onAiLogListener.onLogChange("-密码错误,准备重新注册-");
- }
- doRegiest(true);
- }
- }
- });
- }
-
- public void doRegiest(boolean isPwdFile){
- PolymerizeAgent.getInstance().getAuthenAPI().regiest("HHosiYUNdG42t1cTgKOzIUPOvAVMI2QT"
- , "281106AFB0F7", "pafOCKLiUbeVHbdZlddH", new AuthCallback() {
- @Override
- public void onSuccess(String result) {
- Log.i(TAG,"result--"+result);
- SpUtils.getInstance().saveValue(SpUtils.KEY_AI_PWD,result);
- if(onAiLogListener!=null){
- onAiLogListener.onLogChange("注册结果-onSuccess-"+result);
- }
- if(isPwdFile){
- if(onAiLogListener!=null){
- onAiLogListener.onLogChange("-注册成功,准备登录-");
- }
- doLogin();
- }
- }
-
- @Override
- public void onFail(int code,String msg) {
- Log.i(TAG,"onFail--"+msg);
- if(onAiLogListener!=null){
- onAiLogListener.onLogChange("注册结果-onFail-"+msg);
- }
- }
- });
-
- }
-
- public String API_KEY = "sk-proj-04ogvrZQqyaiv1OWw8OZT3BlbkFJG9Gyr8oFvRdmr3oXQNbX";
- public void checkAIChannel(){
- PolymerizeAgent.getInstance().getAuthenAPI().setAIChannelKey("CHAT GPT", API_KEY, new IAIChannelChangeCallback() {
- @Override
- public void onChange(boolean result, String channel) {
- Log.d(TAG,"result--"+result+"--channel--"+channel);
- }
- });
- }
-
- public void setOnAiLogListener(OnAiLogListener onAiLogListener) {
- this.onAiLogListener = onAiLogListener;
- }
-
-
- private OnAiLogListener onAiLogListener;
- public interface OnAiLogListener{
- void onLogChange(String log);
- }
-}
package com.zhixun.blesdk.hssdk.data;
-import static com.zhixun.blesdk.hssdk.data.AiManage.TYPE_GET_WEAR_AUDIO;
+
import static com.zhixun.blesdk.hssdk.data.ReceiverLooperThread.TYPE_RECEIVER_LOG;
import com.zhixun.blesdk.hssdk.bttools.ByteTools;
SobLog.d(TAG,"receiverData-分包数据-"+receiverData.toString());
//是分包数据
if(splitDataMap.containsKey(receiverData.getType())){
- if (receiverData.getType()==TYPE_GET_WEAR_AUDIO){
+ /*if (receiverData.getType()==TYPE_GET_WEAR_AUDIO){
receiverLooperThread.removeAudioTimeOut();
- }
+ }*/
ArrayList<ReceiverData> cacheData = splitDataMap.get(receiverData.getType());
cacheData.add(receiverData);
SobLog.d(TAG,"receiverData-已有-"+cacheData.size());
splitDataMap.remove(receiverData.getType());
}else {
- if (receiverData.getType()==TYPE_GET_WEAR_AUDIO){
+ /*if (receiverData.getType()==TYPE_GET_WEAR_AUDIO){
receiverLooperThread.startAudioTimeOut();
- }
+ }*/
splitDataMap.put(receiverData.getType(),cacheData);
}
receiverLooperThread.handData(data);
}
- public void audioTimeOut(){
- splitDataMap.remove(TYPE_GET_WEAR_AUDIO);
- }
+// public void audioTimeOut(){
+// splitDataMap.remove(TYPE_GET_WEAR_AUDIO);
+// }
public void addCallBack(int type, OnMsgSendCallBack callBack){
receiverLooperThread.addResponseCallBack(type,callBack);
import androidx.annotation.NonNull;
-import com.zhixun.blesdk.hssdk.HsAgentSdk;
-import com.zhixun.blesdk.hssdk.bttools.BleHandle;
import com.zhixun.blesdk.hssdk.bttools.ByteTools;
+import com.zhixun.blesdk.hssdk.file.filecallback.BtMsgCallback;
import com.zhixun.blesdk.hssdk.callback.OnMsgSendCallBack;
-import com.zhixun.blesdk.hssdk.entity.MsgBody;
+import com.zhixun.blesdk.hssdk.file.entity.MsgBody;
import com.zhixun.blesdk.hssdk.util.SobLog;
import java.util.ArrayList;
&&msgBody.getType()!=MsgBody.TYPE_GET_SDCARD_STORAGE
&&msgBody.getType()!=TYPE_SET_PHONEINFO
&&msgBody.getType()!=FileHandler.TYPE_SEND_FILE_CHECK
- &&msgBody.getType()!=MsgBody.TYPE_CANCLE_SEND_FILE
- &&!HsAgentSdk.getInstance().getAPI().isConnected()){
+ &&msgBody.getType()!=MsgBody.TYPE_CANCLE_SEND_FILE){
if(callBack!=null){
callBack.onFailure(1001,"发送失败,未连接设备");
}
int channel = 0xFF & data[0];
SobLog.d(TAG, "MSG_SEND---" + ByteTools.byteArrToHex(sendBytes));
- BleHandle.getInstance().deviceWrite(sendBytes,channel);
-
+// BleHandle.getInstance().deviceWrite(sendBytes,channel);
+ if(msgCallback!=null){
+ msgCallback.toSend(sendBytes);
+ }
break;
case MSG_CHECKSENDMSG:
if (msgList.size() > 0) {
Looper.loop();
}
}
+
+ private BtMsgCallback msgCallback;
+ public void setMsgSender(BtMsgCallback callback){
+ msgCallback = callback;
+ }
}
import com.google.gson.Gson;
import com.zhixun.blesdk.hssdk.bttools.BleHandle;
import com.zhixun.blesdk.hssdk.bttools.ByteTools;
+import com.zhixun.blesdk.hssdk.file.filecallback.BtMsgCallback;
import com.zhixun.blesdk.hssdk.callback.IFileReceiverCallback;
-import com.zhixun.blesdk.hssdk.callback.ISendFileListener;
+import com.zhixun.blesdk.hssdk.file.filecallback.ISendFileListener;
import com.zhixun.blesdk.hssdk.callback.OnMsgSendCallBack;
import com.zhixun.blesdk.hssdk.entity.HsLogInfo;
-import com.zhixun.blesdk.hssdk.entity.OTAInfo;
-import com.zhixun.blesdk.hssdk.entity.file.HsCustomDialSum;
-import com.zhixun.blesdk.hssdk.entity.file.HsEpoInfo;
-import com.zhixun.blesdk.hssdk.entity.file.HsMarketDialSum;
-import com.zhixun.blesdk.hssdk.entity.file.HsMp3Info;
-import com.zhixun.blesdk.hssdk.entity.MsgBody;
+import com.zhixun.blesdk.hssdk.file.entity.OTAInfo;
+import com.zhixun.blesdk.hssdk.file.entity.HsCustomDialSum;
+import com.zhixun.blesdk.hssdk.file.entity.HsEpoInfo;
+import com.zhixun.blesdk.hssdk.file.entity.HsMarketDialSum;
+import com.zhixun.blesdk.hssdk.file.entity.HsMp3Info;
+import com.zhixun.blesdk.hssdk.file.entity.MsgBody;
import com.zhixun.blesdk.hssdk.entity.MsgResponse;
import com.zhixun.blesdk.hssdk.util.SobLog;
import com.zhixun.blesdk.hssdk.util.SpUtils;
public void setSendFileListener(ISendFileListener sendFileListener) {
this.sendFileListener = sendFileListener;
}
+
+ private BtMsgCallback msgCallback;
+ public void setMsgSender(BtMsgCallback callback){
+ msgCallback = callback;
+ }
}
package com.zhixun.blesdk.hssdk.data;
-import static com.zhixun.blesdk.hssdk.data.ReceiverLooperThread.TYPE_RECEIVER_LOG_INFO_RESULT;
-
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import androidx.annotation.NonNull;
import com.google.gson.Gson;
-import com.zhixun.blesdk.hssdk.bttools.BleHandle;
import com.zhixun.blesdk.hssdk.bttools.ByteTools;
-import com.zhixun.blesdk.hssdk.callback.IFileReceiverCallback;
-import com.zhixun.blesdk.hssdk.callback.ISendFileListener;
+import com.zhixun.blesdk.hssdk.file.filecallback.BtMsgCallback;
+import com.zhixun.blesdk.hssdk.file.filecallback.ISendFileListener;
import com.zhixun.blesdk.hssdk.callback.OnMsgSendCallBack;
-import com.zhixun.blesdk.hssdk.entity.HsLogInfo;
-import com.zhixun.blesdk.hssdk.entity.MsgBody;
+import com.zhixun.blesdk.hssdk.file.entity.MsgBody;
import com.zhixun.blesdk.hssdk.entity.MsgResponse;
-import com.zhixun.blesdk.hssdk.entity.OTAInfo;
-import com.zhixun.blesdk.hssdk.entity.file.HsCustomDialSum;
-import com.zhixun.blesdk.hssdk.entity.file.HsEpoInfo;
-import com.zhixun.blesdk.hssdk.entity.file.HsMarketDialSum;
-import com.zhixun.blesdk.hssdk.entity.file.HsMp3Info;
+import com.zhixun.blesdk.hssdk.file.entity.OTAInfo;
+import com.zhixun.blesdk.hssdk.file.entity.HsMarketDialSum;
+import com.zhixun.blesdk.hssdk.file.entity.HsMp3Info;
import com.zhixun.blesdk.hssdk.util.SobLog;
-import com.zhixun.blesdk.hssdk.util.SpUtils;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
import java.io.IOException;
-import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
private Handler mFlieMsgHandle;
private FileLooperThread fileLooperThread;
private static FileHandlerE6 sInstance;
- public static final int TYPE_OTAINFO = 8196;
- public static final int TYPE_SEND_FILE_CHECK = 8964;
+ public static final int TYPE_OTAINFO = 262;
+ public static final int TYPE_MP3INFO = 1798;
+ public static final int TYPE_SEND_FILE_CHECK = 2054;
- public static final int TYPE_SEND_DIAL_INFO = 8708;
- public static final int TYPE_SEND_ONE_DIAL_INFO = 9220;
+ public static final int TYPE_SEND_DIAL_INFO = 1286;
+ public static final int TYPE_SEND_ONE_DIAL_INFO = 1542;
public FileHandlerE6() {
private int fileType = 0;//1ota 2市场表盘 3音乐
public void startOta(String path,OTAInfo otaInfo) {
-
MsgBody msgBody = new MsgBody();
msgBody.setChannel(MsgBody.CHANNEL_E6);
msgBody.setType(TYPE_OTAINFO);
});
}
+ public void sendMp3(String path,HsMp3Info mp3Info) {
+ MsgBody msgBody = new MsgBody();
+ msgBody.setChannel(MsgBody.CHANNEL_E6);
+ msgBody.setType(TYPE_MP3INFO);
+ File file = new File(path);
+ if (!file.exists()) {
+ SobLog.d(TAG, "sendMp3--文件不存在");
+ if (sendFileListener!=null){
+ sendFileListener.onStateChange(ISendFileListener.STATE_FAIL,"文件不存在");
+ }
+ return;
+ }
+ fileType = 2;
+ long size = file.length();
+ sendDatas = new byte[(int) size];
+ try {
+ FileInputStream in = new FileInputStream(file);
+ in.read(sendDatas);
+ in.close();
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ SobLog.d(TAG,"FileNotFoundException--"+e.getMessage());
+ } catch (IOException e) {
+ e.printStackTrace();
+ SobLog.d(TAG,"IOException--"+e.getMessage());
+ }
+ SobLog.d(TAG, "sendMp3--"+sendDatas.length);
+ msgBody.setData(new Gson().toJson(mp3Info).getBytes());
+ BleMsgSendHandler.getInstance().sendMsg(msgBody, new OnMsgSendCallBack() {
+ @Override
+ public void onResponse(MsgResponse msgResponse) {
+ int result = (int) msgResponse.getBody();
+ if (result == 1) {
+ //解析成功
+ SobLog.d(TAG,"解析成功--");
+ splitData();
+ if (sendFileListener!=null){
+ sendFileListener.onStateChange(ISendFileListener.STATE_SENDING,"发送中");
+ }
+ }else {
+ if (sendFileListener!=null){
+ sendFileListener.onStateChange(ISendFileListener.STATE_FAIL,"表端解析失败");
+ }
+ }
+ }
+
+ @Override
+ public void onFailure(int code, String msg) {
+ if (sendFileListener!=null){
+ sendFileListener.onStateChange(ISendFileListener.STATE_FAIL,"配置信息发送失败-"+msg);
+ }
+ }
+ });
+ }
+
public void lossPage(int position){
sendLoss = true;
sendSize = position-1;
msgSendState = true;
msgSendRespose = true;
}*/
- BleHandle.getInstance().deviceWrite(sendArr.get(sendSize),MsgBody.CHANNEL_E6);
+ /* BleHandle.getInstance().deviceWrite(sendArr.get(sendSize),MsgBody.CHANNEL_E6);
BleHandle.getInstance().setOnSendStateChangeListener(new BleHandle.OnSendStateChangeListener() {
@Override
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
+ }*/
+ if(msgCallback!=null){
+ msgCallback.toSend(sendArr.get(sendSize));
+ }
+ try {
+// SobLog.d(TAG,"等待回复");
+ Thread.sleep(20);
+ msgSendState = true;
+// msgSendRespose = true;
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
}
if(msgSendState){
if(isFileSendStart){
public void setSendFileListener(ISendFileListener sendFileListener) {
this.sendFileListener = sendFileListener;
}
+
+ private BtMsgCallback msgCallback;
+ public void setMsgSender(BtMsgCallback callback){
+ msgCallback = callback;
+ }
+
}
package com.zhixun.blesdk.hssdk.data;
import android.content.Context;
-import android.graphics.Bitmap;
-import android.text.TextUtils;
-import android.util.Log;
-import com.google.gson.Gson;
-import com.zhixun.android.sdk.polysdk.PolymerizeAgent;
-import com.zhixun.android.sdk.polysdk.callback.AuthCallback;
-import com.zhixun.android.sdk.polysdk.callback.IPicCompressCallback;
-import com.zhixun.blesdk.hssdk.HsAgentSdk;
import com.zhixun.blesdk.hssdk.bttools.BleHandle;
-import com.zhixun.blesdk.hssdk.callback.BtVtransferCallback;
-import com.zhixun.blesdk.hssdk.bttools.ByteTools;
-import com.zhixun.blesdk.hssdk.callback.IBtScanCallback;
-import com.zhixun.blesdk.hssdk.callback.IFileReceiverCallback;
-import com.zhixun.blesdk.hssdk.callback.IHSWearAPI;
-import com.zhixun.blesdk.hssdk.callback.ISendFileListener;
-import com.zhixun.blesdk.hssdk.callback.OnFindPhoneListener;
-import com.zhixun.blesdk.hssdk.callback.OnGetWeatherListener;
-import com.zhixun.blesdk.hssdk.callback.OnMsgSendCallBack;
-import com.zhixun.blesdk.hssdk.callback.OnTakePhotoListener;
-import com.zhixun.blesdk.hssdk.callback.OnTrainStateListener;
-import com.zhixun.blesdk.hssdk.callback.OnUnBondDeviceCallBack;
-import com.zhixun.blesdk.hssdk.entity.E4MsgBody;
-import com.zhixun.blesdk.hssdk.entity.MsgResponse;
-import com.zhixun.blesdk.hssdk.entity.OTAInfo;
-import com.zhixun.blesdk.hssdk.entity.E3MsgBody;
-import com.zhixun.blesdk.hssdk.entity.file.HsEpoInfo;
-import com.zhixun.blesdk.hssdk.entity.HsNotifyParams;
-import com.zhixun.blesdk.hssdk.entity.HsWearDevice;
-import com.zhixun.blesdk.hssdk.entity.MsgBody;
-import com.zhixun.blesdk.hssdk.entity.file.HsMarketDialSum;
-import com.zhixun.blesdk.hssdk.util.JsonUtils;
-import com.zhixun.blesdk.hssdk.util.SobLog;
+import com.zhixun.blesdk.hssdk.file.filecallback.BtMsgCallback;
+import com.zhixun.blesdk.hssdk.file.filecallback.IBtReceiverCallback;
+import com.zhixun.blesdk.hssdk.file.filecallback.IHSWearAPI;
+import com.zhixun.blesdk.hssdk.file.filecallback.ISendFileListener;
+import com.zhixun.blesdk.hssdk.file.entity.OTAInfo;
+import com.zhixun.blesdk.hssdk.file.entity.HsMarketDialSum;
+import com.zhixun.blesdk.hssdk.file.entity.HsMp3Info;
import com.zhixun.blesdk.hssdk.util.SpUtils;
import java.util.List;
-public class HsApiKit implements IHSWearAPI {
+public class HsApiKit implements IHSWearAPI, IBtReceiverCallback {
private Context mContext;
private final int TYPE_DELECT_DIAL = 6913;
- @Override
- public void AIinit(Context context) {
- AiManage.getInstance().init(context);
- }
-
@Override
public void init(Context context) {
mContext = context;
FileHandler.getInstance().init();
FileHandlerE6.getInstance().init();
}
- @Override
- public void release() {
-
- FileHandler.getInstance().cancle(2);
- FileHandler.getInstance().closeReceiver();
- BleHandle.getInstance().stopScan();
- BleMsgSendHandler.getInstance().clear();
- BleMsgReceiverHandler.getInstance().clear();
- AiManage.getInstance().clear();
- }
- @Override
- public void setWearDevice(HsWearDevice hsWearDevice) {
-
- }
-
- @Override
- public void startScan() {
- BleHandle.getInstance().startScan();
- }
-
- @Override
- public void setScanCallback(IBtScanCallback scanCallback) {
- BleHandle.getInstance().setScancallback(scanCallback);
- }
-
- @Override
- public void stopScan() {
- BleHandle.getInstance().stopScan();
- }
-
- @Override
- public HsWearDevice getWearDevice() {
- return BleHandle.getInstance().mBleConnectDevice;
- }
-
- @Override
- public HsWearDevice getLastDevice() {
- HsWearDevice wearDevice = JsonUtils.stringToObject(SpUtils.getInstance().getStringValue(SpUtils.KEY_LAST_DEVICE),HsWearDevice.class);
-
- return wearDevice;
- }
-
- @Override
- public void reConnectDevice() {
- HsWearDevice wearDevice = getLastDevice();
- connect(wearDevice);
- //文字"喂喂喂,写一首李白",语音文件大小47736
- //12.562 --->15.252--->15.605--->15.649--->16.785----->17.277==总计4.7s
- //开始接收--->接收结束--->转换结束--->数据发送结束->asr结束--->chat返回
- }
-
- @Override
- public void clearLastDevice() {
- SpUtils.getInstance().saveValue(SpUtils.KEY_LAST_DEVICE,"");
- }
-
- @Override
- public void setLanguageMode(int mode, OnMsgSendCallBack callBack) {
- E3MsgBody body = new E3MsgBody(MsgBody.TYPE_SWITCH_LANGUAGE);
- body.setData(ByteTools.little_intToByte(mode,1));//0:英语 1:中文
- sendMessage(body,callBack);
- }
-
- @Override
- public void setUnitMode(int mode, OnMsgSendCallBack callBack) {
- E3MsgBody body = new E3MsgBody(MsgBody.TYPE_SWITCH_UNIT_MODE);
- body.setData(ByteTools.little_intToByte(mode,1));//0:公制 1:英制
- sendMessage(body,callBack);
- }
-
- @Override
- public void sendMessage(MsgBody body, OnMsgSendCallBack callBack) {
- BleMsgSendHandler.getInstance().sendMsg(body,callBack);
- }
-
- @Override
- public boolean isConnected() {
- return BleHandle.getInstance().isConnected;
- }
-
- @Override
- public boolean isConnecting() {
- return BleHandle.getInstance().isConnecting;
- }
@Override
- public void connect(HsWearDevice hsWearDevice) {
- BleHandle.getInstance().connectDevice(hsWearDevice);
+ public void setBtMsgCallback(BtMsgCallback callback) {
+ callback.setReceivedCallBack(this);
+ BleMsgSendHandler.getInstance().setMsgSender(callback);
+ FileHandlerE6.getInstance().setMsgSender(callback);
}
@Override
- public void unBondDevice() {
- E3MsgBody msgBody = new E3MsgBody(MsgBody.TYPE_UNBIND_WATCH);
- BleMsgSendHandler.getInstance().sendMsg(msgBody,null);
- SpUtils.getInstance().saveValue(SpUtils.KEY_LAST_DEVICE,"");
- }
-
- @Override
- public boolean isUnBonding() {
- return false;
- }
-
- @Override
- public void disconnect() {
- SobLog.d("HsApiKit","---disconnect---");
- BleHandle.getInstance().disconnectDevice();
- }
-
-
- @Override
- public void setOnWearConnectCallBack(BtVtransferCallback callback) {
- BleHandle.getInstance().setConnectCallBack(callback);
- }
-
- @Override
- public void sendNotifyMsg(HsNotifyParams params, OnMsgSendCallBack callBack) {
- MsgBody body = new MsgBody();
- body.setChannel(MsgBody.CHANNEL_E1);
- body.setType(MsgBody.TYPE_NOTIFYMSG);
- body.setData(new Gson().toJson(params).getBytes());
- BleMsgSendHandler.getInstance().sendMsg(body,callBack);
- }
-
- @Override
- public void removeNotifyMsg(int uid, OnMsgSendCallBack callBack) {
- MsgBody body = new MsgBody();
- body.setChannel(MsgBody.CHANNEL_E1);
- body.setType(MsgBody.TYPE_REMOVE_NOTIFYMSG);
- body.setData(String.valueOf(uid).getBytes());
- BleMsgSendHandler.getInstance().sendMsg(body,callBack);
- }
-
- @Override
- public void sendEpoFile(HsEpoInfo epoInfo, OnMsgSendCallBack callBack) {
-
- }
-
- @Override
- public void sendMusicFile(String filePath, OnMsgSendCallBack callBack) {
-
- }
-
- @Override
- public void setFindPhoneListener(OnFindPhoneListener onFindPhoneListener) {
- BleMsgReceiverHandler.getInstance().setOnFindPhoneListener(onFindPhoneListener);
- }
-
- @Override
- public void delectDeviceDial(int uid, OnMsgSendCallBack callBack) {
- E3MsgBody body = new E3MsgBody(TYPE_DELECT_DIAL);
- body.setData(ByteTools.little_intToByte(uid,2));//0:公制 1:英制
- sendMessage(body,callBack);
- }
-
- @Override
- public void setOnUnBondDeviceCallBack(OnUnBondDeviceCallBack onUnBondDeviceCallBack) {
- BleMsgReceiverHandler.getInstance().setOnUnBondDeviceCallBack(onUnBondDeviceCallBack);
- }
-
- @Override
- public void setOnTrainingListener(OnTrainStateListener onTrainStateListener) {
- BleMsgReceiverHandler.getInstance().setOnTrainStateListener(onTrainStateListener);
- }
-
- @Override
- public void setTakePhotoListener(OnTakePhotoListener onTakePhotoListener) {
- BleMsgReceiverHandler.getInstance().setTakePhotoListener(onTakePhotoListener);
- }
-
- @Override
- public void setOnGetWeatherListener(OnGetWeatherListener onGetWeatherListener) {
- BleMsgReceiverHandler.getInstance().setOnGetWeatherListener(onGetWeatherListener);
- }
-
- @Override
- public void startOTA(String path,OTAInfo otaInfo, ISendFileListener sendFileListener) {
- if(FileHandler.getInstance().isFileSendStart||FileHandler.getInstance().isReceiverStart
- ||FileHandlerE6.getInstance().isFileSendStart){
- if(sendFileListener!=null){
- sendFileListener.onStateChange(ISendFileListener.STATE_FAIL,"有文件正在传输");
- }
- return;
- }
- if(HsAgentSdk.getInstance().getFileCannel()==0){
- FileHandler.getInstance().setSendFileListener(sendFileListener);
- FileHandler.getInstance().startOta(path,otaInfo);
- }else {
- FileHandlerE6.getInstance().setSendFileListener(sendFileListener);
- FileHandlerE6.getInstance().startOta(path,otaInfo);
- }
-
- }
-
- @Override
- public void cancleFileSend(int type, OnMsgSendCallBack callBack) {
-// if(!FileHandler.getInstance().isFileSendStart)return;
- E3MsgBody msgBody = new E3MsgBody(MsgBody.TYPE_CANCLE_SEND_FILE);
- msgBody.setData(ByteTools.little_intToByte(type,1));
- sendMessage(msgBody,callBack);
+ public void startOta(String path, OTAInfo otaInfo, ISendFileListener sendFileListener) {
+ if(FileHandlerE6.getInstance().isFileSendStart)return;
+ FileHandlerE6.getInstance().startOta(path,otaInfo);
+ FileHandlerE6.getInstance().setSendFileListener(sendFileListener);
}
@Override
public void installMarketDial(HsMarketDialSum dialSum, List<String> files, ISendFileListener sendFileListener) {
- if(FileHandler.getInstance().isFileSendStart||FileHandler.getInstance().isReceiverStart){
- if(sendFileListener!=null){
- sendFileListener.onStateChange(ISendFileListener.STATE_FAIL,"有文件正在传输");
- }
- return;
- }
- FileHandler.getInstance().setSendFileListener(sendFileListener);
- FileHandler.getInstance().installMarketDial(dialSum,files);
- }
-
- @Override
- public void isInstallDial(int uid, OnMsgSendCallBack callBack) {
- E4MsgBody msgBody = new E4MsgBody(MsgBody.TYPE_CHECK_DIAL);
- msgBody.setData(ByteTools.little_intToByte(uid,2));
- sendMessage(msgBody,callBack);
+ if(FileHandlerE6.getInstance().isFileSendStart)return;
+ FileHandlerE6.getInstance().installMarketDial(dialSum,files);
+ FileHandlerE6.getInstance().setSendFileListener(sendFileListener);
}
@Override
- public void deleteDial(int uid, OnMsgSendCallBack callBack) {
- E3MsgBody msgBody = new E3MsgBody(MsgBody.TYPE_DELETE_DIAL);
- msgBody.setData(ByteTools.little_intToByte(uid,2));
- sendMessage(msgBody,callBack);
+ public void sendMp3(String path, HsMp3Info mp3Info, ISendFileListener sendFileListener) {
+ if(FileHandlerE6.getInstance().isFileSendStart)return;
+ FileHandlerE6.getInstance().sendMp3(path,mp3Info);
+ FileHandlerE6.getInstance().setSendFileListener(sendFileListener);
}
- @Override
- public void picCompress(Bitmap bitmap, IPicCompressCallback picCompressCallback) {
- PolymerizeAgent.getInstance().getAiAPI().picCompress(bitmap,picCompressCallback);
- }
@Override
- public void getDeviceLog(IFileReceiverCallback iFileReceiverCallback) {
- if(FileHandler.getInstance().isFileSendStart||FileHandler.getInstance().isReceiverStart){
- if(iFileReceiverCallback!=null){
- iFileReceiverCallback.onFileSendStateChange(IFileReceiverCallback.RECEIVERFAIL,"有文件正在传输");
- }
- return;
- }
- FileHandler.getInstance().getDeviceLog(iFileReceiverCallback);
+ public void onReceicerData(byte[] datas) {
+ BleMsgReceiverHandler.getInstance().receiverData(datas);
}
-
-
-
}
package com.zhixun.blesdk.hssdk.data;
-import static com.zhixun.blesdk.hssdk.data.AiManage.TYPE_GET_WEAR_AUDIO;
-import static com.zhixun.blesdk.hssdk.data.AiManage.TYPE_SEND_AI_RESULT;
+
import android.os.Handler;
import android.os.Looper;
import com.google.gson.Gson;
-import com.zhixun.android.sdk.polysdk.PolymerizeAgent;
-import com.zhixun.android.sdk.polysdk.callback.IAIChannelChangeCallback;
-import com.zhixun.blesdk.hssdk.HsAgentSdk;
import com.zhixun.blesdk.hssdk.bttools.BleHandle;
import com.zhixun.blesdk.hssdk.callback.BtVtransferCallback;
import com.zhixun.blesdk.hssdk.bttools.ByteTools;
import com.zhixun.blesdk.hssdk.callback.OnUnBondDeviceCallBack;
import com.zhixun.blesdk.hssdk.entity.AppTime;
import com.zhixun.blesdk.hssdk.data.bean.ReceiverData;
-import com.zhixun.blesdk.hssdk.entity.E3MsgBody;
import com.zhixun.blesdk.hssdk.entity.E4MsgBody;
import com.zhixun.blesdk.hssdk.entity.HsLogInfo;
import com.zhixun.blesdk.hssdk.entity.HsO2Value;
import com.zhixun.blesdk.hssdk.entity.HsStepTargetValue;
import com.zhixun.blesdk.hssdk.entity.HsTrainValue;
import com.zhixun.blesdk.hssdk.entity.HsValueItem;
-import com.zhixun.blesdk.hssdk.entity.MsgBody;
+import com.zhixun.blesdk.hssdk.file.entity.MsgBody;
import com.zhixun.blesdk.hssdk.entity.MsgResponse;
import com.zhixun.blesdk.hssdk.util.BleDataUtil;
import com.zhixun.blesdk.hssdk.util.JsonUtils;
case TYPE_FILE_RECEIVER_OVER:
int file_state = ByteTools.little_bytesToInt(content);
SobLog.d(TAG, "file_state--" + file_state);
+
FileHandler.getInstance().setSendState(file_state);
break;
case TYPE_FILE_SENDED:
case TYPE_RECEIVER_LOG:
FileHandler.getInstance().addLogContent(content);
break;
- case TYPE_AI_READY:
+ /* case TYPE_AI_READY:
E3MsgBody msgBody = new E3MsgBody(TYPE_AI_READY);
msgBody.setData(ByteTools.little_intToByte(1, 1));
BleMsgSendHandler.getInstance().sendMsg(msgBody, null);
case TYPE_GET_WEAR_AUDIO:
AiManage.getInstance().setAllLenth(revData.getDataLen());
response.setBody(content);
- break;
+ break;*/
case MsgBody.TYPE_GET_NOW_DIALID:
int nowId = ByteTools.little_bytesToInt(content);
SobLog.d(TAG, "TYPE_GET_NOW_DIALID--" + nowId);
SobLog.d(TAG, "TYPE_GET_SLEEP_REMINDER--" + new Gson().toJson(sleepSetting));
response.setBody(sleepSetting);
break;
- case TYPE_AI_CHECK_USERD:
+ /*case TYPE_AI_CHECK_USERD:
int checkChannel = ByteTools.little_bytesToInt(content);
SobLog.d(TAG, "TYPE_AI_CHECK_USERD--" + checkChannel);
IAIChannelChangeCallback callback = new IAIChannelChangeCallback() {
PolymerizeAgent.getInstance().getAuthenAPI().setAIChannelKey("xunfei", "", callback);
}
- break;
+ break;*/
}
if (callBackMap.containsKey(revData.getType()) && response.getBody() != null) {
callBackMap.get(revData.getType()).onResponse(response);
}
break;
- case MSG_AUDIO_TIMEOUT:
+ /*case MSG_AUDIO_TIMEOUT:
SobLog.d(TAG, "MSG_AUDIO_TIMEOUT--");
E4MsgBody msgBody = new E4MsgBody(TYPE_SEND_AI_RESULT);
msgBody.setAiValue(E4MsgBody.TYPE_AI_REQ_TRANS, "音频接收超时");
BleMsgSendHandler.getInstance().sendMsg(msgBody, null);
AiManage.getInstance().clear();
BleMsgReceiverHandler.getInstance().audioTimeOut();
- break;
+ break;*/
}
}
package com.zhixun.blesdk.hssdk.entity;
import com.zhixun.blesdk.hssdk.bttools.ByteTools;
+import com.zhixun.blesdk.hssdk.file.entity.MsgBody;
-public class E3MsgBody extends MsgBody{
+public class E3MsgBody extends MsgBody {
private int day;
private boolean findWatch;
private int trainType;
import com.google.gson.Gson;
import com.zhixun.blesdk.hssdk.bttools.ByteTools;
+import com.zhixun.blesdk.hssdk.entity.HsAlramData;
+import com.zhixun.blesdk.hssdk.entity.HsContact;
+import com.zhixun.blesdk.hssdk.entity.HsHeartRateValue;
+import com.zhixun.blesdk.hssdk.entity.HsO2Value;
+import com.zhixun.blesdk.hssdk.entity.HsOtherValue;
+import com.zhixun.blesdk.hssdk.entity.HsPhoneNumber;
+import com.zhixun.blesdk.hssdk.entity.HsSettingValue;
+import com.zhixun.blesdk.hssdk.entity.HsSleepSetting;
+import com.zhixun.blesdk.hssdk.entity.HsStepTargetValue;
+import com.zhixun.blesdk.hssdk.entity.HsTrainTarget;
+import com.zhixun.blesdk.hssdk.entity.HsUserInfo;
+import com.zhixun.blesdk.hssdk.entity.HsWaterRemind;
+import com.zhixun.blesdk.hssdk.entity.PhoneInfo;
import com.zhixun.blesdk.hssdk.entity.weather.HsWeatherData;
+import com.zhixun.blesdk.hssdk.file.entity.MsgBody;
import com.zhixun.blesdk.hssdk.util.SobLog;
import java.util.HashMap;
import java.util.List;
-public class E4MsgBody extends MsgBody{
+public class E4MsgBody extends MsgBody {
private PhoneInfo phoneInfo;
private HsUserInfo userInfo;
private HsTrainTarget trainTarget;
-package com.zhixun.blesdk.hssdk.entity.file;
-
-import java.io.Serializable;
+package com.zhixun.blesdk.hssdk.file.entity;
public class HsCustomDialSum extends HsDialSum {
-package com.zhixun.blesdk.hssdk.entity.file;
+package com.zhixun.blesdk.hssdk.file.entity;
import java.io.Serializable;
-package com.zhixun.blesdk.hssdk.entity.file;
+package com.zhixun.blesdk.hssdk.file.entity;
import java.io.Serializable;
-package com.zhixun.blesdk.hssdk.entity.file;
+package com.zhixun.blesdk.hssdk.file.entity;
public class HsMarketDialSum extends HsDialSum {
private String topicName;
-package com.zhixun.blesdk.hssdk.entity.file;
+package com.zhixun.blesdk.hssdk.file.entity;
public class HsMp3Info {
-package com.zhixun.blesdk.hssdk.entity;
+package com.zhixun.blesdk.hssdk.file.entity;
import java.io.Serializable;
import java.util.Arrays;
-package com.zhixun.blesdk.hssdk.entity;
+package com.zhixun.blesdk.hssdk.file.entity;
public class OTAInfo {
--- /dev/null
+package com.zhixun.blesdk.hssdk.file.filecallback;
+
+import com.zhixun.blesdk.hssdk.file.filecallback.IBtReceiverCallback;
+
+public interface BtMsgCallback {
+
+ /**
+ * 蓝牙接收到的数据
+ * @param callback
+ */
+ void setReceivedCallBack(IBtReceiverCallback callback);
+
+ /**
+ * 需要发送给蓝牙的数据
+ * @param data
+ */
+ void toSend(byte[] data);
+}
--- /dev/null
+package com.zhixun.blesdk.hssdk.file.filecallback;
+
+public interface IBtReceiverCallback {
+
+ /**
+ * 收到蓝牙数据回传给sdk处理
+ * @param datas
+ */
+ void onReceicerData(byte[] datas);
+
+}
--- /dev/null
+package com.zhixun.blesdk.hssdk.file.filecallback;
+
+import android.content.Context;
+
+import com.zhixun.blesdk.hssdk.file.entity.OTAInfo;
+import com.zhixun.blesdk.hssdk.file.entity.HsMarketDialSum;
+import com.zhixun.blesdk.hssdk.file.entity.HsMp3Info;
+
+import java.util.List;
+
+public interface IHSWearAPI {
+
+ void init(Context var1);
+
+ void setBtMsgCallback(BtMsgCallback callback);
+
+ void startOta(String path, OTAInfo otaInfo, ISendFileListener sendFileListener);
+
+ void installMarketDial(HsMarketDialSum dialSum, List<String> files,ISendFileListener sendFileListener);
+
+ void sendMp3(String path,HsMp3Info mp3Info, ISendFileListener sendFileListener);
+}
-package com.zhixun.blesdk.hssdk.callback;
+package com.zhixun.blesdk.hssdk.file.filecallback;
public interface ISendFileListener {
package com.zhixun.blesdk.hssdk.util;
-import com.zhixun.blesdk.hssdk.entity.MsgBody;
+import com.zhixun.blesdk.hssdk.file.entity.MsgBody;
import java.util.UUID;
import android.text.TextUtils;
import android.util.Log;
-import com.zhixun.blesdk.hssdk.HsAgentSdk;
-
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;