release V476
authorsnickersun <snickersun@qq.com>
Wed, 5 Aug 2020 19:21:54 +0000 (03:21 +0800)
committersnickersun <snickersun@qq.com>
Wed, 5 Aug 2020 19:21:54 +0000 (03:21 +0800)
protocol_ic 添加 BP46 拍照 ,BPDH 聆听。

app/release/ICSer_V476_2008060319_release.apk [new file with mode: 0644]
app/src/main/java/com/enqualcomm/support/CoreService.java
app/src/main/java/com/enqualcomm/support/MainActivity.java
app/src/main/java/com/enqualcomm/support/service/Deliver.java
app/src/main/java/com/enqualcomm/support/utils/CameraUtil.java
app/src/main/java/com/enqualcomm/support/utils/ICAudioManager.java
app/src/main/java/com/enqualcomm/support/utils/ProcessReceiver.java
app/src/main/java/com/enqualcomm/support/utils/Util.java
app/src/main/java/com/ic/protocols/protocol_ic.java
app/version_code.properties
local.properties

diff --git a/app/release/ICSer_V476_2008060319_release.apk b/app/release/ICSer_V476_2008060319_release.apk
new file mode 100644 (file)
index 0000000..2649724
Binary files /dev/null and b/app/release/ICSer_V476_2008060319_release.apk differ
index 9e8715b..9cb2fd4 100644 (file)
@@ -675,7 +675,9 @@ public class CoreService extends Service {
     public static void DevliverStringMessage(String cmd){\r
         CoreService.getInstance().connection.DeliverCMDMessageToSystem(cmd,"");\r
     }\r
-\r
+    public static void DevliverStringMessage(String cmd,String str){\r
+        CoreService.getInstance().connection.DeliverCMDMessageToSystem(cmd,str);\r
+    }\r
     public void checkKeepSitting(){\r
         String dateyyyyMMDDhhmmss=TimeUtil.getSystemTime3();\r
         String sleepdate=TimeUtil.getCurrentSleepRecordDate(dateyyyyMMDDhhmmss);\r
index 829e971..115bf1a 100644 (file)
@@ -2,8 +2,13 @@ package com.enqualcomm.support;
 
 import android.content.ComponentName;
 import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Color;
+import android.os.Environment;
 import android.os.Handler;
 import android.os.Message;
+import android.os.StatFs;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.view.View;
@@ -11,8 +16,14 @@ import android.widget.Button;
 import android.widget.TextView;
 
 import com.enqualcomm.support.utils.DeviceInfoUtil;
+import com.enqualcomm.support.utils.ICLogger;
+import com.enqualcomm.support.utils.ImageUtil;
+import com.enqualcomm.support.utils.TimeUtil;
 import com.enqualcomm.support.utils.Util;
 
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
 import java.util.concurrent.ScheduledThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 
@@ -72,6 +83,8 @@ public class MainActivity extends AppCompatActivity {
         });
 
 
+
+
 //               SimSignalUtil.send_at_to_onoff_simcard(CoreService.getInstance().runtime));
 
 //        tbtnblood.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@@ -100,7 +113,7 @@ public class MainActivity extends AppCompatActivity {
 
         TextView tv_version=(TextView)findViewById(R.id.textViewVersion);
         tv_version.setText(DeviceInfoUtil.getVersionCode(this)+"-"+DeviceInfoUtil.getVersionName(this));
-
+//        testpic();
     }
 
     @Override
