Commit graph

190 commits

Author SHA1 Message Date
Andy Scherzinger
deac2059ff
improve lint/detekt
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2022-04-08 09:21:11 +02:00
Marcel Hibbe
49fd2640bf
rename method
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-03-30 12:08:54 +02:00
Tim Krüger
346089cecf
Use Transceivers instead of constraints to discard received video tracks
After the migration from WebRTC from plan b to unified plan in commit 86f20dc
the media constraints are ignored for creating an answer on a peer
connection:

> Offer to Receive Options/Constraints
>
> These constraints are passed to PeerConnection’s methods for creating SDP to
> add placeholder media sections in case a sending track would not have already
> created one.
>
> With Unified Plan semantics, these are still supported for creating offers
> using a backwards compatibility shim (basically creating an RtpTransceiver if
> one doesn’t exist). It is recommended to switch to the RtpTransceiver API
> (example below). _They are no longer supported when creating answers._
>
> [1]

Because of that now all transceivers of type VIDEO will be stopped if it
is only an audio call. After stopping the transceivers the status for the
video tracks will be automatically set to ENDED.

In the 'ParticipantsAdapter' it will be checked if the video tracks are
ENDED. In that case the user avatar will be shown like before.

Resolves: #1852
See: #1773, commit 86f20dc, [1]

[1] https://docs.google.com/document/d/1PPHWV6108znP1tk_rkCnyagH9FK205hHeE9k5mhUzOg/edit#heading=h.9dcmkavg608r

Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-03-30 12:08:54 +02:00
Tim Krüger
f08a9ef463
Rename MagicPeerConnectionWrapper to PeerConnectionWrapper
Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-02-23 12:21:41 +01:00
Tim Krüger
0ea29ee0cd
Remove unused fields remoteVideoOn and remoteAudioOn
Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-02-23 12:21:41 +01:00
Tim Krüger
844cf09a2b
Rename remoteMediaStream to remoteStream
Align naming to the names used in WebRTC example code and documentation.

Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-02-23 11:36:42 +01:00
Tim Krüger
5580c15ea6
Rename magicDataChannel to dataChannel
There is no 🧙 in a data channel.

Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-02-23 11:36:42 +01:00
Tim Krüger
272ea7e846
Rename sdpConstraints to mediaConstraints
SDP is a native detail of the native WebRTC library.

Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-02-23 11:36:42 +01:00
Tim Krüger
890dda0c68
Remove unused method 'restartIce'
The method 'restartIce' is dead code since years. So this and related
fields are removed.

Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-02-23 11:36:42 +01:00
Tim Krüger
557602d1bf
Make fields final
Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-02-23 11:36:42 +01:00
Tim Krüger
5e778c94fb
Make use of Objects#requireNonNull to check for null references
Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-02-23 11:36:41 +01:00
Tim Krüger
5b95b5675d
Rename localMediaStream to localStream
Align naming to the names used in WebRTC example code and documentation.

Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-02-23 11:36:41 +01:00
Tim Krüger
86f20dcfd3
Migrate WebRTC from plan b to unified plan
The in 'MagicPeerConnectionWrapper#removePeerConnection' used method
'PeerConnection#removeStream' was not longer available in the unified
plan. So to make sure that the local stream is disposed, it will now be
done in 'CallActivity#hangup'.

Resolves: #1773
See: [1]

[1] https://webrtc.org/getting-started/unified-plan-transition-guide
Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-02-23 11:36:41 +01:00
Tim Krüger
bad5b5f9bc
Update WebRTC library
The  updated libwebrtc will be load from the talk-clients-webrtc repository [1]
and not from a dependency repository. The 'lint' task must now depend on the
'perBuild' task to make sure that the WebRTC library is downloaded from the
configured URL.

To get the new version to work a change is needed because of this announcement:

> Google is planning to transition Chrome’s WebRTC implementation from the
> current SDP format (called “Plan B”) to a standards conformant format
> (“Unified Plan”, draft-ietf-rtcweb-jsep) over the next couple of quarters.
>
> - [2]

Currently we are in phase 4 of the transition [3]. So actually 'Plan B'
must be used to avoid bigger changes to our code base at this time. But
'Plan B' is depracted and will be removed in phase 5 of the transition
[4].

