Browse Source

Magical sensor stuff

Signed-off-by: Mario Danic <mario@lovelyhq.com>
Mario Danic 7 năm trước cách đây
mục cha
commit
fdaa69f489

+ 20 - 1
app/src/main/java/com/nextcloud/talk/activities/CallActivity.java

@@ -777,7 +777,26 @@ public class CallActivity extends AppCompatActivity {
 
 
     @Subscribe(threadMode = ThreadMode.BACKGROUND)
     @Subscribe(threadMode = ThreadMode.BACKGROUND)
     public void onMessageEvent(PeerConnectionEvent peerConnectionEvent) {
     public void onMessageEvent(PeerConnectionEvent peerConnectionEvent) {
-        endPeerConnection(peerConnectionEvent.getSessionId());
+        if (peerConnectionEvent.getPeerConnectionEventType().equals(PeerConnectionEvent.PeerConnectionEventType
+                .CLOSE_PEER)) {
+            endPeerConnection(peerConnectionEvent.getSessionId());
+        } else if (peerConnectionEvent.getPeerConnectionEventType().equals(PeerConnectionEvent
+                .PeerConnectionEventType.SENSOR_FAR) ||
+                peerConnectionEvent.getPeerConnectionEventType().equals(PeerConnectionEvent
+                .PeerConnectionEventType.SENSOR_NEAR)) {
+
+            /*boolean enableVideo = peerConnectionEvent.getPeerConnectionEventType().equals(PeerConnectionEvent
+                    .PeerConnectionEventType.SENSOR_FAR);
+            String videoMessage = "videoOff";
+            if (enableVideo) {
+                videoMessage = "videoOn";
+            }
+
+            localMediaStream.videoTracks.get(0).setEnabled(enableVideo);
+            for (int i = 0; i < magicPeerConnectionWrapperList.size(); i++) {
+                magicPeerConnectionWrapperList.get(i).sendChannelData(new DataChannelMessage(videoMessage));
+            }*/
+        }
     }
     }
 
 
     private void endPeerConnection(String sessionId) {
     private void endPeerConnection(String sessionId) {

+ 9 - 1
app/src/main/java/com/nextcloud/talk/events/PeerConnectionEvent.java

@@ -20,13 +20,21 @@
 
 
 package com.nextcloud.talk.events;
 package com.nextcloud.talk.events;
 
 
+import android.support.annotation.Nullable;
+
 import lombok.Data;
 import lombok.Data;
 
 
 @Data
 @Data
 public class PeerConnectionEvent {
 public class PeerConnectionEvent {
+    public enum PeerConnectionEventType {
+        CLOSE_PEER, SENSOR_FAR, SENSOR_NEAR
+    }
+
+    private final PeerConnectionEventType peerConnectionEventType;
     private final String sessionId;
     private final String sessionId;
 
 
-    public PeerConnectionEvent(String sessionId) {
+    public PeerConnectionEvent(PeerConnectionEventType peerConnectionEventType, @Nullable String sessionId) {
+        this.peerConnectionEventType = peerConnectionEventType;
         this.sessionId = sessionId;
         this.sessionId = sessionId;
     }
     }
 }
 }

+ 12 - 0
app/src/main/java/com/nextcloud/talk/webrtc/MagicAudioManager.java

@@ -41,6 +41,9 @@ import android.media.AudioManager;
 import android.os.Build;
 import android.os.Build;
 import android.util.Log;
 import android.util.Log;
 
 
+import com.nextcloud.talk.events.PeerConnectionEvent;
+
+import org.greenrobot.eventbus.EventBus;
 import org.webrtc.ThreadUtils;
 import org.webrtc.ThreadUtils;
 
 
 import java.util.Collections;
 import java.util.Collections;
@@ -137,6 +140,15 @@ public class MagicAudioManager {
      * e.g. from "NEAR to FAR" or from "FAR to NEAR".
      * e.g. from "NEAR to FAR" or from "FAR to NEAR".
      */
      */
     private void onProximitySensorChangedState() {
     private void onProximitySensorChangedState() {
+
+        if (proximitySensor.sensorReportsNearState()) {
+            EventBus.getDefault().post(new PeerConnectionEvent(PeerConnectionEvent.PeerConnectionEventType
+                    .SENSOR_NEAR, null));
+        } else {
+            EventBus.getDefault().post(new PeerConnectionEvent(PeerConnectionEvent.PeerConnectionEventType
+                    .SENSOR_FAR, null));
+        }
+
         if (!useSpeakerphone.equals(SPEAKERPHONE_AUTO)) {
         if (!useSpeakerphone.equals(SPEAKERPHONE_AUTO)) {
             return;
             return;
         }
         }

+ 3 - 2
app/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionWrapper.java

@@ -111,7 +111,7 @@ public class MagicPeerConnectionWrapper {
         }
         }
     }
     }
 
 
-    private void sendChannelData(DataChannelMessage dataChannelMessage) {
+    public void sendChannelData(DataChannelMessage dataChannelMessage) {
         ByteBuffer buffer = null;
         ByteBuffer buffer = null;
         try {
         try {
             buffer = ByteBuffer.wrap(LoganSquare.serialize(dataChannelMessage).getBytes());
             buffer = ByteBuffer.wrap(LoganSquare.serialize(dataChannelMessage).getBytes());
@@ -184,7 +184,8 @@ public class MagicPeerConnectionWrapper {
         @Override
         @Override
         public void onSignalingChange(PeerConnection.SignalingState signalingState) {
         public void onSignalingChange(PeerConnection.SignalingState signalingState) {
             if (signalingState.equals(PeerConnection.SignalingState.CLOSED)) {
             if (signalingState.equals(PeerConnection.SignalingState.CLOSED)) {
-                EventBus.getDefault().post(new PeerConnectionEvent(sessionId));
+                EventBus.getDefault().post(new PeerConnectionEvent(PeerConnectionEvent.PeerConnectionEventType
+                        .CLOSE_PEER, sessionId));
             }
             }
         }
         }