Browse Source

1.remove permission request
2.Socket client 2 client

zzf 1 year ago
parent
commit
edeb80e344

+ 3 - 3
sample/src/main/java/com/yanzhenjie/andserver/sample/MainActivity.java

@@ -67,7 +67,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
     private LoadingDialog mDialog;
     private String mRootUrl;
     public static BluetoothAdapter mBluetoothAdapter;
-    SocketServer socketServer;
+    public static SocketServer socketServer;
 
     public static Context context;
     public static Application application;
@@ -75,7 +75,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+        /*if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
             int fineLocation= checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION);
             Log.d("permission","FINE=========="+fineLocation);
             int internetLocation= checkSelfPermission(Manifest.permission.INTERNET);
@@ -86,7 +86,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
                     Manifest.permission.ACCESS_FINE_LOCATION,
                     Manifest.permission.ACCESS_COARSE_LOCATION}, 100);
 
-        }
+        }*/
         setContentView(R.layout.activity_main);
         Toolbar toolbar = findViewById(R.id.toolbar);
         setSupportActionBar(toolbar);

+ 5 - 6
sample/src/main/java/com/yanzhenjie/andserver/sample/controller/CommonController.java

@@ -35,6 +35,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.time.DateFormatUtils;
 import org.slf4j.helpers.NOPLogger;
 
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.concurrent.TimeUnit;
@@ -215,10 +216,7 @@ public class CommonController extends BaseController{
         Log.d(TAG,"mBluetoothAdapter---"+mBluetoothAdapter);
         Log.i(TAG,"开始扫描");
         mBluetoothAdapter.startLeScan(mLeScanCallback);
-        Observable.interval(1,TimeUnit.SECONDS).take(SCAN_PERIOD).observeOn(AndroidSchedulers.mainThread()).subscribe(aLong ->{
-            Log.d(TAG,aLong.toString()+"scanning...");
-
-        });
+        Observable.interval(1,TimeUnit.SECONDS).take(SCAN_PERIOD).observeOn(AndroidSchedulers.mainThread()).subscribe(aLong -> Log.d(TAG,aLong.toString()+"scanning..."));
         while (scanStatus.get()){
             Thread.sleep(1000);
             Log.d(TAG, scanStatus+"---"+System.currentTimeMillis()+"----");
@@ -377,7 +375,6 @@ public class CommonController extends BaseController{
                 }
             };
             // mock id, key,use yours
-            MegaBleBuilder builder = new MegaBleBuilder();
             try{
                 megaBleClient = new MegaBleBuilder()
                         .withSecretId("D4CE5DD515F81247")
@@ -385,6 +382,7 @@ public class CommonController extends BaseController{
                         .withContext(MainActivity.context)
                         .withCallback(megaBleCallback)
                         .build();
+
             }catch (Exception e ){
                 e.printStackTrace();
             }
@@ -467,7 +465,8 @@ public class CommonController extends BaseController{
                 public void onReceivedOriginalData(byte[] data) {//原始心电数据
                     //发送数据至前端页面,则不需要解析数据
                     //parseRealTimeData(data);
-
+                    Log.d(TAG, "ECG--data="+ Arrays.toString(data));
+                    MainActivity.socketServer.sendMessage("/PC", Arrays.toString(data));
                 }
             });
 

+ 0 - 70
sample/src/main/java/com/yanzhenjie/andserver/sample/model/EcgUserInfo.java

@@ -1,70 +0,0 @@
-package com.yanzhenjie.andserver.sample.model;
-
-import android.text.TextUtils;
-
-import com.yuanxu.ecg.cmd.BindUserIdCmd;
-
-import java.io.Serializable;
-
-public class EcgUserInfo implements Serializable {
-
-    private String name;//姓名
-    private boolean gender;//是否为女性
-    private int age;//年龄
-    private int height;//身高(cm)
-    private int weight;//体重(kg)
-
-    public EcgUserInfo(String name, boolean gender, int age, int height, int weight) {
-        if (TextUtils.isEmpty(name)) {
-            throw new IllegalArgumentException("name is null");
-        }
-        if (!BindUserIdCmd.isValidNameBytesLength(name)) {
-            throw new IllegalArgumentException("the length of this name(" + name + ") is greater than max byte length(" + BindUserIdCmd.MAX_NAME_BYTE_LENGTH + ")");
-        }
-        this.name = name;
-        this.gender = gender;
-        this.age = age;
-        this.height = height;
-        this.weight = weight;
-    }
-
-    public String getName() {
-        return name == null ? "" : name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public boolean getGender() {
-        return gender;
-    }
-
-    public void setGender(boolean female) {
-        this.gender = female;
-    }
-
-    public int getAge() {
-        return age;
-    }
-
-    public void setAge(int age) {
-        this.age = age;
-    }
-
-    public int getHeight() {
-        return height;
-    }
-
-    public void setHeight(int height) {
-        this.height = height;
-    }
-
-    public int getWeight() {
-        return weight;
-    }
-
-    public void setWeight(int weight) {
-        this.weight = weight;
-    }
-}

+ 36 - 1
sample/src/main/java/com/yanzhenjie/andserver/sample/websocket/SocketServer.java

@@ -1,7 +1,11 @@
 package com.yanzhenjie.andserver.sample.websocket;
 
+import android.os.Build;
+import android.util.Log;
+
 import com.alibaba.fastjson.JSONObject;
 import com.yanzhenjie.andserver.http.session.Session;
+import com.yanzhenjie.andserver.sample.util.Result;
 
 
 import org.java_websocket.WebSocket;
@@ -9,6 +13,7 @@ import org.java_websocket.handshake.ClientHandshake;
 import org.java_websocket.server.WebSocketServer;
 
 import java.io.IOException;
+import java.util.Objects;
 import java.util.Timer;
 import java.util.TimerTask;
 import java.util.concurrent.ConcurrentHashMap;
@@ -23,6 +28,7 @@ import org.java_websocket.server.WebSocketServer;
 
 public class SocketServer extends WebSocketServer {
 
+    private final String TAG = "SocketServer";
     private static  ConcurrentHashMap<String,WebSocket> webSocketMap = new ConcurrentHashMap<>();
 //    private  static SocketServer instance = null;
     public  SocketServer(InetSocketAddress address) {
@@ -43,6 +49,11 @@ public class SocketServer extends WebSocketServer {
     public void onOpen(WebSocket conn, ClientHandshake handshake) {
         conn.send("Welcome to the server!"); //This method sends a message to the new client
         webSocketMap.put(handshake.getResourceDescriptor(), conn);
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+            webSocketMap.keySet().forEach(key ->{
+                Log.d(TAG, key+"="+key+"&&&&&&&&&&&&&value="+webSocketMap.get(key));
+            });
+        }
         System.out.println("open----socketMap.size="+webSocketMap.size());
         broadcast( "new connection: " + handshake.getResourceDescriptor() ); //This method sends a message to all clients connected
         System.out.println("new connection to " + conn.getRemoteSocketAddress());
@@ -56,11 +67,22 @@ public class SocketServer extends WebSocketServer {
     @Override
     public void onMessage(WebSocket conn, String message) {
         System.out.println("received message from "	+ conn.getRemoteSocketAddress() + ": " + message);
+        JSONObject jsonObject = JSONObject.parseObject(message.toString());
+        String toHandshake = jsonObject.getString("toHandshake");
+        if (!toHandshake.startsWith("/")){
+            toHandshake = "/"+toHandshake;
+        }
+        WebSocket webSocket = webSocketMap.get(toHandshake);
+        Log.d(TAG, "message===="+jsonObject.getString("message"));
+        webSocket.send(jsonObject.getString("message"));
     }
 
     @Override
     public void onMessage( WebSocket conn, ByteBuffer message ) {
         System.out.println("received ByteBuffer from "	+ conn.getRemoteSocketAddress());
+
+
+//        Objects.requireNonNull(webSocketMap.get(toHandshake)).send(jsonObject.getString("message"));
     }
 
     @Override
@@ -73,8 +95,21 @@ public class SocketServer extends WebSocketServer {
         System.out.println("server started successfully");
     }
 
-    public  void sendMessage(){
+    public JSONObject sendMessage(String handshake, String message){
+        JSONObject resultJson = new JSONObject();
         System.out.println("send Message invoked : socketMap.size="+ webSocketMap.size());
+        Log.d(TAG, "send message invoke :handshake = "+handshake+" and message = " +message);
+        WebSocket webSocket = webSocketMap.get(handshake);
+        if(webSocket == null){
+            Log.d(TAG, "Target socket client "+handshake +" is not exists or offline ");
+            resultJson.put("result", false);
+            resultJson.put("message", "Target socket client "+handshake +" is not exists or offline ");
+        }else {
+            webSocket.send(message);
+            resultJson.put("result", true);
+            resultJson.put("message", "success");
+        }
+        return resultJson;
     }