From fdaa69f489502b4d3bb2abd5dd03882367428087 Mon Sep 17 00:00:00 2001 From: Mario Danic Date: Sat, 9 Dec 2017 20:11:51 +0100 Subject: [PATCH] Magical sensor stuff Signed-off-by: Mario Danic --- .../talk/activities/CallActivity.java | 21 ++++++++++++++++++- .../talk/events/PeerConnectionEvent.java | 10 ++++++++- .../talk/webrtc/MagicAudioManager.java | 12 +++++++++++ .../webrtc/MagicPeerConnectionWrapper.java | 5 +++-- 4 files changed, 44 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java index 276008583..9b3351f73 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java +++ b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java @@ -777,7 +777,26 @@ public class CallActivity extends AppCompatActivity { @Subscribe(threadMode = ThreadMode.BACKGROUND) 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) { diff --git a/app/src/main/java/com/nextcloud/talk/events/PeerConnectionEvent.java b/app/src/main/java/com/nextcloud/talk/events/PeerConnectionEvent.java index d0d3f2fbc..dc84e5ab6 100644 --- a/app/src/main/java/com/nextcloud/talk/events/PeerConnectionEvent.java +++ b/app/src/main/java/com/nextcloud/talk/events/PeerConnectionEvent.java @@ -20,13 +20,21 @@ package com.nextcloud.talk.events; +import android.support.annotation.Nullable; + import lombok.Data; @Data public class PeerConnectionEvent { + public enum PeerConnectionEventType { + CLOSE_PEER, SENSOR_FAR, SENSOR_NEAR + } + + private final PeerConnectionEventType peerConnectionEventType; private final String sessionId; - public PeerConnectionEvent(String sessionId) { + public PeerConnectionEvent(PeerConnectionEventType peerConnectionEventType, @Nullable String sessionId) { + this.peerConnectionEventType = peerConnectionEventType; this.sessionId = sessionId; } } diff --git a/app/src/main/java/com/nextcloud/talk/webrtc/MagicAudioManager.java b/app/src/main/java/com/nextcloud/talk/webrtc/MagicAudioManager.java index fafada143..e4d069dcc 100644 --- a/app/src/main/java/com/nextcloud/talk/webrtc/MagicAudioManager.java +++ b/app/src/main/java/com/nextcloud/talk/webrtc/MagicAudioManager.java @@ -41,6 +41,9 @@ import android.media.AudioManager; import android.os.Build; import android.util.Log; +import com.nextcloud.talk.events.PeerConnectionEvent; + +import org.greenrobot.eventbus.EventBus; import org.webrtc.ThreadUtils; import java.util.Collections; @@ -137,6 +140,15 @@ public class MagicAudioManager { * e.g. from "NEAR to FAR" or from "FAR to NEAR". */ 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)) { return; } diff --git a/app/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionWrapper.java b/app/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionWrapper.java index cd5696cf2..16ae142f1 100644 --- a/app/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionWrapper.java +++ b/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; try { buffer = ByteBuffer.wrap(LoganSquare.serialize(dataChannelMessage).getBytes()); @@ -184,7 +184,8 @@ public class MagicPeerConnectionWrapper { @Override public void onSignalingChange(PeerConnection.SignalingState signalingState) { if (signalingState.equals(PeerConnection.SignalingState.CLOSED)) { - EventBus.getDefault().post(new PeerConnectionEvent(sessionId)); + EventBus.getDefault().post(new PeerConnectionEvent(PeerConnectionEvent.PeerConnectionEventType + .CLOSE_PEER, sessionId)); } }