浏览代码

修改bug

shilin 4 年之前
父节点
当前提交
d7de6ca648

+ 2 - 0
app/src/main/AndroidManifest.xml

@@ -15,6 +15,8 @@
     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
     <uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />
+    <uses-feature android:name="android.hardware.sensor.stepcounter"/>
+    <uses-feature android:name="feature:android.hardware.sensor.stepdetector"/>
 
     <!-- 调用相机权限 -->
     <uses-permission android:name="android.permission.CAMERA" />

文件差异内容过多而无法显示
+ 1 - 1
app/src/main/assets/apps/__UNI__A76C031/www/app-service.js


+ 4 - 91
uniplugin_module/src/main/java/com/sxr/sdk/ble/keepfit/client/GyeeActivity.java

@@ -6,6 +6,10 @@ import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.content.ServiceConnection;
+import android.hardware.Sensor;
+import android.hardware.SensorEvent;
+import android.hardware.SensorEventListener;
+import android.hardware.SensorManager;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.IBinder;
@@ -111,7 +115,6 @@ public class GyeeActivity extends Activity {
 
         startService(reportIntent);
         initProgressDialog();
-        initView();
     }
 
     @Override
@@ -145,29 +148,14 @@ public class GyeeActivity extends Activity {
             if (restBinder != null) {
                 if(restBinder.isBound() == true){
                     if (restBinder.callRemoteIsConnected() == false) {
-//                        phoneNumber.setVisibility(View.GONE);
-//                        btBind.setEnabled(false);
-//                        btUnbind.setEnabled(true);
-
                         btScan.setEnabled(true);
                         btDisconnect.setEnabled(false);
                         llConnect.setVisibility(View.GONE);
                     } else {
-//                        phoneNumber.setVisibility(View.GONE);
-//                        btBind.setEnabled(false);
-//                        btUnbind.setEnabled(true);
                         btScan.setEnabled(false);
                         btDisconnect.setEnabled(true);
                         llConnect.setVisibility(View.VISIBLE);
                     }
-//                }
-//                else if (restBinder.callRemoteIsConnected() == false) {
-//                    phoneNumber.setVisibility(View.VISIBLE);
-//                    btBind.setEnabled(true);
-//                    btUnbind.setEnabled(false);
-//                    btScan.setEnabled(false);
-//                    btDisconnect.setEnabled(false);
-//                    llConnect.setVisibility(View.GONE);
                 }
                 eventBindDeviceService();
             }
@@ -176,7 +164,6 @@ public class GyeeActivity extends Activity {
             restBinder.setScanDeviceHandler(scanDeviceHandler);
             restBinder.setUpdateConnectStateHandler(updateConnectStateHandler);
             restBinder.setDevicesData(devicesData);
-//            restBinder.setMobile(phoneNumberStr);
         }
 
         @Override
@@ -187,44 +174,11 @@ public class GyeeActivity extends Activity {
 
 
     private void initView() {
-//        try {
-//            TelephonyManager tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
-//            //        String deviceid = tm.getDeviceId();//获取智能设备唯一编号
-//            if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_SMS) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_NUMBERS) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
-//                // TODO: Consider calling
-//                //    ActivityCompat#requestPermissions
-//                // here to request the missing permissions, and then overriding
-//                //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
-//                //                                          int[] grantResults)
-//                // to handle the case where the user grants the permission. See the documentation
-//                // for ActivityCompat#requestPermissions for more details.
-//                return;
-//            }
-//            phoneNumberStr = tm.getLine1Number();//获取本机号码
-//            System.out.println(phoneNumberStr);
-//        } catch (Exception ex) {
-//            System.out.println(ex.getMessage());
-//        }
-//
-//        if (phoneNumberStr != null && phoneNumberStr.length() == 11) {
-//            restBinder.setMobile(phoneNumberStr);
-//        } else {
-//            phoneNumber.setVisibility(View.VISIBLE);
-//        }
     }
 
     private boolean bColor = false;
     private SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss", Locale.getDefault());
 
-//    @Override
-//    public boolean onKeyDown(int keyCode, KeyEvent event) {
-//        if (keyCode == KeyEvent.KEYCODE_BACK) {
-//            Process.killProcess(Process.myPid());
-//            finish();
-//        }
-//        return super.onKeyDown(keyCode, event);
-//    }
-
     @Override
     protected void onPause() {
         Log.i(TAG, "onPause");
@@ -250,17 +204,6 @@ public class GyeeActivity extends Activity {
      */
 //    @OnClick(R2.id.bind)
     void eventBindDeviceService() {
-        //获取手机号码
-//        if (phoneNumber.getVisibility() == View.VISIBLE) {
-//            phoneNumberStr = phoneNumber.getText().toString().trim();
-//            if (phoneNumberStr.length() != 11) {
-//                Toast.makeText(this, "手机号格式错误", Toast.LENGTH_LONG).show();
-//                return;
-//            } else {
-
-//                phoneNumber.setVisibility(View.GONE);
-////            }
-////        }
         restBinder.setMobile(userId);
         //绑定手环服务
         restBinder.bindBraceletService();
@@ -269,12 +212,8 @@ public class GyeeActivity extends Activity {
 //    @OnClick(R2.id.unbind)
     void eventUnBindDeviceService() {
         if (restBinder.isBound()) {
-//            btBind.setEnabled(true);
-//            btUnbind.setEnabled(false);
-//            btScan.setEnabled(false);
             btDisconnect.setEnabled(false);
             llConnect.setVisibility(View.GONE);
-//            phoneNumber.setVisibility(View.VISIBLE);
             //解绑手环服务
             restBinder.unBindBraceletService();
             eventBindDeviceService();
@@ -462,19 +401,14 @@ public class GyeeActivity extends Activity {
             int state = data.getInt("state");
 
             if (state == 2) {
-//                btBind.setEnabled(false);
-//                btUnbind.setEnabled(true);
                 btScan.setEnabled(false);
                 btDisconnect.setEnabled(true);
                 llConnect.setVisibility(View.VISIBLE);
                 progressDialog.dismiss();
             } else {
-//                btBind.setEnabled(false);
-//                btUnbind.setEnabled(true);
                 btScan.setEnabled(false);
                 btDisconnect.setEnabled(false);
                 llConnect.setVisibility(View.GONE);
-//                progressDialog.dismiss();
             }
 
             return true;
@@ -509,25 +443,18 @@ public class GyeeActivity extends Activity {
             int what = msg.what;
 
             if (what == MSG_CODE_REMOTE_CONNECTED_BRACELET_IS_SUCCESS) {
-//                btBind.setEnabled(false);
-//                btUnbind.setEnabled(true);
                 btScan.setEnabled(true);
                 btDisconnect.setEnabled(true);
                 llConnect.setVisibility(View.GONE);
             } else if (what == MSG_CODE_REMOTE_CONNECTED_BRACELET_IS_FAILED) {
-//                btBind.setEnabled(false);
-//                btUnbind.setEnabled(true);
                 btScan.setEnabled(true);
                 btDisconnect.setEnabled(false);
                 llConnect.setVisibility(View.VISIBLE);
             } else if (what == MSG_CODE_DISCONNECTED_REACELET) {
-//                btBind.setEnabled(true);
-//                btUnbind.setEnabled(false);
                 btScan.setEnabled(false);
                 btDisconnect.setEnabled(false);
                 llConnect.setVisibility(View.GONE);
             } else {
-                //super.handleMessage(msg);
                 Bundle data = msg.getData();
                 String result = data.getString("result");
                 nearbyListAdapter.notifyDataSetChanged();
@@ -559,20 +486,6 @@ public class GyeeActivity extends Activity {
         timer.schedule(task,60*1000,60*1000);
     }
 
-    /**
-     * 控制测量频率
-     */
-    private void timerMeasure(){
-//        TimerTask measure = new TimerTask() {
-//            @Override
-//            public void run() {
-//                Log.e("=======measure", "测量启动");
-//                restBinder.callRemoteOpenBlood(true);
-//            }
-//        };
-//        timer.schedule(measure,0,5 * 60*1000);
-    }
-
 //    //申请两个权限,录音和文件读写
 //    //1、首先声明一个数组permissions,将需要的权限都放在里面
 //    String[] permissions = new String[]{

+ 10 - 7
uniplugin_module/src/main/java/com/sxr/sdk/ble/keepfit/client/RestService.java

@@ -1,7 +1,11 @@
 package com.sxr.sdk.ble.keepfit.client;
 
 
+import android.os.Handler;
+import android.util.Log;
+
 import com.sxr.sdk.ble.keepfit.bean.ReportData;
+import com.sxr.sdk.ble.keepfit.service.ReportService;
 
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
@@ -47,18 +51,17 @@ import java.util.List;
 
 public class RestService {
 
-    public static String baseURL = "http://192.168.1.107:8087";
-
-    public static void  Post(ReportData reportData) {
+    public static String baseURL = "http://10.155.32.4:8087";
 
+    public static void  Post(ReportData reportData, Handler handler) {
+        Log.e("=========111", "发送 http 请求");
         if (reportData.getPld() == null || reportData.getPld().length() < 1 ||
-                reportData.getPld() == null || reportData.getPld().length() < 1 ||
                 reportData.getSsxy() == null || reportData.getSsxy().length() < 1 ||
                 reportData.getSzxy() == null || reportData.getSzxy().length() < 1 ||
                 reportData.getXtpl() == null || reportData.getXtpl().length() < 1 ||
                 reportData.getXynd() == null || reportData.getXynd().length() < 1 )
             return;
-
+        Log.e("=========222", "发送 http 请求成功");
         String url = baseURL + "/shbruser/insertBraceletUserInfo";
         try
         {
@@ -88,12 +91,12 @@ public class RestService {
             //showResponseResult(response);
 
             System.out.println(response.getStatusLine());
-
-
         }
         catch (Exception e)
         {
             e.printStackTrace();
+        } finally {
+            handler.sendEmptyMessage(ReportService.MSG_CODE_HTTP_IS_SUCCESS);
         }
     }
 

+ 70 - 56
uniplugin_module/src/main/java/com/sxr/sdk/ble/keepfit/service/ReportService.java

@@ -13,6 +13,10 @@ import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.ServiceConnection;
+import android.hardware.Sensor;
+import android.hardware.SensorEvent;
+import android.hardware.SensorEventListener;
+import android.hardware.SensorManager;
 import android.location.Location;
 import android.location.LocationManager;
 import android.os.Binder;
@@ -44,33 +48,6 @@ import java.util.Locale;
 import java.util.concurrent.ScheduledThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 
-import retrofit2.http.POST;
-
-
-//接口地址:
-//
-//        192.168.1.107:8087/shbruser/insertBraceletUserInfo
-//        请求方式:post
-//
-//        String mobile,    /**手机号*/
-//        double pld,      /**疲劳度*/
-//        double ssxy,   /**收缩血压*/
-//        double szxy;      /**舒张血压*/
-//        double xtpl;       /**心跳频率*/
-//        double xynd;     /**血压*/
-//        long bs;      /**步数*/
-//        double lng;  /**经度*/
-//        double lat; /**纬度*/
-//
-//
-//        {
-//        "success": true,
-//        "status": 20000,
-//        "count": 1,
-//        "msg": "上传数据成功",
-//        "data": "BraceletuserVo(pld=38.9, ssxy=180.8, szxy=120.4, xtpl=85.0, xynd=140.3, bs=20000, lng=38.5, lat=106.78)"
-//        }
-
 public class ReportService extends Service {
 
     /**
@@ -80,6 +57,11 @@ public class ReportService extends Service {
     private String pathLog = "/jyClient/log/";
 
     /**
+     * 血压、心跳等数据写入成功
+     */
+    public static final int MSG_CODE_HTTP_IS_SUCCESS = 1001;
+
+    /**
      * binder实例
      */
     private RestBinder restBinder = null;
@@ -110,39 +92,35 @@ public class ReportService extends Service {
      */
     private ScheduledThreadPoolExecutor executor;
 
+    private int mStepDetector = 0;  // 自应用运行以来STEP_DETECTOR检测到的步数
+    private SensorManager mSensorManager;
+    private MySensorEventListener mListener;
 
     @Override
     public void onCreate() {
         //TODO 在单纯提高优先级时,服务在关闭APP并关屏的情况下走了30分钟
         super.onCreate();
         initLocationManager();
-
         //TODO 起一个ScheduledThreadPoolExecutor线程池,无延迟、1分钟执行1次来提高service的优先级,未必好用,聊胜于无
         executor = new ScheduledThreadPoolExecutor(1);
         executor.scheduleAtFixedRate(() -> {
             startForeground(NOTICE_ID, new Notification());
-            //TODO 提交改在这里
+            ReportData report = new ReportData();
             if (locationManager != null && locationProvider != null && locationProvider != "") {
                 @SuppressLint("MissingPermission")
                 Location location = locationManager.getLastKnownLocation(locationProvider);
 
                 if (location != null) {
-                    reportData.setLat(location.getLatitude() + "");
-                    reportData.setLng(location.getLongitude() + "");
+                    report.setLat(location.getLatitude() + "");
+                    report.setLng(location.getLongitude() + "");
                 }
+                report.setBs(mStepDetector + "");
             }
-
-//            if (mService != null) {
-//                try {
-//                    int step = mService.getCurSportData();
-//                    if (step > 0)
-//                        reportData.setBs(step + "");
-//                } catch (RemoteException e) {
-//                    e.printStackTrace();
-//                }
-//            }
-            GPSPost();
+            GPSPost(report);
         }, 0, 5, TimeUnit.SECONDS);
+        executor.scheduleAtFixedRate(() -> {
+            Post();
+        }, 0, 10, TimeUnit.SECONDS);
         startAlarmService();
     }
 
@@ -156,10 +134,12 @@ public class ReportService extends Service {
 
         if (alarmManager != null)
             alarmManager.cancel(pendingIntent);//取消定时器
+
+        mSensorManager.unregisterListener(mListener);
     }
 
     /**
-     * 初始化GPS定位服务
+     * 初始化GPS定位服务和计步器服务
      */
     private void initLocationManager() {
         try {
@@ -178,20 +158,45 @@ public class ReportService extends Service {
         } catch (Exception ex) {
             System.out.println(ex.getMessage());
         }
+
+        mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
+        mListener = new MySensorEventListener();
+        mSensorManager.registerListener(mListener, mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR),
+                SensorManager.SENSOR_DELAY_NORMAL);
+        mSensorManager.registerListener(mListener, mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER),
+                SensorManager.SENSOR_DELAY_NORMAL);
     }
 
+    Handler handler = new Handler(new Handler.Callback() {
+        @Override
+        public boolean handleMessage(Message msg) {
+            if (msg.what == MSG_CODE_HTTP_IS_SUCCESS){
+                if (restBinder != null){
+                    Log.e("=========", "回调关闭");
+                    restBinder.callRemoteOpenBlood(false);
+                    reportData.setPld(null);
+                    reportData.setSsxy(null);
+                    reportData.setSzxy(null);
+                    reportData.setXtpl(null);
+                    reportData.setXynd(null);
+                }
+            }
+            return true;
+        }
+    });
+
     /**
      * 采集手环数据
      */
-    public static void Post() {
-        RestService.Post(reportData);
+    public void Post() {
+        RestService.Post(reportData, handler);
     }
 
     /**
      * 采集手机数据
      */
-    public static void GPSPost() {
-        RestService.GPSPost(reportData);
+    public void GPSPost(ReportData report) {
+        RestService.GPSPost(report);
     }
 
     @Override
@@ -458,10 +463,9 @@ public class ReportService extends Service {
 
         public void callRemoteOpenBlood(boolean enable) {
             Log.i(TAG, "callRemoteGetMutipleData");
-            int result;
             if (mService != null) {
                 try {
-                    result = mService.setBloodPressureMode(enable);
+                    mService.setBloodPressureMode(enable);
                 } catch (RemoteException e) {
                     e.printStackTrace();
                     shotToast("Remote call error!");
@@ -750,7 +754,6 @@ public class ReportService extends Service {
 
         @Override
         public void onReceiveSensorData(int arg0, int arg1, int arg2, int arg3, int arg4) throws RemoteException {
-//            showToast("======onReceiveSensorData", "result:" + arg0 + " , " + arg1 + " , " + arg2 + " , " + arg3 + " , " + arg4);
             Log.e("=========", "result:" + arg0 + " , " + arg1 + " , " + arg2 + " , " + arg3 + " , " + arg4);
             // 采集到数据后写入数据库且关闭测量
             if (arg0 > 0 && arg1 > 0 && arg2 > 0 && arg3 > 0 && arg4 > 0){
@@ -759,12 +762,6 @@ public class ReportService extends Service {
                 reportData.setSsxy(arg2 + "");
                 reportData.setXynd(arg3 + "");
                 reportData.setPld(arg4 + "");
-
-                Post();
-                if (restBinder != null){
-                    Log.e("=========", "回调关闭");
-                    restBinder.callRemoteOpenBlood(false);
-                }
             }
         }
 
@@ -916,4 +913,21 @@ public class ReportService extends Service {
             toast.show();
         }
     }
+
+
+    class MySensorEventListener implements SensorEventListener {
+        @Override
+        public void onSensorChanged(SensorEvent event) {
+            if (event.sensor.getType() == Sensor.TYPE_STEP_DETECTOR) {
+                if (event.values[0] == 1.0f) {
+                    mStepDetector++;
+                    Log.i("==========步数读取: ", mStepDetector + "");
+                }
+            }
+        }
+
+        @Override
+        public void onAccuracyChanged(Sensor sensor, int accuracy) {
+        }
+    }
 }