@@ -136,6 +149,56 @@ public class MainActivity extends AppCompatActivity {
         showmessage=false;
 
 
+    }
+
+    public void testpic(){
+
+            String str = null;
+            try {
+                if (Environment.getExternalStorageState().equals("mounted")) {
+//                    if ((new StatFs(Environment.getExternalStorageDirectory().toString())).getAvailableBytes() < paramArrayOfByte.length)
+
+                    str = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath();
+                    StringBuilder stringBuilder = new StringBuilder();
+                    stringBuilder.append(str);
+                    stringBuilder.append("/TakePhoto_080835");
+                    stringBuilder.append(".jpg");
+                    str = stringBuilder.toString();
+                    Bitmap bitmap2 =BitmapFactory.decodeFile(str);
+//                    Bitmap bitmap2 = BitmapFactory.decodeByteArray(paramArrayOfByte, 0, paramArrayOfByte.length);
+//                    Bitmap bitmap1 = bitmap2;
+                    Bitmap bitmap3 = bitmap2;
+                    if ((this.getResources().getConfiguration()).orientation == 1) {
+//                        Matrix matrix = new Matrix();
+//                        matrix.reset();
+                        //   matrix.postRotate(this.mOrientation);
+                        // bitmap1 = Bitmap.createBitmap(bitmap2, 0, 0, bitmap2.getWidth(), bitmap2.getHeight(), matrix, true);
+
+                    }
+                    bitmap3 = ImageUtil.drawTextToLeftTop(this,bitmap2, TimeUtil.getSystemTime(),24, Color.RED, 20, 20);
+                    str = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath();
+                    stringBuilder = new StringBuilder();
+                    stringBuilder.append(str);
+                    stringBuilder.append("/TakePhoto_0808352");
+                    stringBuilder.append(".jpg");
+                    str = stringBuilder.toString();
+                    File file = new File(str);
+                    if (!file.exists())
+                        file.createNewFile();
+                    BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(file));
+                    bitmap3.compress(Bitmap.CompressFormat.JPEG, 100, bufferedOutputStream);
+                    bufferedOutputStream.flush();
+                    bufferedOutputStream.close();
+
+                    ICLogger.i("Take Photo and Save to "+str);
+                }
+
+            } catch (Exception e) {
+                e.printStackTrace();
+
+            }
+
+
     }
 
     private View.OnClickListener clickListener = new View.OnClickListener() {
index 587ec45..7de4705 100644 (file)
@@ -19,6 +19,8 @@ import com.enqualcomm.support.Config;
 import com.enqualcomm.support.Constants;\r
 import com.enqualcomm.support.CoreService;\r
 import com.enqualcomm.support.R;\r
+import com.enqualcomm.support.bean.VoiceContent;\r
+import com.enqualcomm.support.utils.TimeUtil;\r
 import com.ic.protocols.protocolAPIHelper;\r
 import com.enqualcomm.support.bean.Contact;\r
 import com.enqualcomm.support.bean.StringMessage;\r
@@ -46,6 +48,7 @@ import static android.app.PendingIntent.FLAG_UPDATE_CURRENT;
 import static com.enqualcomm.support.Constants.ACTION_WAKEUP_ALARM;\r
 import static com.enqualcomm.support.Constants.DIALOG_ACTION;\r
 import static com.enqualcomm.support.bean.Contact.CATEGORY_GROUP;\r
+import static com.enqualcomm.support.bean.Content.CONTACT_CATEGORY_GROUP;\r
 \r
 /**\r
  * 负责发送除了login,心跳之外的所有指令\r
@@ -340,19 +343,33 @@ public static void sendLocationMSG( String Msg){
       //收到SentVoicePacket 表示 有一个VoiceMessage要发送,需要从第0个包开始发送语音分包。\r
       voicePacket voicepacket = voicePacket.getInstanceSent();\r
       if (voicepacket.getCurrentIndexToSent() < voicepacket.getPacketCount()) {\r
-        ICLogger.i("voicepacket " + voicepacket.getName() +" filetype "+voicepacket.getFiletype()+ " , datatype "+ voicepacket.getDateType() + voicepacket.getPacketTime() + " send " + (voicepacket.getCurrentIndexToSent() + 1) + "/" + voicepacket.getPacketCount());\r
+        ICLogger.i("voicepacket " + voicepacket.getName() + " filetype " + voicepacket.getFiletype() + " , datatype " + voicepacket.getDateType() + voicepacket.getPacketTime() + " send " + (voicepacket.getCurrentIndexToSent() + 1) + "/" + voicepacket.getPacketCount());\r
         ((NettyConnection) mConnection).sendMsg(\r
                 protocolAPIHelper.getVoicePacketItem(voicepacket.getPacketTime(),\r
                         voicepacket.getPacketCount(),\r
                         (voicepacket.getCurrentIndexToSent() + 1),\r
                         voicepacket.getVoicePacketWithIndex(voicepacket.getCurrentIndexToSent()).getPacketLen(),\r
-                        voicepacket.getVoicePacketWithIndex(voicepacket.getCurrentIndexToSent()).getPacketData(),voicepacket.getFiletype(),voicepacket.getDateType())\r
+                        voicepacket.getVoicePacketWithIndex(voicepacket.getCurrentIndexToSent()).getPacketData(), voicepacket.getFiletype(), voicepacket.getDateType())\r
         );\r
       } else {\r
-        ICLogger.i("voicepacket " + voicepacket.getName() +" filetype "+voicepacket.getFiletype()+ " , datatype "+ voicepacket.getDateType()+ " " + voicepacket.getPacketTime() + " sent Done!");\r
+        ICLogger.i("voicepacket " + voicepacket.getName() + " filetype " + voicepacket.getFiletype() + " , datatype " + voicepacket.getDateType() + " " + voicepacket.getPacketTime() + " sent Done!");\r
       }\r
       return true;\r
-    } else if ("poweroffCheckSim".equals(paramStringMessage.cmd())) {\r
+    } else if ("PhotoRemoteTaken".equals(paramStringMessage.cmd())) {\r
+      //接收到拍照完毕命令,发送照片\r
+\r
+      String msgUrl=paramStringMessage.isFromCache();\r
+     ICLogger.i("receive taken photo to send "+msgUrl);\r
+    //创建voiceConent并添加到数据\r
+    final VoiceContent voiceContent = VoiceContent.placeHolderOut(CONTACT_CATEGORY_GROUP, "123", msgUrl,2,2);\r
+\r
+    // 把voiceContent拆解成1024的分包\r
+    Util.parseToVoicePacketSent(voiceContent);\r
+    //trigger 分包发送\r
+    if (CoreService.getInstance().getConnection()!=null)\r
+      CoreService.getInstance().getConnection().DeliverCMDMessageToSystem("SentVoicePacket", "");\r
+    return true;\r
+  } else if ("poweroffCheckSim".equals(paramStringMessage.cmd())) {\r
       paramRuntime.setShutdown(true);\r
 \r
           if (SimSignalUtil.hasSimCard(paramRuntime.getContextProxy().context))\r
@@ -464,8 +481,31 @@ public static void sendLocationMSG( String Msg){
               context.sendBroadcast(intent);\r
         }\r
       });\r
+      return true;\r
+  }else if ("StartMonitor".equals(paramStringMessage.cmd())) {\r
+\r
+      String recordfilepath=Util.getRecordfilePath(mRuntime, TimeUtil.getSystemTime3());\r
+      AudioService.getInstance().startRecord(recordfilepath);\r
+      int recordtime=Integer.parseInt(paramStringMessage.isFromCache());\r
+      Observable.timer(recordtime, TimeUnit.SECONDS).subscribe(new Action1<Long>() {\r
+        public void call(Long param1Long) {\r
+\r
+          AudioService.getInstance().stopRecord();\r
+          ICLogger.i("Monitor Record to send "+recordfilepath);\r
+          //创建voiceConent并添加到数据\r
+          final VoiceContent voiceContent = VoiceContent.placeHolderOut(CONTACT_CATEGORY_GROUP, "123", recordfilepath,1,1);\r
+\r
+          // 把voiceContent拆解成1024的分包\r
+          Util.parseToVoicePacketSent(voiceContent);\r
+          //trigger 分包发送\r
+          if (CoreService.getInstance().getConnection()!=null)\r
+            CoreService.getInstance().getConnection().DeliverCMDMessageToSystem("SentVoicePacket", "");\r
+\r
+        }\r
+      });\r
+      return true;\r
+    }\r
 \r
-  }\r
 \r
 \r
     return false;\r
index ae29a78..a35c56a 100644 (file)
@@ -4,6 +4,7 @@ import android.content.Context;
 import android.content.Intent;\r
 import android.graphics.Bitmap;\r
 import android.graphics.BitmapFactory;\r
+import android.graphics.Color;\r
 import android.graphics.Matrix;\r
 import android.graphics.SurfaceTexture;\r
 import android.hardware.Camera;\r
@@ -13,6 +14,8 @@ import android.os.StatFs;
 import android.view.SurfaceView;\r
 import android.view.WindowManager;\r
 \r
+import com.enqualcomm.support.CoreService;\r
+\r
 import java.io.BufferedOutputStream;\r
 import java.io.File;\r
 import java.io.FileOutputStream;\r
@@ -31,11 +34,15 @@ public class CameraUtil implements SurfaceTexture.OnFrameAvailableListener {
         if (CameraUtil.this.mPs.getPictureFormat() == 256) {\r
           String str = CameraUtil.this.savePicture(param1ArrayOfByte);\r
           if (str != null) {\r
-            Intent intent = new Intent(CameraUtil.this.context, com.enqualcomm.support.CoreService.class);\r
-            intent.setAction(ACTION_REMOTE_CAMERA);\r
-            intent.putExtra("filepath", str);\r
-            intent.putExtra("number", CameraUtil.this.mNumber);\r
-            CameraUtil.this.context.startService(intent);\r
+//            Intent intent = new Intent(CameraUtil.this.context, com.enqualcomm.support.CoreService.class);\r
+////            intent.setAction(ACTION_REMOTE_CAMERA);\r
+////            intent.putExtra("filepath", str);\r
+////            intent.putExtra("number", CameraUtil.this.mNumber);\r
+////            CameraUtil.this.context.startService(intent);\r
+\r
+            if (CoreService.getInstance()!=null){\r
+              CoreService.getInstance().DevliverStringMessage("PhotoRemoteTaken",str);\r
+            }\r
           } else {\r
             ICLogger.i("空间不足,保存失败");\r
           } \r
@@ -104,21 +111,26 @@ public class CameraUtil implements SurfaceTexture.OnFrameAvailableListener {
         str = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath();\r
         StringBuilder stringBuilder = new StringBuilder();\r
         stringBuilder.append(str);\r
-        stringBuilder.append("/RemoteCamera.jpg");\r
+        stringBuilder.append("/TakePhoto_");\r
+        stringBuilder.append(this.mNumber);\r
+        stringBuilder.append(".jpg");\r
         str = stringBuilder.toString();\r
         Bitmap bitmap2 = BitmapFactory.decodeByteArray(paramArrayOfByte, 0, paramArrayOfByte.length);\r
-        Bitmap bitmap1 = bitmap2;\r
+//        Bitmap bitmap1 = bitmap2;\r
+        Bitmap bitmap3 = bitmap2;\r
         if ((this.context.getResources().getConfiguration()).orientation == 1) {\r
-          Matrix matrix = new Matrix();\r
-          matrix.reset();\r
-          matrix.postRotate(this.mOrientation);\r
-          bitmap1 = Bitmap.createBitmap(bitmap2, 0, 0, bitmap2.getWidth(), bitmap2.getHeight(), matrix, true);\r
-        } \r
+//          Matrix matrix = new Matrix();\r
+//          matrix.reset();\r
+       //   matrix.postRotate(this.mOrientation);\r
+         // bitmap1 = Bitmap.createBitmap(bitmap2, 0, 0, bitmap2.getWidth(), bitmap2.getHeight(), matrix, true);\r
+//          bitmap3 = ImageUtil.drawTextToLeftTop(this.context,bitmap2,TimeUtil.getSystemTime(),40,0xFF4000 ,25,-100);\r
+        }\r
+        bitmap3 = ImageUtil.drawTextToLeftTop(this.context,bitmap2,TimeUtil.getSystemTime(),30, Color.RED ,25,25);\r
         File file = new File(str);\r
         if (!file.exists())\r
           file.createNewFile(); \r
         BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(file));\r
-        bitmap1.compress(Bitmap.CompressFormat.JPEG, 100, bufferedOutputStream);\r
+        bitmap3.compress(Bitmap.CompressFormat.JPEG, 100, bufferedOutputStream);\r
         bufferedOutputStream.flush();\r
         bufferedOutputStream.close();\r
 \r
index 280f12b..93ba013 100644 (file)
@@ -14,9 +14,12 @@ public class ICAudioManager {
         AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
         ICLogger.i("======setVolumnMute");
 //        saved_volumn = audioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL);
-        audioManager.setMasterMute(true);
-        audioManager.setStreamMute(AudioManager.STREAM_VOICE_CALL,true);
-        audioManager.setSpeakerphoneOn(false);
+        if (audioManager != null) {
+            audioManager.setMasterMute(true);
+
+            audioManager.setStreamMute(AudioManager.STREAM_VOICE_CALL, true);
+            audioManager.setSpeakerphoneOn(false);
+        }
 //        SimSignalUtil.SetRingMode(context, AudioManager.RINGER_MODE_SILENT, false);
 //        CloseSpeaker(context);//
 
@@ -25,9 +28,12 @@ public class ICAudioManager {
     public static void restoreVolumn(Context context) {
         ICLogger.i("======restoreVolumn "+saved_volumn);
         AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
-        audioManager.setMasterMute(false);
-        audioManager.setStreamMute(AudioManager.STREAM_VOICE_CALL,false);
-        audioManager.setSpeakerphoneOn(true);
+        if (audioManager != null) {
+            audioManager.setMasterMute(false);
+
+            audioManager.setStreamMute(AudioManager.STREAM_VOICE_CALL, false);
+            audioManager.setSpeakerphoneOn(true);
+        }
 //        changeToSpeaker(context);
 
 //        SimSignalUtil.SetRingMode(context, AudioManager.RINGER_MODE_NORMAL, true);
index 7b174a2..e1aa44a 100644 (file)
@@ -307,9 +307,27 @@ public class ProcessReceiver extends BroadcastReceiver {
         },2000L);\r
         return;\r
     }else if (ACTION_REMOTE_CAMERA.equals(str)) {\r
-      String str1;\r
-      str1 = paramIntent.getStringExtra("key_remote_number");\r
-      (new CameraUtil(paramContext)).getPictur(str1);\r
+      if (paramIntent.hasExtra("remote_number")){\r
+        //接收拍照命令,执行拍照\r
+        String str1 = paramIntent.getStringExtra("remote_number");\r
+        (new CameraUtil(paramContext)).getPictur(str1);\r
+      }else{\r
+        //接收到拍照完毕命令,发送照片\r
+        String msgFrom=paramIntent.getStringExtra("number");\r
+        String msgUrl=paramIntent.getStringExtra("filepath");\r
+        ICLogger.i("receive taken photo to send "+msgUrl);\r
+        //创建voiceConent并添加到数据\r
+        final VoiceContent voiceContent = VoiceContent.placeHolderOut(CONTACT_CATEGORY_GROUP, msgFrom, msgUrl,2,2);\r
+\r
+        // 把voiceContent拆解成1024的分包\r
+        Util.parseToVoicePacketSent(voiceContent);\r
+        //trigger 分包发送\r
+        if (CoreService.getInstance().getConnection()!=null)\r
+          CoreService.getInstance().getConnection().DeliverCMDMessageToSystem("SentVoicePacket", "");\r
+\r
+      }\r
+\r
+\r
       return;\r
 \r
     }else  if (DIALOG_ACTION.equals(str)) {\r
index b787f2e..3874da7 100644 (file)
@@ -462,6 +462,13 @@ public class Util {
   public static boolean LogfileExist(Runtime runtime,String logfilename){\r
     return new File(getLogfilePath(runtime,logfilename)).exists();\r
   }\r
+  public static String getRecordfilePath(Runtime runtime,String recordfilename){\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append(recordfilename);\r
+    stringBuilder.append(".amr");\r
+    File file = new File(runtime.getCacheDir(), stringBuilder.toString());\r
+    return file.getAbsolutePath();\r
+  }\r
 \r
   public static String getLogfilePath(Runtime runtime,String logfilename){\r
     StringBuilder stringBuilder = new StringBuilder();\r
index 03a55f3..43d5998 100644 (file)
@@ -1,6 +1,7 @@
 package com.ic.protocols;\r
 \r
 import android.content.ComponentName;\r
+import android.content.Context;\r
 import android.content.Intent;\r
 import android.net.Uri;\r
 import android.os.Environment;\r
@@ -16,6 +17,7 @@ import com.enqualcomm.support.bean.StringMessage;
 import com.enqualcomm.support.bean.VoiceContent;\r
 import com.enqualcomm.support.bean.voicePacket;\r
 import com.enqualcomm.support.service.HeartRateManager;\r
+import com.enqualcomm.support.utils.CameraUtil;\r
 import com.enqualcomm.support.utils.Connection;\r
 import com.enqualcomm.support.utils.ICLogger;\r
 import com.enqualcomm.support.utils.NettyConnection;\r
@@ -26,8 +28,13 @@ import com.enqualcomm.support.utils.Util;
 import java.io.File;\r
 import java.util.ArrayList;\r
 import java.util.HashMap;\r
+import java.util.concurrent.TimeUnit;\r
+\r
+import rx.Observable;\r
+import rx.functions.Action1;\r
 \r
 import static com.enqualcomm.support.Constants.ACTION_HEATR_RATE_START;\r
+import static com.enqualcomm.support.Constants.ACTION_REMOTE_CAMERA;\r
 import static com.enqualcomm.support.LocationClient.LOCATION_MODE;\r
 import static com.enqualcomm.support.bean.Contact.GROUP_ALL;\r
 import static java.lang.Math.abs;\r
@@ -119,12 +126,18 @@ public class protocol_ic {
         BPHP,\r
         APDE,//进出围栏通知\r
         BPDE,\r
-        APDF,//体温阀值设置\r
-        BPDF,\r
+        APDG,//体温阀值设置\r
+        BPDG,\r
         APTU,//上传语音图片\r
         BPTU,\r
         APSL,//上传睡眠数据\r
         BPSL,\r
+        AP46,//立即拍照\r
+        BP46,\r
+        APDH,//聆听\r
+        BPDH,\r
+        AP99,//监听电话\r
+        BP99,\r
         UNKNOWN_CMD,\r
     }\r
 \r
@@ -154,6 +167,7 @@ public class protocol_ic {
         cmdMap.put(CMD_TYPE.BPHT, "BPHT");\r
         cmdMap.put(CMD_TYPE.APTM, "APTM");\r
         cmdMap.put(CMD_TYPE.BPTM, "BPTM");\r
+        /* 服务器发起*/\r
         cmdMap.put(CMD_TYPE.AP12, "AP12");\r
         cmdMap.put(CMD_TYPE.BP12, "BP12");\r
         cmdMap.put(CMD_TYPE.AP14, "AP14");\r
@@ -208,12 +222,19 @@ public class protocol_ic {
         cmdMap.put(CMD_TYPE.BPHP, "BPHP");\r
         cmdMap.put(CMD_TYPE.APDE, "APDE");\r
         cmdMap.put(CMD_TYPE.BPDE, "BPDE");\r
-        cmdMap.put(CMD_TYPE.APDF, "APDF");\r
-        cmdMap.put(CMD_TYPE.BPDF, "BPDF");\r
+        cmdMap.put(CMD_TYPE.APDG, "APDG");\r
+        cmdMap.put(CMD_TYPE.BPDG, "BPDG");\r
         cmdMap.put(CMD_TYPE.APTU, "APTU");\r
         cmdMap.put(CMD_TYPE.BPTU, "BPTU");\r
         cmdMap.put(CMD_TYPE.APSL, "APSL");\r
         cmdMap.put(CMD_TYPE.BPSL, "BPSL");\r
+        cmdMap.put(CMD_TYPE.AP46, "AP46");\r
+        cmdMap.put(CMD_TYPE.BP46, "BP46");\r
+        cmdMap.put(CMD_TYPE.APDH, "APDH");\r
+        cmdMap.put(CMD_TYPE.BPDH, "BPDH");\r
+        cmdMap.put(CMD_TYPE.AP99, "AP99");\r
+        cmdMap.put(CMD_TYPE.BP99, "BP99");\r
+\r
     }\r
 \r
 \r
@@ -1892,19 +1913,19 @@ public class protocol_ic {
 \r
 \r
     }\r
-    public static String APDF(String id){\r
-        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APDF))\r
+    public static String APDG(String id){\r
+        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APDG))\r
                 .append(CMDSPLIT).append(id)\r
                 .append(CMDEND).toString();\r
     }\r
 \r
