241018:文件传输单独拎出来
authorxiewei <892331662@qq.com>
Fri, 18 Oct 2024 02:21:31 +0000 (10:21 +0800)
committerxiewei <892331662@qq.com>
Fri, 18 Oct 2024 02:21:31 +0000 (10:21 +0800)
21 files changed:
app/src/main/java/com/zhixun/blesdk/app/DialTestActivity.java
app/src/main/java/com/zhixun/blesdk/app/utils/FuncationChosePopupWindow.java
hssdk/build.gradle
hssdk/libs/HS-FILE-SDK-v0.1-241015.jar
hssdk/libs/Poly-SDK-v1.5-240809.jar [deleted file]
hssdk/libs/Poly-SDK-v1.6-241016.jar [new file with mode: 0644]
hssdk/src/main/java/com/zhixun/blesdk/hssdk/HsAgentSdk.java
hssdk/src/main/java/com/zhixun/blesdk/hssdk/bttools/BleHandle.java
hssdk/src/main/java/com/zhixun/blesdk/hssdk/callback/IHSWearAPI.java
hssdk/src/main/java/com/zhixun/blesdk/hssdk/data/AiManage.java
hssdk/src/main/java/com/zhixun/blesdk/hssdk/data/FileHandler.java
hssdk/src/main/java/com/zhixun/blesdk/hssdk/data/FileHandlerE6.java
hssdk/src/main/java/com/zhixun/blesdk/hssdk/data/HsApiKit.java
hssdk/src/main/java/com/zhixun/blesdk/hssdk/data/ReceiverLooperThread.java
hssdk/src/main/java/com/zhixun/blesdk/hssdk/entity/MsgBody.java
hssdk/src/main/java/com/zhixun/blesdk/hssdk/entity/file/HsCustomDialSum.java
hssdk/src/main/java/com/zhixun/blesdk/hssdk/entity/file/HsMarketDialSum.java
hssdk/src/main/java/com/zhixun/blesdk/hssdk/entity/file/HsMp3Info.java
hssdk/src/main/java/com/zhixun/blesdk/hssdk/entity/file/MsgBody.java [new file with mode: 0644]
hssdk/src/main/java/com/zhixun/blesdk/hssdk/entity/file/OTAInfo.java [moved from hssdk/src/main/java/com/zhixun/blesdk/hssdk/entity/OTAInfo.java with 95% similarity]
hssdk/src/main/java/com/zhixun/blesdk/hssdk/util/BleUuidUtil.java

index c436a20..0e03e7f 100644 (file)
@@ -3,26 +3,18 @@ package com.zhixun.blesdk.app;
 
 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;
