add pciture into database for fzd.
authorTrillGates <williamtrillgates@gmail.com>
Wed, 7 Apr 2021 07:42:19 +0000 (15:42 +0800)
committerTrillGates <williamtrillgates@gmail.com>
Wed, 7 Apr 2021 07:42:19 +0000 (15:42 +0800)
app/src/main/java/com/enqualcomm/support/CoreService.java
app/src/main/java/com/enqualcomm/support/ICSmsManager.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/ProcessReceiver.java
app/src/main/java/com/ic/protocols/protocol_fzd.java
app/src/main/java/com/ic/protocols/protocol_ic.java

index 63505d4..d03d73a 100644 (file)
@@ -348,8 +348,7 @@ public class CoreService extends Service {
         }
 
         public void onReceive(StringMessage param1StringMessage) {
-
-            CoreService coreService = (CoreService) this.mReference.get();
+            CoreService coreService = this.mReference.get();
             ICLogger.i("onReceive " + param1StringMessage.cmd() + " coreService " + coreService);
             if (coreService == null)
                 return;
index 2f9da84..c6fcb06 100644 (file)
@@ -1091,7 +1091,7 @@ public class ICSmsManager extends BroadcastReceiver {
                 mHandler.post(new Runnable() {
                     @Override
                     public void run() {
-                        (new CameraUtil(mContext)).getPictur("capture" + TimeUtil.getSystemTime3());
+                        (new CameraUtil(mContext)).getPicture("capture" + TimeUtil.getSystemTime3());
                     }
                 });
 
index 88531f5..0fef380 100644 (file)
@@ -3,9 +3,11 @@ package com.enqualcomm.support.service;
 import android.app.AlarmManager;
 import android.app.PendingIntent;
 import android.content.BroadcastReceiver;
+import android.content.ContentValues;
 import android.content.Context;
 import android.content.Intent;
 import android.net.ConnectivityManager;
+import android.net.Uri;
 import android.net.wifi.WifiConfiguration;
 import android.net.wifi.WifiManager;
 import android.os.Build;
@@ -24,6 +26,8 @@ import com.enqualcomm.support.bean.Runtime;
 import com.enqualcomm.support.bean.StringMessage;
 import com.enqualcomm.support.bean.VoiceContent;
 import com.enqualcomm.support.bean.voicePacket;
+import com.enqualcomm.support.provider.FZDDatabaseHelper;
+import com.enqualcomm.support.provider.FZDMessageProvider;
 import com.enqualcomm.support.service.base.AbstractConnectionService;
 import com.enqualcomm.support.utils.Connection;
 import com.enqualcomm.support.utils.FileCache;
@@ -444,11 +448,35 @@ public class Deliver extends AbstractConnectionService {
             return true;
         } else if ("PhotoRemoteTaken".equals(paramStringMessage.cmd())) {
             //接收到拍照完毕命令,发送照片
-
+            //TODO:这里要使用新的数据库了,保存到新的数据库上
+            //通过群聊,把图片发送给手机端口
+            //TODO:目前修改先不删除原来的代码,但是会保存到份到新的数据库里
+            //监听数据库的变化来发送数据给到手机端的
+            //storage/emulated/0/Pictures/TakePhoto_815cac71-396b-4359-93ea-dc12105a6173.jpg
             String msgUrl = paramStringMessage.isFromCache();
+            ContentValues contentValues = new ContentValues();
+            //路径
+            contentValues.put("content", msgUrl);
+            //类型为声音
+            contentValues.put("type", FZDDatabaseHelper.MessageType.PIC);
+            //状态:0表示未读
+            contentValues.put("state", 0);
+            //文件时长
+            contentValues.put("duration", 0);
+            //接受还是发送,1表示来信
+            contentValues.put("in_or_out", 1);
+            //对方号码是没有的
+            contentValues.put("remote_num", "");
+            contentValues.put("create_time", System.currentTimeMillis());
+            contentValues.put("update_time", System.currentTimeMillis());
+            mRuntime.getContextProxy().getResolver().insert(Uri.parse(FZDMessageProvider.MESSAGES),
+                    contentValues);
             ICLogger.i("receive taken photo to send " + msgUrl);
+            //保存到防走丢的数据库里
+
             //创建voiceConent并添加到数据
-            final VoiceContent voiceContent = VoiceContent.placeHolderOut(CONTACT_CATEGORY_GROUP, "123", msgUrl, 2, 2);
+            final VoiceContent voiceContent = VoiceContent.placeHolderOut(CONTACT_CATEGORY_GROUP,
+                    "123", msgUrl, 2, 2);
 
             // 把voiceContent拆解成1024的分包
             Util.parseToVoicePacketSent(voiceContent);
index 6b10f6e..f2ff1fa 100644 (file)
@@ -1,7 +1,6 @@
 package com.enqualcomm.support.utils;\r
 \r
 import android.content.Context;\r
-import android.content.Intent;\r
 import android.graphics.Bitmap;\r
 import android.graphics.BitmapFactory;\r
 import android.graphics.Color;\r
@@ -11,7 +10,6 @@ import android.hardware.Camera;
 import android.media.ToneGenerator;\r
 import android.os.Environment;\r
 import android.os.StatFs;\r
-import android.text.TextUtils;\r
 import android.view.SurfaceView;\r
 import android.view.WindowManager;\r
 \r
@@ -22,254 +20,249 @@ import java.io.BufferedOutputStream;
 import java.io.File;\r
 import java.io.FileOutputStream;\r
 \r
-import static com.enqualcomm.support.Constants.ACTION_REMOTE_CAMERA;\r
-\r
 public class CameraUtil implements SurfaceTexture.OnFrameAvailableListener {\r
-  Context context;\r
-  \r
-  private Camera.PictureCallback jpegCallback = new Camera.PictureCallback() {\r
-      public void onPictureTaken(byte[] param1ArrayOfByte, Camera param1Camera) {\r
+    Context context;\r
+\r
+    private Camera.PictureCallback jpegCallback = (param1ArrayOfByte, param1Camera) -> {\r
         StringBuilder stringBuilder = new StringBuilder();\r
         stringBuilder.append("camera format=");\r
         stringBuilder.append(CameraUtil.this.mPs.getPictureFormat());\r
         ICLogger.i(stringBuilder.toString());\r
         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
-\r
-            if (CoreService.getInstance()!=null){\r
-              CoreService.getInstance().DevliverStringMessage("PhotoRemoteTaken",str);\r
+            String str = CameraUtil.this.savePicture(param1ArrayOfByte);\r
+            if (str != null) {\r
+                if (CoreService.getInstance() != null) {\r
+                    //str就是path.\r
+                    CoreService.DevliverStringMessage("PhotoRemoteTaken", str);\r
+                }\r
+            } else {\r
+                ICLogger.i("camera 空间不足,保存失败");\r
             }\r
-          } else {\r
-            ICLogger.i("camera 空间不足,保存失败");\r
-          } \r
-        } \r
+        }\r
         CameraUtil.this.releaseCamera();\r
-      }\r
     };\r
-  \r
-  private Camera mCamera;\r
-  \r
-  String mNumber;\r
-  \r
-  private int mOrientation;\r
-  private int custom_camera_orientation=0;\r
-  private int custom_camera_mirror=0;\r
-  private Camera.Parameters mPs;\r
-  \r
-  private Camera.ShutterCallback shutterCallback = new Camera.ShutterCallback() {\r
-      public void onShutter() { ICLogger.i("camera shutterCallback"); }\r
+\r
+    private Camera mCamera;\r
+\r
+    String mNumber;\r
+\r
+    private int mOrientation;\r
+    private int custom_camera_orientation = 0;\r
+    private int custom_camera_mirror = 0;\r
+    private Camera.Parameters mPs;\r
+\r
+    private Camera.ShutterCallback shutterCallback = new Camera.ShutterCallback() {\r
+        public void onShutter() {\r
+            ICLogger.i("camera shutterCallback");\r
+        }\r
     };\r
-  \r
-  private SurfaceTexture surfaceTexture;\r
-  \r
-  private ToneGenerator tone;\r
-  \r
-  public CameraUtil(Context paramContext) { this.context = paramContext; }\r
-  \r
-  private Camera openFacingBackCamera() {\r
-    Camera.CameraInfo cameraInfo = new Camera.CameraInfo();\r
-    int i = Camera.getNumberOfCameras();\r
-    Camera camera = null;\r
-    byte b = 0;\r
-    while (b < i) {\r
-      Camera.getCameraInfo(b, cameraInfo);\r
-\r
-      if (cameraInfo.facing == 0) {\r
-        try {\r
-          camera = Camera.open(b);\r
-        } catch (RuntimeException e) {\r
-          e.printStackTrace();\r
+\r
+    private SurfaceTexture surfaceTexture;\r
+\r
+    private ToneGenerator tone;\r
+\r
+    public CameraUtil(Context paramContext) {\r
+        this.context = paramContext;\r
+    }\r
+\r
+    private Camera openFacingBackCamera() {\r
+        Camera.CameraInfo cameraInfo = new Camera.CameraInfo();\r
+        int i = Camera.getNumberOfCameras();\r
+        Camera camera = null;\r
+        byte b = 0;\r
+        while (b < i) {\r
+            Camera.getCameraInfo(b, cameraInfo);\r
+\r
+            if (cameraInfo.facing == 0) {\r
+                try {\r
+                    camera = Camera.open(b);\r
+                } catch (RuntimeException e) {\r
+                    e.printStackTrace();\r
+                }\r
+            }\r
+            b++;\r
         }\r
-      }\r
-      b++;\r
-    } \r
-    return camera;\r
-  }\r
-  \r
-  private void releaseCamera() {\r
-    if (this.mCamera != null)\r
-      try {\r
-        if (this.surfaceTexture != null)\r
-          this.surfaceTexture.setOnFrameAvailableListener(null); \r
-        this.mCamera.setPreviewTexture(null);\r
-        this.mCamera.stopPreview();\r
-      } catch (Exception exception) {\r
-        exception.printStackTrace();\r
-      }  \r
-    this.mCamera.release();\r
-  }\r
-  \r
-  private String savePicture(byte[] paramArrayOfByte) {\r
-\r
-    int jpg_quality=Util.getSystemPropertiesInt("persist.sys.capture_quality",50);\r
-    String str = null;\r
-    try {\r
-      if (Environment.getExternalStorageState().equals("mounted")) {\r
-        if ((new StatFs(Environment.getExternalStorageDirectory().toString())).getAvailableBytes() < paramArrayOfByte.length)\r
-          return null; \r
-        str = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath();\r
-        StringBuilder stringBuilder = new StringBuilder();\r
-        stringBuilder.append(str);\r
-        stringBuilder.append("/TakePhoto_");\r
-        stringBuilder.append(this.mNumber);\r
-        stringBuilder.append(".jpg");\r
-        str = stringBuilder.toString();\r
-        Bitmap bitmap1 = BitmapFactory.decodeByteArray(paramArrayOfByte, 0, paramArrayOfByte.length);\r
-        Bitmap bitmap2 = bitmap1;\r
+        return camera;\r
+    }\r
+\r
+    private void releaseCamera() {\r
+        if (this.mCamera != null)\r
+            try {\r
+                if (this.surfaceTexture != null)\r
+                    this.surfaceTexture.setOnFrameAvailableListener(null);\r
+                this.mCamera.setPreviewTexture(null);\r
+                this.mCamera.stopPreview();\r
+            } catch (Exception exception) {\r
+                exception.printStackTrace();\r
+            }\r
+        this.mCamera.release();\r
+    }\r
+\r
+    private String savePicture(byte[] paramArrayOfByte) {\r
+\r
+        int jpg_quality = Util.getSystemPropertiesInt("persist.sys.capture_quality", 50);\r
+        String str = null;\r
+        try {\r
+            if (Environment.getExternalStorageState().equals("mounted")) {\r
+                if ((new StatFs(Environment.getExternalStorageDirectory().toString())).getAvailableBytes() < paramArrayOfByte.length)\r
+                    return null;\r
+                str = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath();\r
+                StringBuilder stringBuilder = new StringBuilder();\r
+                stringBuilder.append(str);\r
+                stringBuilder.append("/TakePhoto_");\r
+                stringBuilder.append(this.mNumber);\r
+                stringBuilder.append(".jpg");\r
+                str = stringBuilder.toString();\r
+                Bitmap bitmap1 = BitmapFactory.decodeByteArray(paramArrayOfByte, 0, paramArrayOfByte.length);\r
+                Bitmap bitmap2 = bitmap1;\r
 \r
 \r
 //        if ((this.context.getResources().getConfiguration()).orientation == 1) {\r
-        custom_camera_mirror = Util.getSystemPropertiesInt("persist.sys.camera_cap_mirror",0);\r
-        Matrix matrix = new Matrix();\r
-        matrix.reset();\r
-        switch(custom_camera_orientation)\r
-        {\r
-          case 90:\r
-          case 270:\r
-             matrix.postRotate(custom_camera_orientation);\r
-            if(custom_camera_mirror==-1)\r
-              matrix.postScale(-1, 1);\r
-            else if(custom_camera_mirror==-2)\r
-              matrix.postScale(1,-1);\r
-\r
-            bitmap2 = Bitmap.createBitmap(bitmap1, 0, 0, bitmap1.getWidth(), bitmap1.getHeight(), matrix, true);\r
-            break;\r
-          case 0:\r
-          case 180:\r
-            if(custom_camera_mirror<0) {\r
-              if (custom_camera_mirror == -1)\r
-                matrix.postScale(-1, 1);\r
-              else if (custom_camera_mirror == -2)\r
-                matrix.postScale(1, -1);\r
-              bitmap2 = Bitmap.createBitmap(bitmap1, 0, 0, bitmap1.getWidth(), bitmap1.getHeight(), matrix, true);\r
+                custom_camera_mirror = Util.getSystemPropertiesInt("persist.sys.camera_cap_mirror", 0);\r
+                Matrix matrix = new Matrix();\r
+                matrix.reset();\r
+                switch (custom_camera_orientation) {\r
+                    case 90:\r
+                    case 270:\r
+                        matrix.postRotate(custom_camera_orientation);\r
+                        if (custom_camera_mirror == -1)\r
+                            matrix.postScale(-1, 1);\r
+                        else if (custom_camera_mirror == -2)\r
+                            matrix.postScale(1, -1);\r
+\r
+                        bitmap2 = Bitmap.createBitmap(bitmap1, 0, 0, bitmap1.getWidth(), bitmap1.getHeight(), matrix, true);\r
+                        break;\r
+                    case 0:\r
+                    case 180:\r
+                        if (custom_camera_mirror < 0) {\r
+                            if (custom_camera_mirror == -1)\r
+                                matrix.postScale(-1, 1);\r
+                            else if (custom_camera_mirror == -2)\r
+                                matrix.postScale(1, -1);\r
+                            bitmap2 = Bitmap.createBitmap(bitmap1, 0, 0, bitmap1.getWidth(), bitmap1.getHeight(), matrix, true);\r
+                        }\r
+                    default:\r
+                        break;\r
+                }\r
+\r
+                Bitmap bitmap3 = bitmap2;\r
+                if (Config.needWaterMark()) {\r
+                    bitmap3 = ImageUtil.drawTextToLeftTop(this.context, bitmap2, TimeUtil.getSystemTimeForCameraMark(), 50, Color.RED, 25, 25);\r
+                }\r
+                File file = new File(str);\r
+                if (!file.exists())\r
+                    file.createNewFile();\r
+                BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(file));\r
+                bitmap3.compress(Bitmap.CompressFormat.JPEG, jpg_quality, bufferedOutputStream);\r
+                bufferedOutputStream.flush();\r
+                bufferedOutputStream.close();\r
+\r
+                ICLogger.i("camera Take Photo and Save to " + str);\r
             }\r
-          default:\r
-            break;\r
+            return str;\r
+        } catch (Exception e) {\r
+            e.printStackTrace();\r
+            return null;\r
         }\r
+    }\r
 \r
-        Bitmap bitmap3 = bitmap2;\r
-        if(Config.needWaterMark()) {\r
-          bitmap3 = ImageUtil.drawTextToLeftTop(this.context, bitmap2, TimeUtil.getSystemTimeForCameraMark(), 50, Color.RED, 25, 25);\r
-        }\r
-        File file = new File(str);\r
-        if (!file.exists())\r
-          file.createNewFile(); \r
-        BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(file));\r
-        bitmap3.compress(Bitmap.CompressFormat.JPEG, jpg_quality, bufferedOutputStream);\r
-        bufferedOutputStream.flush();\r
-        bufferedOutputStream.close();\r
-\r
-        ICLogger.i("camera Take Photo and Save to "+str);\r
-      } \r
-      return str;\r
-    } catch (Exception e) {\r
-      e.printStackTrace();\r
-      return null;\r
-    } \r
-  }\r
-  \r
-  private void takePicture(Context paramContext) {\r
-    if (this.mCamera != null) {\r
-      SurfaceView surfaceView = new SurfaceView(paramContext);\r
-      int width=640;\r
-      int height=480;\r
-      try {\r
-        this.mCamera.setPreviewDisplay(surfaceView.getHolder());\r
-        this.mPs = this.mCamera.getParameters();\r
-        String picsize=Util.getSystemProperties("persist.sys.camera_capsize","640x480");\r
-\r
-        if (!picsize.trim().isEmpty() ){\r
-          String sizes[]= picsize.toLowerCase().split("x");\r
-          if(sizes.length==2){\r
-            try{\r
-              int tmpw=Integer.parseInt(sizes[0]);\r
-              int tmph=Integer.parseInt(sizes[1]);\r
-              width=tmpw;\r
-              height=tmph;\r
-            }catch (Exception e){}\r
-          }\r
+    private void takePicture(Context paramContext) {\r
+        if (this.mCamera != null) {\r
+            SurfaceView surfaceView = new SurfaceView(paramContext);\r
+            int width = 640;\r
+            int height = 480;\r
+            try {\r
+                this.mCamera.setPreviewDisplay(surfaceView.getHolder());\r
+                this.mPs = this.mCamera.getParameters();\r
+                String picsize = Util.getSystemProperties("persist.sys.camera_capsize", "640x480");\r
+\r
+                if (!picsize.trim().isEmpty()) {\r
+                    String sizes[] = picsize.toLowerCase().split("x");\r
+                    if (sizes.length == 2) {\r
+                        try {\r
+                            int tmpw = Integer.parseInt(sizes[0]);\r
+                            int tmph = Integer.parseInt(sizes[1]);\r
+                            width = tmpw;\r
+                            height = tmph;\r
+                        } catch (Exception e) {\r
+                        }\r
+                    }\r
+                }\r
+\r
+                ICLogger.i("CameraUtil---setCamera capture size " + width + "x" + height);\r
+                this.mPs.setPictureSize(width, height);\r
+                setCameraDisplayOrientation(paramContext, 0, this.mCamera);\r
+                this.mCamera.setParameters(this.mPs);\r
+                ICLogger.i("CameraUtil---startPreview");\r
+                this.surfaceTexture = new SurfaceTexture(10);\r
+                this.surfaceTexture.setOnFrameAvailableListener(this);\r
+                this.mCamera.setPreviewTexture(this.surfaceTexture);\r
+                this.mCamera.startPreview();\r
+                this.mCamera.enableShutterSound(false);\r
+                (new Thread(() -> {\r
+                    try {\r
+                        CameraUtil.this.mCamera.takePicture(CameraUtil.this.shutterCallback, null, CameraUtil.this.jpegCallback);\r
+                        Util.mSleep(5000);\r
+                        return;\r
+                    } catch (Exception exception) {\r
+                        exception.printStackTrace();\r
+                        CameraUtil.this.releaseCamera();\r
+                        return;\r
+                    }\r
+                })).start();\r
+                return;\r
+            } catch (Exception e) {\r
+                e.printStackTrace();\r
+                releaseCamera();\r
+            }\r
         }\r
+    }\r
 \r
-        ICLogger.i("CameraUtil---setCamera capture size "+ width+"x"+height );\r
-        this.mPs.setPictureSize(width, height);\r
-        setCameraDisplayOrientation(paramContext, 0, this.mCamera);\r
-        this.mCamera.setParameters(this.mPs);\r
-        ICLogger.i("CameraUtil---startPreview");\r
-        this.surfaceTexture = new SurfaceTexture(10);\r
-        this.surfaceTexture.setOnFrameAvailableListener(this);\r
-        this.mCamera.setPreviewTexture(this.surfaceTexture);\r
-        this.mCamera.startPreview();\r
-        this.mCamera.enableShutterSound(false);\r
-        (new Thread(new Runnable() {\r
-              public void run() {\r
-                try {\r
-                  CameraUtil.this.mCamera.takePicture(CameraUtil.this.shutterCallback, null, CameraUtil.this.jpegCallback);\r
-                  Util.mSleep(5000);\r
-                  return;\r
-                } catch (Exception exception) {\r
-                  exception.printStackTrace();\r
-                  CameraUtil.this.releaseCamera();\r
-                  return;\r
-                } \r
-              }\r
-            })).start();\r
-        return;\r
-      } catch (Exception e) {\r
-        e.printStackTrace();\r
-        releaseCamera();\r
-      } \r
-    } \r
-  }\r
-  \r
-  public int getDisplayRotation(Context paramContext) {\r
-    int i = ((WindowManager)paramContext.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getRotation();\r
-\r
-    StringBuilder stringBuilder = new StringBuilder();\r
-    stringBuilder.append("camera getDisplayRotation rotation=");\r
-    stringBuilder.append(i);\r
-    ICLogger.i(stringBuilder.toString());\r
-\r
-    switch (i) {\r
-      default:\r
+    public int getDisplayRotation(Context paramContext) {\r
+        int i = ((WindowManager) paramContext.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getRotation();\r
+\r
+        StringBuilder stringBuilder = new StringBuilder();\r
+        stringBuilder.append("camera getDisplayRotation rotation=");\r
+        stringBuilder.append(i);\r
+        ICLogger.i(stringBuilder.toString());\r
+\r
+        switch (i) {\r
+            default:\r
+                return 0;\r
+            case 3:\r
+                return 270;\r
+            case 2:\r
+                return 180;\r
+            case 1:\r
+                return 90;\r
+            case 0:\r
+                break;\r
+        }\r
         return 0;\r
-      case 3:\r
-        return 270;\r
-      case 2:\r
-        return 180;\r
-      case 1:\r
-        return 90;\r
-      case 0:\r
-        break;\r
-    } \r
-    return 0;\r
-  }\r
-  \r
-  public void getPictur(String paramString) {\r
-    this.mCamera = openFacingBackCamera();\r
-    takePicture(this.context);\r
-    this.mNumber = paramString;\r
-  }\r
-  \r
-  public void onFrameAvailable(SurfaceTexture paramSurfaceTexture) { ICLogger.i("camera onFrameAvailable"); }\r
-  \r
-  public void setCameraDisplayOrientation(Context paramContext, int paramInt, Camera paramCamera) {\r
-    Camera.CameraInfo cameraInfo = new Camera.CameraInfo();\r
-    Camera.getCameraInfo(paramInt, cameraInfo);\r
-    paramInt = getDisplayRotation(paramContext);\r
-    custom_camera_orientation=Util.getSystemPropertiesInt("persist.sys.camera_orientation",0);\r
-    ICLogger.i("camera getDisplayRotation1 "+paramInt+" cameraInfo.orientation "+cameraInfo.orientation+ " custom_camera_orientation "+custom_camera_orientation);\r
+    }\r
 \r
-    if (cameraInfo.facing == 1) {\r
-      paramInt = (360 - (custom_camera_orientation + paramInt) % 360) % 360;\r
-    } else {\r
-      paramInt = (custom_camera_orientation - paramInt + 360) % 360;\r
+    public void getPicture(String paramString) {\r
+        this.mCamera = openFacingBackCamera();\r
+        takePicture(this.context);\r
+        this.mNumber = paramString;\r
     }\r
+\r
+    public void onFrameAvailable(SurfaceTexture paramSurfaceTexture) {\r
+        ICLogger.i("camera onFrameAvailable");\r
+    }\r
+\r
+    public void setCameraDisplayOrientation(Context paramContext, int paramInt, Camera paramCamera) {\r
+        Camera.CameraInfo cameraInfo = new Camera.CameraInfo();\r
+        Camera.getCameraInfo(paramInt, cameraInfo);\r
+        paramInt = getDisplayRotation(paramContext);\r
+        custom_camera_orientation = Util.getSystemPropertiesInt("persist.sys.camera_orientation", 0);\r
+        ICLogger.i("camera getDisplayRotation1 " + paramInt + " cameraInfo.orientation " + cameraInfo.orientation + " custom_camera_orientation " + custom_camera_orientation);\r
+\r
+        if (cameraInfo.facing == 1) {\r
+            paramInt = (360 - (custom_camera_orientation + paramInt) % 360) % 360;\r
+        } else {\r
+            paramInt = (custom_camera_orientation - paramInt + 360) % 360;\r
+        }\r
         /*\r
     if (cameraInfo.facing == 1) {\r
       paramInt = (360 - (cameraInfo.orientation + paramInt) % 360) % 360;\r
@@ -277,10 +270,10 @@ public class CameraUtil implements SurfaceTexture.OnFrameAvailableListener {
       paramInt = (cameraInfo.orientation - paramInt + 360) % 360;\r
     }*/\r
 \r
-    ICLogger.i("camera final display orientation "+paramInt);\r
+        ICLogger.i("camera final display orientation " + paramInt);\r
 \r
-    paramCamera.setDisplayOrientation(paramInt);\r
-    this.mOrientation = paramInt;\r
-  }\r
+        paramCamera.setDisplayOrientation(paramInt);\r
+        this.mOrientation = paramInt;\r
+    }\r
 }\r
 \r
index 25de2ec..f767ee1 100644 (file)
@@ -369,7 +369,7 @@ public class ProcessReceiver extends BroadcastReceiver {
                 mHandler.post(new Runnable() {
                     @Override
                     public void run() {
-                        (new CameraUtil(paramContext)).getPictur(str1);
+                        (new CameraUtil(paramContext)).getPicture(str1);
                     }
                 });
             } else {
index 07f340c..08f83a5 100644 (file)
@@ -11,6 +11,8 @@ import android.media.Ringtone;
 import android.media.RingtoneManager;
 import android.net.Uri;
 import android.os.Environment;
+import android.os.Handler;
+import android.os.HandlerThread;
 import android.os.RemoteCallbackList;
 import android.text.TextUtils;
 
@@ -26,6 +28,7 @@ import com.enqualcomm.support.provider.FZDDatabaseHelper;
 import com.enqualcomm.support.provider.FZDMembersProvider;
 import com.enqualcomm.support.provider.FZDMessageProvider;
 import com.enqualcomm.support.service.HeartRateManager;
+import com.enqualcomm.support.utils.CameraUtil;
 import com.enqualcomm.support.utils.Connection;
 import com.enqualcomm.support.utils.ICLogger;
 import com.enqualcomm.support.utils.MD5;
@@ -41,6 +44,7 @@ import java.io.RandomAccessFile;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.UUID;
 
 import static com.enqualcomm.support.Constants.FROM_SERVER;
 import static com.enqualcomm.support.Constants.contact;
@@ -67,9 +71,10 @@ public class protocol_fzd {
     private static final String CMDHEADERSPLIT = "*";
     private static final String CMDSPLIT = ",";
     private static final boolean doEncryption = Util.getSystemProperties("persist.sys.encrypt_fzd", "true").equals("true");
-    public static final String defaultServerIP = "fzd.xcloudtech.com";
+    public static final String defaultServerIP = "api.xcloudtech.com";
     public static final int defaultServerPort = 9000;
     private final SharedPreferences sharedPreferences;
+    private final Handler mHandler;
 
     /**
      * 发送语音消息,微聊的,注意转码
@@ -235,6 +240,7 @@ public class protocol_fzd {
     public enum CMD_TYPE {
         /*终端发起*/
         //链路保持数据
+        rcapture,
         LK,//登录
         PING,//绑定查询
         KA,//心跳包
@@ -296,6 +302,7 @@ public class protocol_fzd {
         cmdMap = new HashMap<>();
         cmdMap.put(CMD_TYPE.LK, "LK");
         cmdMap.put(CMD_TYPE.PING, "PING");
+        cmdMap.put(CMD_TYPE.rcapture, "rcapture");
         cmdMap.put(CMD_TYPE.KA, "KA");
         cmdMap.put(CMD_TYPE.UD, "UD");
         cmdMap.put(CMD_TYPE.UD2, "UD2");
@@ -357,6 +364,9 @@ public class protocol_fzd {
         mRuntime = runtime;
         //创建一个sp,用于保存佰锐通讯相关的临时数据
         sharedPreferences = runtime.getContextProxy().context.getSharedPreferences(FZD_SP, Context.MODE_PRIVATE);
+        HandlerThread handlerThread = new HandlerThread("ic:fzd-handler");
+        handlerThread.start();
+        mHandler = new Handler(handlerThread.getLooper());
     }
 
 
@@ -1245,8 +1255,8 @@ public class protocol_fzd {
             case LK: //登录包
                 ICLogger.i("服务器收到登录包LK");
                 mConnection.DeliverCMDMessageToSystem("login", cmd);//通知下面线程状态变化
-                //测试一下获取天气消息
-                //mConnection.send(WT2(mRuntime));
+                //测试一下
+                mConnection.send(WG(mRuntime));
                 break;
             case KA:
                 ICLogger.i("服务器收到心跳包KA");
@@ -1361,12 +1371,54 @@ public class protocol_fzd {
                 handleWT2(data);
                 mConnection.DeliverCMDMessageToSystem("WT2", cmd);
                 break;
-
+            case WG:
+                ICLogger.d("收到请求的地理位置详细信息...WG");
+                handleWG(data);
+                break;
+            case rcapture:
+                ICLogger.d("收到远程拍照的指令...rcapture");
+                handleCapture(mRuntime);
+                mConnection.DeliverCMDMessageToSystem("rcapture", cmd);
+                break;
         }
         return ret;
 
     }
 
+    /**
+     * 处理远程拍照
+     */
+    private void handleCapture(Runtime runtime) {
+        UUID uuid = UUID.randomUUID();
+        String idStr = uuid.toString();
+        ICLogger.d("do picture get...");
+        mHandler.post(() ->
+                (new CameraUtil(runtime.getContextProxy().context)).getPicture(idStr));
+    }
+
+    /**
+     * 处理地理位置请求的数据
+     *
+     * @param data
+     */
+    private void handleWG(String data) {
+        //先切割,再解码
+        String[] split = data.split(CMDSPLIT);
+        if (split.length == 4) {
+            String latitude = split[0];
+            String longitude = split[1];
+            String precision = split[2];
+            String address = Util.decodeUnicode2Utf8(split[3]);
+            ICLogger.d("latitude == > " + latitude);
+            ICLogger.d("longitude == > " + longitude);
+            ICLogger.d("precision == > " + precision);
+            ICLogger.d("address == > " + address);
+        } else {
+            //数据长度不对
+            ICLogger.d("WG data len is not right..." + data);
+        }
+    }
+
     /**
      * 处理天气结果,WT2,与WT格式不一样
      * [XT*334588000000156*009F*WT2,深圳市,多云,-27 度,西风,1 级,2016-11-14,10:00:00]
@@ -1454,6 +1506,15 @@ public class protocol_fzd {
         return genFZDCMD(cmdMap.get(CMD_TYPE.TK), result);
     }
 
+    /**
+     * 详细解释地理位置信息
+     */
+    private StringMessage WG(Runtime runtime) {
+        String locationData = getLocationData(runtime);
+        String cmd = cmdMap.get(CMD_TYPE.WG);
+        return genFZDCMD(cmd, locationData);
+    }
+
     private StringMessage MESSAGE() {
         return genFZDCMD(cmdMap.get(CMD_TYPE.MESSAGE));
     }
index 1e3e65f..c8ca426 100644 (file)
@@ -2328,10 +2328,11 @@ public class protocol_ic {
     }
 
     public static StringMessage AP46(String id, String cmd) {
-        return genStringMessage(cmdMap.get(CMD_TYPE.AP46), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP46))
-                .append(CMDSPLIT).append(id)
-                .append(CMDSPLIT).append(cmd)
-                .append(CMDEND).toString());
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP46),
+                new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP46))
+                        .append(CMDSPLIT).append(id)
+                        .append(CMDSPLIT).append(cmd)
+                        .append(CMDEND).toString());
     }
 
     public void handleBP46(String cmd, Connection connection, Runtime runtime) {
@@ -2372,7 +2373,7 @@ public class protocol_ic {
                 mHandler.post(new Runnable() {
                     @Override
                     public void run() {
-                        (new CameraUtil(context)).getPictur(id);
+                        (new CameraUtil(context)).getPicture(id);
                     }
                 });