-    public void handleBPDF(NettyConnection connection,String cmd,Runtime runtime){\r
+    public void handleBPDG(NettyConnection connection,String cmd,Runtime runtime){\r
 /**\r
  * 示例:\r
- * IWBPDF,353456789012345,1,30.0,37.3 #\r
+ * IWBPDG,353456789012345,1,30.0,37.3 #\r
  * 说明:\r
  * IW:标识符\r
- * BPDF: 命令字符\r
+ * BPDG: 命令字符\r
  * 353456789012345:设备IMEI或者ID\r
  * 080835 :指令流水号\r
  * 1:开关 1开,  0 关\r
@@ -1919,14 +1940,14 @@ public class protocol_ic {
             String switch_on=list[2];\r
             String min_temp=list[3];\r
             String max_temp=list[4];\r
-            connection.send(genStringMessage("APDF",APDF(index)));\r
+            connection.send(genStringMessage("APDG",APDG(index)));\r
             if ( Integer.parseInt(switch_on) == 1) {\r
-                ICLogger.i("Handle BPDF index " + index + ", 体温报警阈值开 min="+min_temp+",max="+max_temp);\r
+                ICLogger.i("Handle BPDG index " + index + ", 体温报警阈值开 min="+min_temp+",max="+max_temp);\r
             }else {\r
-                ICLogger.i("Handle BPDF index " + index + ", 体温报警阈值关 ");\r
+                ICLogger.i("Handle BPDG index " + index + ", 体温报警阈值关 ");\r
             }\r
         }else{\r
-            ICLogger.i("BPDF format error!");\r
+            ICLogger.i("BPDG format error!");\r
         }\r
     }\r
 \r
@@ -2015,6 +2036,7 @@ public class protocol_ic {
             if (receiveSuccess == 1){\r
                 //如果服务器接收 语音成功,则设置下一个要发送的语音包Index,当index == packetCount的时候表示所有包发送完毕,停止继续发送\r
                 voicePacket.getInstanceSent().setCurrentIndexToSent(packetIndex);\r
+                //voicePacket.getInstanceSent().setFileType(ftype,dtype);\r
             }\r
             //发送消息,再次检查要发送的语音包,确认其发送完毕\r
             connection.DeliverCMDMessageToSystem("SentVoicePacket","SentBPFilePacket");\r
@@ -2024,8 +2046,6 @@ public class protocol_ic {
         }\r
     }\r
 \r
-\r
-\r
     public static String APSL(String date,int deepsleep,int lightsleep,int score){\r
 /***\r
  * 示例:\r
@@ -2055,6 +2075,109 @@ public class protocol_ic {
         return sb;\r
     }\r
 \r
+    public static String AP46(String id,String cmd)\r
+    {\r
+        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP46))\r
+                .append(CMDSPLIT).append(id)\r
+                .append(CMDSPLIT).append(cmd)\r
+                .append(CMDEND).toString();\r
+    }\r
+\r
+    public void handleBP46(String cmd , NettyConnection connection,Runtime runtime) {\r
+/***\r
+ * IWBP46,353456789012345,080835,1,[参数]#\r
+ * 说明:\r
+ * IW:标识符\r
+ * BP46 : 命令字符\r
+ * 353456789012345:IMEI号,设备唯一ID\r
+ * 080835 :指令流水号\r
+ * 1: 表示立即拍照\r
+ * [参数]: 此为可选项。根据不同类型设备扩展\r
+ * #:结尾标识符\r
+ * 设备响应:     IWAP46,080835,1#\r
+ * 080835:指令流水号\r
+ * 1 成功 0失败\r
+ * # 结尾标识符\r
+ */\r
+        String[] cmdlist=cmd.split(CMDSPLIT);\r
+        if (cmdlist.length==5){\r
+            String imei=cmdlist[1];\r
+            String id=cmdlist[2];\r
+            String cdd=cmdlist[3];\r
+            String tmp=cmdlist[4];\r
+\r
+            connection.send(genStringMessage("AP46",AP46(id,cdd)));\r
+\r
+            if (cdd.equals("1")) {\r
+                //delay 启动\r
+                Context context = mRuntime.getContextProxy().context.getApplicationContext();\r
+//            Intent intent = new Intent(context, com.enqualcomm.support.CoreService.class);\r
+//            intent.setAction(ACTION_REMOTE_CAMERA);\r
+//            intent.putExtra("remote_number", id);\r
+//                context.startService(intent);\r
+//            runtime.getContextProxy().context.sendBroadcast(intent);\r
+                (new CameraUtil(context)).getPictur(id);\r
+            }\r
+        }else{\r
+            ICLogger.i(" BP46 Format error!");\r
+        }\r
+\r
+    }\r
+\r
+\r
+    public static String APDH(String id,String cmd)\r
+    {\r
+        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APDH))\r
+                .append(CMDSPLIT).append(id)\r
+                .append(CMDSPLIT).append(cmd)\r
+                .append(CMDEND).toString();\r
+    }\r
+\r
+\r
+    public void handleBPDH( NettyConnection connection,Runtime runtime,String cmd) {\r
+        /***\r
+         * IWBPDH,353456789012345,080835,1,[参数]#\r
+         * 说明:\r
+         * IW:标识符\r
+         * BPDH : 命令字符\r
+         * 353456789012345:IMEI号,设备唯一ID\r
+         * 080835 :指令流水号\r
+         * 1:  表示立即聆听 可扩展\r
+         * [参数]: 此为可选项。录音时间 为空默认15秒\r
+         * #:结尾标识符\r
+         * 设备响应:     IWAPDH,080835,1#\r
+         * 080835:指令流水号\r
+         * 1 成功 0失败\r
+         * # 结尾标识符\r
+         */\r
+\r
+        String[] cmdlist=cmd.split(CMDSPLIT);\r
+        if (cmdlist.length==5){\r
+            String imei=cmdlist[1];\r
+            String id=cmdlist[2];\r
+            String cdd=cmdlist[3];\r
+            String tmp=cmdlist[4];\r
+\r
+            tmp=tmp.replace(CMDEND,"").trim();\r
+\r
+            if (tmp.isEmpty()) tmp="15";\r
+            connection.send(genStringMessage("APDH",APDH(id,cdd)));\r
+\r
+            if (cdd.equals("1")) {\r
+                //delay 启动\r
+                Context context = mRuntime.getContextProxy().context.getApplicationContext();\r
+                CoreService.getInstance().DevliverStringMessage("StartMonitor",tmp);\r
+            }\r
+        }else{\r
+            ICLogger.i(" BPDH Format error!");\r
+        }\r
+    }\r
+\r
+\r
+\r
+\r
+\r
+\r
 \r
     public boolean handleCmd(CMD_TYPE type, String cmd) {\r
 \r
@@ -2121,10 +2244,10 @@ public class protocol_ic {
                 mConnection.DeliverCMDMessageToSystem("StartLocate",cmd);//通知下面线程状态变化\r
                 break;\r
 \r
-//                            case BP05: //L02服务器不适用\r
-//                                //查询服务器语音 返回信息\r
-//                                API.handleBP05(cmd);\r
-//                                break;\r
+            case BP46: //立即拍照\r
+                ICLogger.i("立即拍照!");\r
+                handleBP46(cmd,mConnection,mRuntime);\r
+                break;\r
 \r
             case BP12:\r
                 //收到设置SOS号码\r
@@ -2243,15 +2366,20 @@ public class protocol_ic {
                 ICLogger.i("收到服务器 图片语音 消息 BPTU");\r
             //    mConnection.DeliverCMDMessageToSystem("APTU", "");//通知下面线程状态变化\r
                 break;\r
-            case BPDF:\r
-                handleBPDF(mConnection,cmd,mRuntime);\r
+            case BPDG:\r
+                handleBPDG(mConnection,cmd,mRuntime);\r
                 ICLogger.i(" 收到 体温阈值设置!");\r
-                mConnection.DeliverCMDMessageToSystem("APDF",cmd);//通知下面线程状态变化\r
+                mConnection.DeliverCMDMessageToSystem("APDG",cmd);//通知下面线程状态变化\r
                 break;\r
             case BPSL:\r
                 ICLogger.i("睡眠数据上传完毕!");\r
                 mConnection.DeliverCMDMessageToSystem("APSL",cmd);//通知下面线程状态变化\r
                 break;\r
+\r
+            case BPDH:\r
+                ICLogger.i("聆听");\r
+                handleBPDH(mConnection,mRuntime,cmd);\r
+                break;\r
         }\r
 \r
         return ret;\r
index 4a3083e..f7f253b 100644 (file)
@@ -1,2 +1,2 @@
-#Tue Aug 04 21:16:19 CST 2020\r
-VERSION_CODE=475\r
+#Thu Aug 06 03:19:06 CST 2020\r
+VERSION_CODE=476\r
index aad8a51..06d18e6 100644 (file)
@@ -4,5 +4,5 @@
 # Location of the SDK. This is only used by Gradle.\r
 # For customization when using a Version Control System, please read the\r
 # header note.\r
-#Thu Jul 30 18:51:06 CST 2020\r
-sdk.dir=C\:\\Users\\incar\\AppData\\Local\\Android\\Sdk\r
+#Wed Aug 05 23:43:00 CST 2020\r
+sdk.dir=D\:\\Android\\Sdk\r