Resolves: #1773
See:
  - [1] https://github.com/nextcloud-releases/talk-clients-webrtc
  - [2] https://webrtc.org/getting-started/unified-plan-transition-guide
  - [3] https://webrtc.org/getting-started/unified-plan-transition-guide#phase_4_make_%E2%80%9Cplan_b%E2%80%9D_throw
  - [4] https://webrtc.org/getting-started/unified-plan-transition-guide#phase_5_remove_%E2%80%9Cplan_b%E2%80%9D

Signed-off-by: Tim Krüger <t@timkrueger.me>
2022-02-23 11:34:30 +01:00
Marcel Hibbe
7f0980e6d2
format code + fix klint/findbugs warnings
remove hardcodings

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>

remove hardcodings

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-02-07 14:27:38 +01:00
Marcel Hibbe
a34eb89570
modify behaviour of proximity sensor
use proximity sensor only if it is a voiceOnly call and userSelectedAudioDevice was SPEAKER_PHONE

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-02-07 13:09:41 +01:00
Marcel Hibbe
338f06dda1
update UI if audio output device changed
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-02-07 13:09:40 +01:00
Marcel Hibbe
9c0fa9acc2
select audio device (WIP)
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2022-02-07 13:09:39 +01:00
Tim Krüger
c26d6afddb
Remove implied default locale in case conversion
Signed-off-by: Tim Krüger <t@timkrueger.me>
2021-12-21 12:03:57 +01:00
Marcel Hibbe
8381e0b541
add logging for calls
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2021-11-22 22:41:17 +01:00
Andy Scherzinger
56d57c0b37
improve code check score
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2021-11-11 22:10:45 +01:00
Tim Krüger
e1d9afa1a2
Suppress Lint for wrong constant of AudioManager modes
Signed-off-by: Tim Krüger <t@timkrueger.me>
2021-09-15 16:17:32 +02:00
Tim Krüger
99f5a64c50
Suppress Lint for wrong constant of AudioManager.GET_DEVICES_ALL
Up to now AudioManager.GET_DEVICES_ALL is a valid value. Because of that
the suppress annotation were added.

See: https://developer.android.com/reference/android/media/AudioManager#getDevices(int)

Signed-off-by: Tim Krüger <t@timkrueger.me>
2021-09-15 15:47:46 +02:00
Andy Scherzinger
febaaf8ea7
Revert "improve code check score"
This reverts commit 6415f163bd.

Revert "use context compat to load resources"

This reverts commit 3742c4ed99.

Revert "Adding upload from camera action"

This reverts commit 01a6675795.
2021-08-23 08:54:33 +02:00
Andy Scherzinger
6415f163bd
improve code check score
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2021-08-21 18:28:55 +02:00
Marcel Hibbe
bebf716da7
temporarily disable logging to file
see issue
https://github.com/nextcloud/talk-android/issues/1376

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2021-06-30 14:24:53 +02:00
Joas Schilling
de6683815a
Add support for signaling v3
Signed-off-by: Joas Schilling <coding@schilljs.com>
2021-05-20 11:26:40 +02:00
Andy Scherzinger
0bc3be1b6e
codacy: Avoid unused imports
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2021-05-17 13:35:34 +02:00
Joas Schilling
97117eb90c
Use the correct signaling information and user+ticket for "Join via link" as well
Signed-off-by: Joas Schilling <coding@schilljs.com>
2021-05-12 16:21:55 +02:00
Joas Schilling
79be753493
Fix some more getUserId() calls
Signed-off-by: Joas Schilling <coding@schilljs.com>
2021-05-10 11:35:17 +02:00
Joas Schilling
dde79b5671
Fix joining a call
Signed-off-by: Joas Schilling <coding@schilljs.com>
2021-05-10 11:35:16 +02:00
Joas Schilling
5d366d0dbf
Fix coding styles
Signed-off-by: Joas Schilling <coding@schilljs.com>
2021-05-07 11:57:39 +02:00
Joas Schilling
ee3dc43530
Throw the exception up
Signed-off-by: Joas Schilling <coding@schilljs.com>
2021-05-07 11:57:38 +02:00
Joas Schilling
cf23a3d87d
Inject API version into signaling API calls
Signed-off-by: Joas Schilling <coding@schilljs.com>
2021-05-07 11:55:48 +02:00
Marcel Hibbe
b8e4c4da56
add grid view for calls. make own video movable
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2021-05-07 09:45:51 +02:00
Andy Scherzinger
f1f5c3b19c
improve logging, remove unused member var
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2021-04-27 22:45:14 +02:00
Tobias Kaminsky
05a21590da
Merge pull request #907 from nextcloud/fix-data-channel-support-with-newer-janus-versions
[v8.0.x] Fix data channel suport with newer Janus versions
2020-10-27 10:51:38 +01:00
Biswajit Das
518d1ea62e
Merge pull request #905 from nextcloud/fix-frozen-video-when-screen-is-shared
[v8.0.x] Fix frozen video when screen is shared
2020-10-03 00:00:47 +01:00
Daniel Calviño Sánchez
fcb45e94f3 Fix data channel suport with newer Janus versions
When Janus is used even if it is possible to open several data channels
with different labels and send data on them all the messages are
received in the first data channel opened.