@@ -108,7 +100,7 @@ public class DialTestActivity extends AppCompatActivity {
         Log.d(TAG,"name-"+name);
 
         HsMarketDialSum dialSum = new HsMarketDialSum();
-        dialSum.setTopicName(removeDigits(name));
+        dialSum.setTopicName("maomao.lzma");
         dialSum.setCount(1);
         dialSum.setUid(Integer.parseInt(id));
         oldDialPro = -1;
index 9c57c05..30c3eb8 100644 (file)
@@ -29,7 +29,6 @@ import com.zhixun.blesdk.hssdk.entity.HsO2Value;
 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.entity.E3MsgBody;
 import com.zhixun.blesdk.hssdk.entity.E4MsgBody;
 import com.zhixun.blesdk.hssdk.entity.HsAlarmItem;
@@ -50,8 +49,9 @@ 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.entity.MsgResponse;
-import com.zhixun.blesdk.hssdk.entity.file.HsCustomDialSum;
 import com.zhixun.blesdk.hssdk.entity.file.HsMarketDialSum;
+import com.zhixun.blesdk.hssdk.entity.file.HsMp3Info;
+import com.zhixun.blesdk.hssdk.entity.file.OTAInfo;
 
 import java.io.File;
 import java.text.SimpleDateFormat;
@@ -232,6 +232,7 @@ public class FuncationChosePopupWindow extends PopupWindow {
         data.add("55、设置睡眠");
         data.add("56、获取睡眠设置");
         data.add("57:多文件传输(表盘)");
+        data.add("58:mp3测试");
     }
 
     private void funcationChose() {
@@ -503,19 +504,7 @@ public class FuncationChosePopupWindow extends PopupWindow {
                         });*/
                         break;
                     case 43:
-                        HsAgentSdk.getInstance().getAPI().cancleFileSend(1, new OnMsgSendCallBack() {
-                            @Override
-                            public void onResponse(MsgResponse msgResponse) {
-                                if(onResultListener!=null){
-                                    onResultListener.OnResult(data.get(position)+": "+msgResponse.getBody());
-                                }
-                            }
-
-                            @Override
-                            public void onFailure(int code, String msg) {
-
-                            }
-                        });
+                        HsAgentSdk.getInstance().getAPI().cancleFileSend(3);
                         break;
                     case 44:
                         msgBody = new E3MsgBody(MsgBody.TYPE_GET_SAO2);
@@ -646,6 +635,29 @@ public class FuncationChosePopupWindow extends PopupWindow {
                         files.add(path1);
                         files.add(path2);
                         break;
+                    case 58:
+                        String path = "/sdcard/Android/data/com.zhixun.blesdk.app/files/hs_sdk/alarm123.mp3";
+                        File file = new File(path);
+                        HsMp3Info mp3Info = new HsMp3Info();
+                        mp3Info.setName("alarm123.mp3");
+                        mp3Info.setSize(file.length());
+                        mp3Info.setType(2);
+                        HsAgentSdk.getInstance().getAPI().sendMusicFile(path, mp3Info, new ISendFileListener() {
+                            @Override
+                            public void onProgressChange(int progress) {
+                                if(onResultListener!=null){
+                                    onResultListener.OnResult("ma3发送进度: "+progress);
+                                }
+                            }
+
+                            @Override
+                            public void onStateChange(int state, String msg) {
+                                if(onResultListener!=null){
+                                    onResultListener.OnResult("ma3发送状态: "+state+":"+msg);
+                                }
+                            }
+                        });
+                        break;
                 }
                 if(msgBody!=null||msgBody4!=null){
 
index 5badc95..74c3e9a 100644 (file)
@@ -45,9 +45,10 @@ 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-241016.jar')
     implementation files('libs\\HS-FILE-SDK-v0.1-241015.jar')
-//    implementation files('libs\\Poly-SDK-v1.5-240809.jar')
+
 
     testImplementation 'junit:junit:4.13.2'
     androidTestImplementation 'androidx.test.ext:junit:1.1.5'
index bbf218f..c3ea0be 100644 (file)
Binary files a/hssdk/libs/HS-FILE-SDK-v0.1-241015.jar and b/hssdk/libs/HS-FILE-SDK-v0.1-241015.jar differ
diff --git a/hssdk/libs/Poly-SDK-v1.5-240809.jar b/hssdk/libs/Poly-SDK-v1.5-240809.jar
deleted file mode 100644 (file)
index 6c799e2..0000000
Binary files a/hssdk/libs/Poly-SDK-v1.5-240809.jar and /dev/null differ
diff --git a/hssdk/libs/Poly-SDK-v1.6-241016.jar b/hssdk/libs/Poly-SDK-v1.6-241016.jar
new file mode 100644 (file)
index 0000000..9632876
Binary files /dev/null and b/hssdk/libs/Poly-SDK-v1.6-241016.jar differ
index de5233c..133edce 100644 (file)
@@ -68,6 +68,7 @@ public class HsAgentSdk{
         SobLog.isCloseLog = !isDebug;
         SobLog.saveLog = saveLog;
         wearAPI.init(context);
+        HsFileAgentSdk.getInstance().init(context,isDebug,saveLog);
     }
 
     public int getFileCannel() {
index 0ef895f..a295c2a 100644 (file)
@@ -3,18 +3,16 @@ package com.zhixun.blesdk.hssdk.bttools;
 
 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.BluetoothGatt;
 import android.bluetooth.BluetoothGattCallback;
 import android.bluetooth.BluetoothGattCharacteristic;
+import android.bluetooth.BluetoothGattServerCallback;
 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;
@@ -25,7 +23,6 @@ import android.content.Context;
 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;
@@ -33,7 +30,6 @@ import android.os.Message;
 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;
@@ -41,26 +37,26 @@ import androidx.core.content.ContextCompat;
 
 import com.google.gson.Gson;
 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.ISendFileListener;
 import com.zhixun.blesdk.hssdk.callback.OnMsgSendCallBack;
+import com.zhixun.blesdk.hssdk.data.AiManage;
 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.entity.MsgResponse;
 import com.zhixun.blesdk.hssdk.entity.PhoneInfo;
+import com.zhixun.blesdk.hssdk.file.filecallback.BtMsgCallback;
+import com.zhixun.blesdk.hssdk.file.filecallback.IBtReceiverCallback;
 import com.zhixun.blesdk.hssdk.util.BleDataUtil;
 import com.zhixun.blesdk.hssdk.util.BleUuidUtil;
 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;
@@ -108,6 +104,7 @@ public class BleHandle {
         return sInstance;
     }
 
+    private IBtReceiverCallback receiverCallback;
 
     public void init(Context context) {
         Log.e(TAG, "Bluetooth Handle Start");
@@ -134,7 +131,24 @@ public class BleHandle {
         // 打开蓝牙
         openBle();
         initScanCallback();
+        HsFileAgentSdk.getInstance().getAPI().setBtMsgCallback(new BtMsgCallback() {
+            @Override
+            public void setReceivedCallBack(IBtReceiverCallback iBtReceiverCallback) {
+                receiverCallback = iBtReceiverCallback;
+            }
+
+            @Override
+            public void toSend(byte[] bytes) {
+                deviceWrite(bytes, MsgBody.CHANNEL_E6);
+            }
+        });
+
+        if (ActivityCompat.checkSelfPermission(context, Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) {
+            return;
+        }
+        /*bluetoothManager.openGattServer(context, new BluetoothGattServerCallback() {
 
+        });*/
     }
 
 
@@ -340,6 +354,7 @@ public class BleHandle {
                 }
                 refreshDeviceCache();
                 HsAgentSdk.getInstance().getAPI().release();
+
 //                mBleConnectDevice = null;
             }
         }
@@ -354,9 +369,11 @@ public class BleHandle {
                     mBluetoothGatt.requestConnectionPriority(BluetoothGatt.CONNECTION_PRIORITY_HIGH);
                 }
                 BleMsgSendHandler.getInstance().setMtu(mtu);
+                HsFileAgentSdk.getInstance().getAPI().setMtu(mtu);
             }
         }
 
+
         @Override
         public void onServicesDiscovered(BluetoothGatt gatt, int status) {
 //            super.onServicesDiscovered(gatt, status);
@@ -378,7 +395,6 @@ public class BleHandle {
         public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {
             SobLog.d(TAG, "onCharacteristicWrite--" + status + "--");
 
-
         }
 
         @Override
@@ -414,6 +430,8 @@ public class BleHandle {
                     (value.length > 100 ? value.length : ByteTools.byteArrToHex(value)));
             if (BleUuidUtil.getInstance().getNotifyUUID().toString().equals(characteristic.getUuid().toString())) {
                 BleMsgReceiverHandler.getInstance().receiverData(value);
+            }else if (BleUuidUtil.getInstance().getFileNotifyUUID().toString().equals(characteristic.getUuid().toString())) {
+                receiverCallback.onReceicerData(value);
             }
 
         }
@@ -523,8 +541,6 @@ public class BleHandle {
     }
     public void creatBond(){
 
-
-
         BluetoothDevice bluetoothDevice = mBluetoothAdapter.getRemoteDevice(mBleConnectDevice.getAddress());
         //得到配对的设备列表,清除已配对的设备
        removePairDevice();
@@ -697,6 +713,9 @@ public class BleHandle {
 
         BluetoothGattCharacteristic characteristic2 = service.getCharacteristic(BleUuidUtil.getInstance().getReadUUID());//对应server端的setCharacteristic方法
         mBluetoothGatt.setCharacteristicNotification(characteristic2, true);
+
+        BluetoothGattCharacteristic characteristic3 = service.getCharacteristic(BleUuidUtil.getInstance().getFileNotifyUUID());//对应server端的setCharacteristic方法
+        mBluetoothGatt.setCharacteristicNotification(characteristic3, true);
     }
 
     public void deviceWrite(byte[] msg, int type) {
index 4019fd3..00c372d 100644 (file)
@@ -4,12 +4,14 @@ 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.HsEpoInfo;
 import com.zhixun.blesdk.hssdk.entity.file.HsMarketDialSum;
+import com.zhixun.blesdk.hssdk.entity.file.HsMp3Info;
+import com.zhixun.blesdk.hssdk.entity.file.OTAInfo;
+
 
 import java.util.List;
 
@@ -60,7 +62,7 @@ public interface IHSWearAPI {
     void removeNotifyMsg(int uid, OnMsgSendCallBack callBack);
 
     void sendEpoFile(HsEpoInfo epoInfo, OnMsgSendCallBack callBack);
-    void sendMusicFile(String filePath, OnMsgSendCallBack callBack);
+    void sendMusicFile(String filePath, HsMp3Info mp3Info, ISendFileListener callBack);
 
     void setFindPhoneListener(OnFindPhoneListener onFindPhoneListener);
     //void addReceiveCallback(OnReceiveCallback var1);
@@ -79,7 +81,7 @@ public interface IHSWearAPI {
     void setTakePhotoListener(OnTakePhotoListener onTakePhotoListener);
 
     void setOnGetWeatherListener(OnGetWeatherListener onGetWeatherListener);
-    void startOTA(String path,OTAInfo otaInfo,ISendFileListener sendFileListener);
+    void startOTA(String path, OTAInfo otaInfo, ISendFileListener sendFileListener);
 
     /**
      * 1:OTA
@@ -88,7 +90,7 @@ public interface IHSWearAPI {
      * @param type
      * @param callBack
      */
-    void cancleFileSend(int type, OnMsgSendCallBack callBack);
+    void cancleFileSend(int type);
 
     void installMarketDial(HsMarketDialSum dialSum, List<String> files, ISendFileListener sendFileListener);
 
index cede167..9b5978a 100644 (file)
@@ -64,7 +64,7 @@ public class AiManage {
     private boolean isLogin = false;
     private boolean isTransStart = false;
     public void init(Context context){
-        PolymerizeAgent.getInstance().init(context,true,true);
+        PolymerizeAgent.getInstance().init(context,true,true,false);
         doLogin();
         PolymerizeAgent.getInstance().getAiAPI().setOnTranscriptionDataChange(new OnTranscriptionDataChange() {
             @Override
@@ -72,7 +72,6 @@ public class AiManage {
                 SobLog.i(TAG,"onStartChange--"+b);
                 isTransStart = b;
                 if(b){
-
                     sendAudio(audio);
                 }else {
                     receiverLenth = 0;
@@ -174,6 +173,7 @@ public class AiManage {
                 @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){
@@ -204,7 +204,7 @@ public class AiManage {
 
                 audio = (byte[]) msgResponse.getBody();
                 PolymerizeAgent.getInstance().getAiAPI().startTrans();
-//                            SobLog.d(TAG,"sendAudio--"+audio.length);
+                SobLog.d(TAG,"sendAudio--"+audio.length);
                 receiverLenth = receiverLenth+audio.length;
 
                 SobLog.d(TAG,receiverLenth+"/"+allLenth);
@@ -234,21 +234,25 @@ public class AiManage {
 
     public void clear(){
         if(isTransStart){
-
             PolymerizeAgent.getInstance().getAiAPI().stopTrans();
         }
         allLenth = 0;
         receiverLenth = 0;
+        audio = null;
+    }
+
+    public void release(){
+        PolymerizeAgent.getInstance().getAuthenAPI().release();
     }
 
 
     public void doLogin(){
         String pwd = SpUtils.getInstance().getStringValue(SpUtils.KEY_AI_PWD);
         if(TextUtils.isEmpty(pwd)){
-            pwd = "CVOachlw1DO1Ei5uabOkHd1wRYoMQA";
+            pwd = "lHEBdxdqXdhMNdXqNIdcTlWVBcNwcd";
         }
-        PolymerizeAgent.getInstance().getAuthenAPI().authentication("281106AFB0F7"
-                , pwd, "HHosiYUNdG42t1cTgKOzIUPOvAVMI2QT", new AuthCallback() {
+        PolymerizeAgent.getInstance().getAuthenAPI().authentication("28110687C456"
+                , pwd, "4EepovakpbqhZUnUDwH42KAADYGv4UUe", new AuthCallback() {
                     @Override
                     public void onSuccess(String result) {
                         isLogin = true;
index 3722ba5..57820ad 100644 (file)
@@ -15,13 +15,14 @@ import com.zhixun.blesdk.hssdk.callback.IFileReceiverCallback;
 import com.zhixun.blesdk.hssdk.callback.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.MsgBody;
+import com.zhixun.blesdk.hssdk.entity.MsgResponse;
+
 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.entity.MsgResponse;
+import com.zhixun.blesdk.hssdk.entity.file.OTAInfo;
 import com.zhixun.blesdk.hssdk.util.SobLog;
 import com.zhixun.blesdk.hssdk.util.SpUtils;
 
@@ -276,7 +277,7 @@ public class FileHandler {
 
     private int fileType = 0;//1ota  2市场表盘 3音乐
 
-    public void startOta(String path,OTAInfo otaInfo) {
+    public void startOta(String path, OTAInfo otaInfo) {
 
         MsgBody msgBody = new MsgBody();
         msgBody.setChannel(MsgBody.CHANNEL_E0);
index d8d16a1..4dd6074 100644 (file)
@@ -1,7 +1,5 @@
 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;
@@ -11,26 +9,19 @@ 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.callback.OnMsgSendCallBack;
-import com.zhixun.blesdk.hssdk.entity.HsLogInfo;
 import com.zhixun.blesdk.hssdk.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.entity.file.OTAInfo;
 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;
 
@@ -166,7 +157,7 @@ public class FileHandlerE6 {
 
     private int fileType = 0;//1ota  2市场表盘 3音乐
 
-    public void startOta(String path,OTAInfo otaInfo) {
+    public void startOta(String path, OTAInfo otaInfo) {
 
         MsgBody msgBody = new MsgBody();
         msgBody.setChannel(MsgBody.CHANNEL_E6);
index f039897..7dae4fd 100644 (file)
@@ -2,14 +2,11 @@ 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.HsFileAgentSdk;
 import com.zhixun.blesdk.hssdk.bttools.BleHandle;
 import com.zhixun.blesdk.hssdk.callback.BtVtransferCallback;
 import com.zhixun.blesdk.hssdk.bttools.ByteTools;
@@ -24,14 +21,18 @@ 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.HsEpoInfo;
 import com.zhixun.blesdk.hssdk.entity.file.HsMarketDialSum;
+import com.zhixun.blesdk.hssdk.entity.file.HsMp3Info;
+import com.zhixun.blesdk.hssdk.entity.file.OTAInfo;
+import com.zhixun.blesdk.hssdk.file.entity.HsE6MarketDialSum;
+import com.zhixun.blesdk.hssdk.file.entity.HsE6Mp3Info;
+import com.zhixun.blesdk.hssdk.file.entity.OTAE6Info;
+import com.zhixun.blesdk.hssdk.file.filecallback.IE6SendFileListener;
 import com.zhixun.blesdk.hssdk.util.JsonUtils;
 import com.zhixun.blesdk.hssdk.util.SobLog;
 import com.zhixun.blesdk.hssdk.util.SpUtils;
@@ -56,17 +57,20 @@ public class HsApiKit implements IHSWearAPI {
         BleMsgSendHandler.getInstance().init();
         BleMsgReceiverHandler.getInstance().init();
         FileHandler.getInstance().init();
-        FileHandlerE6.getInstance().init();
+//        FileHandlerE6.getInstance().init();
+
     }
     @Override
     public void release() {
 
-        FileHandler.getInstance().cancle(2);
+        //FileHandler.getInstance().cancle(2);
+        HsFileAgentSdk.getInstance().getAPI().release();
         FileHandler.getInstance().closeReceiver();
         BleHandle.getInstance().stopScan();
         BleMsgSendHandler.getInstance().clear();
         BleMsgReceiverHandler.getInstance().clear();
         AiManage.getInstance().clear();
+        AiManage.getInstance().release();
     }
     @Override
     public void setWearDevice(HsWearDevice hsWearDevice) {
@@ -196,8 +200,24 @@ public class HsApiKit implements IHSWearAPI {
     }
 
     @Override
-    public void sendMusicFile(String filePath, OnMsgSendCallBack callBack) {
+    public void sendMusicFile(String filePath, HsMp3Info mp3Info, ISendFileListener callBack) {
+        HsE6Mp3Info e6Mp3Info = JsonUtils.stringToObject(new Gson().toJson(mp3Info),HsE6Mp3Info.class);
+
+        HsFileAgentSdk.getInstance().getAPI().sendMp3(filePath, e6Mp3Info, new IE6SendFileListener() {
+            @Override
+            public void onProgressChange(int i) {
+                if(callBack!=null){
+                    callBack.onProgressChange(i);
+                }
+            }
 
+            @Override
+            public void onStateChange(int i, String s) {
+                if(callBack!=null){
+                    callBack.onStateChange(i,s);
+                }
+            }
+        });
     }
 
     @Override
@@ -233,8 +253,8 @@ public class HsApiKit implements IHSWearAPI {
     }
 
     @Override
-    public void startOTA(String path,OTAInfo otaInfo, ISendFileListener sendFileListener) {
-        if(FileHandler.getInstance().isFileSendStart||FileHandler.getInstance().isReceiverStart
+    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,"有文件正在传输");
@@ -247,28 +267,52 @@ public class HsApiKit implements IHSWearAPI {
         }else {
             FileHandlerE6.getInstance().setSendFileListener(sendFileListener);
             FileHandlerE6.getInstance().startOta(path,otaInfo);
-        }
+        }*/
+        OTAE6Info otae6Info = JsonUtils.stringToObject(new Gson().toJson(otaInfo),OTAE6Info.class);
+        HsFileAgentSdk.getInstance().getAPI().startOta(path, otae6Info, new IE6SendFileListener() {
+            @Override
+            public void onProgressChange(int i) {
+                if(sendFileListener!=null){
+                    sendFileListener.onProgressChange(i);
+                }
+            }
 
+            @Override
+            public void onStateChange(int i, String s) {
+                if(sendFileListener!=null){
+                    sendFileListener.onStateChange(i,s);
+                }
+            }
+        });
     }
 
     @Override
-    public void cancleFileSend(int type, OnMsgSendCallBack callBack) {
+    public void cancleFileSend(int type) {
 //        if(!FileHandler.getInstance().isFileSendStart)return;
-        E3MsgBody msgBody = new E3MsgBody(MsgBody.TYPE_CANCLE_SEND_FILE);
-        msgBody.setData(ByteTools.little_intToByte(type,1));
-        sendMessage(msgBody,callBack);
+        HsFileAgentSdk.getInstance().getAPI().cancleFileSend(type);
     }
 
     @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,"有文件正在传输");
+
+       /* FileHandler.getInstance().setSendFileListener(sendFileListener);
+        FileHandler.getInstance().installMarketDial(dialSum,files);*/
+        HsE6MarketDialSum e6MarketDialSum = JsonUtils.stringToObject(new Gson().toJson(dialSum),HsE6MarketDialSum.class);
+        HsFileAgentSdk.getInstance().getAPI().installMarketDial(e6MarketDialSum, files, new IE6SendFileListener() {
+            @Override
+            public void onProgressChange(int i) {
+                if(sendFileListener!=null){
+                    sendFileListener.onProgressChange(i);
+                }
             }
-            return;
-        }
-        FileHandler.getInstance().setSendFileListener(sendFileListener);
-        FileHandler.getInstance().installMarketDial(dialSum,files);
+
+            @Override
+            public void onStateChange(int i, String s) {
+                if(sendFileListener!=null){
+                    sendFileListener.onStateChange(i,s);
+                }
+            }
+        });
     }
 
     @Override
index 853e338..a3848ce 100644 (file)
@@ -610,6 +610,7 @@ public class ReceiverLooperThread extends Thread {
     public void clear() {
         callBackMap.clear();
         if (mReceiverMsgHandle != null) mReceiverMsgHandle.removeMessages(MSG_RECEIVERDATA);
+
     }
 
     public void removeAudioTimeOut() {
index 8f872b8..3886208 100644 (file)
@@ -65,7 +65,7 @@ public class MsgBody implements Serializable {
     public static final int TYPE_SWITCH_UNIT_MODE = 10241;
     public static final int TYPE_SWITCH_LANGUAGE = 3585;
     public static final int TYPE_END_DATA_SYNC = 11777;
-    public static final int TYPE_CANCLE_SEND_FILE = 8193;
+    public static final int TYPE_CANCLE_SEND_FILE = 2822;
     public static final int TYPE_SYNC_MP3 = 8452;
     public static final int TYPE_SYNC_EPO = 10244;
     public static final int TYPE_GET_WATCH_INFO = 769;
index 08f2a00..12dc0ee 100644 (file)
@@ -10,7 +10,7 @@ public class HsMp3Info {
 
     private int type;
     private String name;
-    private int size;
+    private long size;
 
     public int getType() {
         return type;
@@ -28,11 +28,12 @@ public class HsMp3Info {
         this.name = name;
     }
 
-    public int getSize() {
+    public long getSize() {
         return size;
     }
 
-    public void setSize(int size) {
+    public void setSize(long size) {
         this.size = size;
     }
+
 }
diff --git a/hssdk/src/main/java/com/zhixun/blesdk/hssdk/entity/file/MsgBody.java b/hssdk/src/main/java/com/zhixun/blesdk/hssdk/entity/file/MsgBody.java
new file mode 100644 (file)
index 0000000..3bd44a5
--- /dev/null
@@ -0,0 +1,156 @@
+package com.zhixun.blesdk.hssdk.entity.file;
+
+import java.io.Serializable;
+import java.util.Arrays;
+
+public class MsgBody implements Serializable {
+    public static final int TYPE_SET_USERINFO = 258;
+    public static final int TYPE_SWITCH_DIAL = 513;
+    public static final int TYPE_GET_BATTY = 1793;
+    public static final int TYPE_SET_TIME = 514;
+
+    public static final int TYPE_GET_SDCARD_STORAGE = 1281;
+    public static final int TYPE_GET_ALRAMS = 257;
+    public static final int TYPE_GET_HEART_RATE = 16385;
+    public static final int TYPE_GET_SAO2 = 16641;
+    public static final int TYPE_GET_STEP = 17153;
+    public static final int TYPE_GET_BURN_TIME = 17409;
+    public static final int TYPE_GET_STAND = 17665;
+    public static final int TYPE_GET_CALORIE = 17921;
+    public static final int TYPE_GET_DISTANCE = 18177;
+    public static final int TYPE_GET_TRIAN_RECORD = 18689;
+    public static final int TYPE_GET_ALLDIAL = 10753;
+    public static final int TYPE_FIND_WATCH = 1025;
+    public static final int TYPE_SET_TRAIN_TARGET = 1026;
+    public static final int TYPE_START_TRIAN = 2561;
+    public static final int TYPE_END_TRIAN = 2817;
+    public static final int TYPE_OPEN_TRAIN_AUTO_PUSH = 4353;
+    public static final int TYPE_SET_TRAIN_AUTO_FRE = 5121;
+    public static final int TYPE_GET_TRAINING_DATA = 3841;
+    public static final int TYPE_SET_TRAIN_HEART_RATE = 5377;
+    public static final int TYPE_PAUSE_RESUME_TRAIN = 5633;
+    public static final int TYPE_GET_WATCH_STATE = 6401;
+    public static final int TYPE_GET_SCREEN_SETTING = 6657;
+    public static final int TYPE_GET_SOUND_VIBRATE_SETTING = 7169;
+    public static final int TYPE_GET_HEART_RATE_SETTING = 7681;
+    public static final int TYPE_GET_O2_SETTING = 7937;
+    public static final int TYPE_OPEN_GESTURE_PHOTO = 8961;
+    public static final int TYPE_GET_DRINK_WATER = 9217;
+    public static final int TYPE_RESTORE_FACTORY = 9473;
+    public static final int TYPE_RESTART_WATCH = 9729;
+    public static final int TYPE_TURNOFF_WATCH = 9985;
+    public static final int TYPE_GET_STEP_TARGET = 11009;
+    public static final int TYPE_SET_STEP_TARGET = 5634;
+    public static final int TYPE_GET_OTHER_TARGET = 11265;
+    public static final int TYPE_SET_OTHER_TARGET = 5890;
+    public static final int TYPE_SYNC_WEATHER = 8194;
+    public static final int TYPE_SET_ALARMS = 8450;
+    public static final int TYPE_SET_CONTACTS = 2818;
+    public static final int TYPE_GET_GPS_POINTS = 20226;
+    public static final int TYPE_CHECK_DIAL = 3330;
+    public static final int TYPE_DELETE_DIAL = 6913;
+    public static final int TYPE_SET_SCREEN_SETTING = 3586;
+    public static final int TYPE_SET_SOUND_VIBRATE_SETTING = 3842;
+    public static final int TYPE_SET_HEART_RATE_SETTING = 4610;
+    public static final int TYPE_SET_O2_SETTING = 4866;
+    public static final int TYPE_SET_DRINK_WATER = 5122;
+    public static final int TYPE_SET_SLEEP_REMINDER = 5378;
+
+    public static final int TYPE_GET_SLEEP_REMINDER = 10497;
+    public static final int TYPE_DELETE_FILES = 8706;
+    public static final int TYPE_GET_FILE_DIRECTORY = 8449;
+    public static final int TYPE_GET_SLEEP = 19201;
+    public static final int TYPE_UNBIND_WATCH = 4097;
+    public static final int TYPE_CANCEL_UNBIND = 11521;
+    public static final int TYPE_SWITCH_UNIT_MODE = 10241;
+    public static final int TYPE_SWITCH_LANGUAGE = 3585;
+    public static final int TYPE_END_DATA_SYNC = 11777;
+    public static final int TYPE_CANCLE_SEND_FILE = 8193;
+    public static final int TYPE_SYNC_MP3 = 8452;
+    public static final int TYPE_SYNC_EPO = 10244;
+    public static final int TYPE_GET_WATCH_INFO = 769;
+    public static final int TYPE_NOTIFYMSG = 259;
+    public static final int TYPE_FINDPHONE_MSG = 261;
+    public static final int TYPE_REMOVE_NOTIFYMSG = 515;
+    public static final int TYPE_GET_EXCLOG = 9732;
+
+    public static final int TYPE_GET_NOW_DIALID = 5889;
+
+    public static final int TYPE_GET_DIR = 289;
+    public static int TRAIN_TYPE_WALKING = 0;
+    public static int TRAIN_TYPE_RUN = 1;
+    public static int TRAIN_TYPE_RIDE = 2;
+    public static int TRAIN_TARGET_KM = 0;
+    public static int TRAIN_TARGET_CAL = 1;
+    public static int TRAIN_TARGET_TM = 2;
+    public static int TRAIN_TARGET_STEP = 4;
+
+
+    public static final int CHANNEL_E0 = 16;
+    public static final int CHANNEL_E1 = 1;
+    public static final int CHANNEL_E3 = 3;
+    public static final int CHANNEL_E4 = 4;
+
+    public static final int CHANNEL_E6 = 6;
+
+    private int channel;
+    private int port;
+    private int type;
+    private byte[] data;
+    private String filePath;
+
+
+    public int getChannel() {
+        return channel;
+    }
+
+    public void setChannel(int channel) {
+        this.channel = channel;
+    }
+
+    public int getPort() {
+        return port;
+    }
+
+    public void setPort(int port) {
+        this.port = port;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+
+    public byte[] getData() {
+        if(data==null){
+            data = new byte[0];
+        }
+        return data;
+    }
+
+    public void setData(byte[] data) {
+        this.data = data;
+    }
+
+    public String getFilePath() {
+        return filePath;
+    }
+
+    public void setFilePath(String filePath) {
+        this.filePath = filePath;
+    }
+
+    @Override
+    public String toString() {
+        return "MsgBody{" +
+                "channel=" + channel +
+                ", port=" + port +
+                ", type=" + type +
+                ", data=" + Arrays.toString(data) +
+                ", filePath='" + filePath + '\'' +
+                '}';
+    }
+}
index 65f1df2..e374303 100644 (file)
@@ -21,6 +21,8 @@ public class BleUuidUtil {
 
     private UUID mNotifyUUID = UUID.fromString("00002ae5-0000-1000-8000-00805f9b34fb");//客户端接收
 
+    private UUID mFileNotifyUUID = UUID.fromString("00002ae7-0000-1000-8000-00805f9b34fb");//客户端文件接收
+
     private UUID mServiceUUID = UUID.fromString("000018e0-0000-1000-8000-00805f9b34fb");//客户端接收;
     public static BleUuidUtil getInstance() {
         if(sInstance == null) {
@@ -38,6 +40,10 @@ public class BleUuidUtil {
         return mNotifyUUID;
     }
 
+    public UUID getFileNotifyUUID(){
+        return mFileNotifyUUID;
+    }
+
     public UUID getServiceUUID() {
         return mServiceUUID;
     }