In Talk the "status" data channel is used to send the data channel
messages, and before Janus 0.7.0 it was the first data channel opened,
so the messages were received on it.

However, since Janus 0.7.0 the data channel messages are received
instead on a data channel opened by Janus, which is named
"JanusDataChannel". It is not possible to change that behaviour on Janus
except by patching it, so for broader compatibility the messages
received in "JanusDataChannel" are treated like messages received in the
"status" data channel

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2020-10-02 20:15:03 +02:00
Daniel Calviño Sánchez
1321cb21a0 Fix frozen video when screen is shared
When another participant shared the screen a new offer was requested.
However, the offer was requested for the video instead of for the
screen, which caused the HPB to stop the previous video connection and
replace it with a new one. As receiving new offers for an existing
connection is not properly handled the offer was applied to the existing
peer connection, which caused the new offer to be ignored and the old
peer connection to be kept (but frozen due to the HPB not sending more
data for that connection).

Requesting offers are not needed when the peer connection is a screen,
as the HPB will automatically send the offers itself. Therefore, now
offers are requested only when the connection is of "video" type.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2020-10-02 10:10:49 +02:00
Daniel Calviño Sánchez
783f09316f Remove no longer used method
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2020-10-01 20:34:48 +02:00
Daniel Calviño Sánchez
6b2720653a Always pass the session id in "NICK_CHANGE" PeerConnectionEvents
Before the NICK_CHANGE event include either the session id or the user
id, depending on whether the participant was a guest or a user. However,
as the session id is also known for users the event can be unified to
always include the session id only.

This also fixes an exception when handling the "NICK_CHANGE" event, as
the session id was got from the user id given in the event, but if the
event already included the session id the look up failed and the session
id was replaced with an empty value. This in turn caused an exception
when trying to use the view for the now invalid session id. Now the
session id provided in the event is always directly used.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2020-10-01 19:07:25 +02:00
Daniel Calviño Sánchez
5b9f02e99c Fix setting guest nicks
The "nick" attribute was set with itself instead of with the
"internalNick" variable that holds the value received in the
"nickChanged" event.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2020-10-01 19:00:07 +02:00
Daniel Calviño Sánchez
6846eb950b Fix websocket reconnection when a guest joins the conversation
When the standalone signaling server is used and a participant joins a
conversation a "join" signaling message is received. The code assumed
that the event always contains a "user" attribute, but that attribute is
empty for guests. As the "user" attribute was used unconditionally this
caused an exception, and as the exception happened when handling a
websocket message it propagated until it caused a reconnection of the
websocket.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2020-10-01 18:45:16 +02:00
tobiasKaminsky
6d7cf8305a
Fix join call directly after first start
Signed-off-by: tobiasKaminsky <tobias@kaminsky.me>
2020-09-29 09:40:46 +02:00
Mario Danic
6a5aaac224 Lobby & Various bugfixes and improvements
Includes conversion to Kotlin of some files

Signed-off-by: Mario Danic <mario@lovelyhq.com>
2019-08-30 12:13:33 +02:00
Mario Danic
14efe5992a Clean up MerlinTheWizard
Signed-off-by: Mario Danic <mario@lovelyhq.com>
2019-08-30 12:13:33 +02:00
Mario Danic
0eab88f302 Remove latin america for s4 mini
Signed-off-by: Mario Danic <mario@lovelyhq.com>
2019-08-13 22:00:24 +02:00
Mario Danic
687f6f3aee Fix #597
Signed-off-by: Mario Danic <mario@lovelyhq.com>
2019-08-13 21:53:10 +02:00
Mario Danic
aca1f9a13d Fix various issues with emojis
Signed-off-by: Mario Danic <mario@lovelyhq.com>
2019-07-22 12:41:54 +02:00