diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index c73f6db33d..20df6d651e 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -118,6 +118,14 @@
android:launchMode="singleTask">
+
+
+
+
@@ -349,7 +357,7 @@
-
+
diff --git a/build.gradle b/build.gradle
index 11b56065fa..ca6cf25261 100644
--- a/build.gradle
+++ b/build.gradle
@@ -57,7 +57,8 @@ dependencies {
compile 'org.whispersystems:jobmanager:1.0.2'
compile 'org.whispersystems:libpastelog:1.0.7'
- compile 'org.whispersystems:signal-service-android:2.4.7'
+ compile 'org.whispersystems:signal-service-android:2.5.0'
+ compile 'org.whispersystems:webrtc-android:M56'
compile "me.leolin:ShortcutBadger:1.10-WS1"
compile 'se.emilsjolander:stickylistheaders:2.7.0'
@@ -123,7 +124,8 @@ dependencyVerification {
'com.google.android.gms:play-services-places:abf3a4a3b146ec7e6e753be62775e512868cf37d6f88ffe2d81167b33b57132b',
'org.whispersystems:jobmanager:506f679fc2fcf7bb6d10f00f41d6f6ea0abf75c70dc95b913398661ad538a181',
'org.whispersystems:libpastelog:bb331d9a98240fc139101128ba836c1edec3c40e000597cdbb29ebf4cbf34d88',
- 'org.whispersystems:signal-service-android:0b5e607c1ffdbc90f8b1117c43ceaba62e3e19c01c8d29b3e1bf57cffce07f2b',
+ 'org.whispersystems:signal-service-android:f207fcf8f17b5a1f04053151cad518f9520f8fbfb2e5563a19828f6b2c2b7b6d',
+ 'org.whispersystems:webrtc-android:1eaaf2c8b48e135834de74733dd5ffcf9585402ad4d568f5167bc3ba6f11d569',
'me.leolin:ShortcutBadger:e8e39df8a59d8211a30f40b1eeab21b3fa57b3f3e0f03abb995f82d66588778c',
'se.emilsjolander:stickylistheaders:a08ca948aa6b220f09d82f16bbbac395f6b78897e9eeac6a9f0b0ba755928eeb',
'com.jpardogo.materialtabstrip:library:c6ef812fba4f74be7dc4a905faa4c2908cba261a94c13d4f96d5e67e4aad4aaa',
@@ -157,7 +159,7 @@ dependencyVerification {
'com.google.android.gms:play-services-basement:95dd882c5ffba15b9a99de3fefb05d3a01946623af67454ca00055d222f85a8d',
'com.google.android.gms:play-services-iid:54e919f9957b8b7820da7ee9b83471d00d0cac1cf08ddea8b5b41aea80bb1a70',
'org.whispersystems:signal-protocol-android:1b4b9d557c8eaf861797ff683990d482d4aa8e9f23d9b17ff0cc67a02f38cb19',
- 'org.whispersystems:signal-service-java:9738c26c17069a2f1eff47a46da5df62efa875bd66321933bed78f2584b7cc70',
+ 'org.whispersystems:signal-service-java:910ed96e928355d118454e1dff6c11b9f95daa801f3b4022e5c8999bff47a888',
'com.nineoldandroids:library:68025a14e3e7673d6ad2f95e4b46d78d7d068343aa99256b686fe59de1b3163a',
'javax.inject:javax.inject:91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff',
'com.madgag.spongycastle:core:8d6240b974b0aca4d3da9c7dd44d42339d8a374358aca5fc98e50a995764511f',
@@ -178,6 +180,7 @@ dependencyVerification {
]
}
+
android {
compileSdkVersion 25
buildToolsVersion '23.0.3'
@@ -239,6 +242,7 @@ android {
'proguard-glide.pro',
'proguard-shortcutbadger.pro',
'proguard-retrofit.pro',
+ 'proguard-webrtc.pro',
'proguard.cfg'
testProguardFiles 'proguard-automation.pro',
'proguard.cfg'
diff --git a/proguard-webrtc.pro b/proguard-webrtc.pro
new file mode 100644
index 0000000000..7a1e3dea5f
--- /dev/null
+++ b/proguard-webrtc.pro
@@ -0,0 +1,3 @@
+-dontwarn org.webrtc.NetworkMonitorAutoDetect
+-dontwarn android.net.Network
+-keep class org.webrtc.** { *; }
diff --git a/protobuf/Makefile b/protobuf/Makefile
new file mode 100644
index 0000000000..2418998559
--- /dev/null
+++ b/protobuf/Makefile
@@ -0,0 +1,3 @@
+
+all:
+ protoc --java_out=../src/ WebRtcData.proto
diff --git a/protobuf/WebRtcData.proto b/protobuf/WebRtcData.proto
new file mode 100644
index 0000000000..3e6c3fd713
--- /dev/null
+++ b/protobuf/WebRtcData.proto
@@ -0,0 +1,31 @@
+/**
+ * Copyright (C) 2014-2016 Open Whisper Systems
+ *
+ * Licensed according to the LICENSE file in this repository.
+ */
+
+package signal;
+
+option java_package = "org.thoughtcrime.securesms.webrtc";
+option java_outer_classname = "WebRtcDataProtos";
+
+message Connected {
+ optional uint64 id = 1;
+}
+
+message Hangup {
+ optional uint64 id = 1;
+}
+
+message VideoStreamingStatus {
+ optional uint64 id = 1;
+ optional bool enabled = 2;
+}
+
+message Data {
+
+ optional Connected connected = 1;
+ optional Hangup hangup = 2;
+ optional VideoStreamingStatus videoStreamingStatus = 3;
+
+}
\ No newline at end of file
diff --git a/res/drawable-hdpi/ic_call_end_white_48dp.png b/res/drawable-hdpi/ic_call_end_white_48dp.png
new file mode 100644
index 0000000000..e1831d7afd
Binary files /dev/null and b/res/drawable-hdpi/ic_call_end_white_48dp.png differ
diff --git a/res/drawable-hdpi/ic_mic_off_white_24dp.png b/res/drawable-hdpi/ic_mic_off_white_24dp.png
new file mode 100644
index 0000000000..6fccf5d09f
Binary files /dev/null and b/res/drawable-hdpi/ic_mic_off_white_24dp.png differ
diff --git a/res/drawable-hdpi/ic_phone_bluetooth_speaker_white_24dp.png b/res/drawable-hdpi/ic_phone_bluetooth_speaker_white_24dp.png
new file mode 100644
index 0000000000..69f28f8a2c
Binary files /dev/null and b/res/drawable-hdpi/ic_phone_bluetooth_speaker_white_24dp.png differ
diff --git a/res/drawable-hdpi/ic_phone_in_talk_white_24dp.png b/res/drawable-hdpi/ic_phone_in_talk_white_24dp.png
new file mode 100644
index 0000000000..f2c89424ef
Binary files /dev/null and b/res/drawable-hdpi/ic_phone_in_talk_white_24dp.png differ
diff --git a/res/drawable-hdpi/ic_videocam_white_24dp.png b/res/drawable-hdpi/ic_videocam_white_24dp.png
new file mode 100644
index 0000000000..d83e0d50c3
Binary files /dev/null and b/res/drawable-hdpi/ic_videocam_white_24dp.png differ
diff --git a/res/drawable-hdpi/ic_volume_mute_white_24dp.png b/res/drawable-hdpi/ic_volume_mute_white_24dp.png
new file mode 100644
index 0000000000..11ee561323
Binary files /dev/null and b/res/drawable-hdpi/ic_volume_mute_white_24dp.png differ
diff --git a/res/drawable-hdpi/ic_volume_up_white_24dp.png b/res/drawable-hdpi/ic_volume_up_white_24dp.png
new file mode 100644
index 0000000000..57d787163e
Binary files /dev/null and b/res/drawable-hdpi/ic_volume_up_white_24dp.png differ
diff --git a/res/drawable-mdpi/ic_call_end_white_48dp.png b/res/drawable-mdpi/ic_call_end_white_48dp.png
new file mode 100644
index 0000000000..a4fe6889d1
Binary files /dev/null and b/res/drawable-mdpi/ic_call_end_white_48dp.png differ
diff --git a/res/drawable-mdpi/ic_mic_off_white_24dp.png b/res/drawable-mdpi/ic_mic_off_white_24dp.png
new file mode 100644
index 0000000000..15094d8842
Binary files /dev/null and b/res/drawable-mdpi/ic_mic_off_white_24dp.png differ
diff --git a/res/drawable-mdpi/ic_phone_bluetooth_speaker_white_24dp.png b/res/drawable-mdpi/ic_phone_bluetooth_speaker_white_24dp.png
new file mode 100644
index 0000000000..18068083ae
Binary files /dev/null and b/res/drawable-mdpi/ic_phone_bluetooth_speaker_white_24dp.png differ
diff --git a/res/drawable-mdpi/ic_phone_in_talk_white_24dp.png b/res/drawable-mdpi/ic_phone_in_talk_white_24dp.png
new file mode 100644
index 0000000000..e6f98af95b
Binary files /dev/null and b/res/drawable-mdpi/ic_phone_in_talk_white_24dp.png differ
diff --git a/res/drawable-mdpi/ic_videocam_white_24dp.png b/res/drawable-mdpi/ic_videocam_white_24dp.png
new file mode 100644
index 0000000000..d146209a51
Binary files /dev/null and b/res/drawable-mdpi/ic_videocam_white_24dp.png differ
diff --git a/res/drawable-mdpi/ic_volume_mute_white_24dp.png b/res/drawable-mdpi/ic_volume_mute_white_24dp.png
new file mode 100644
index 0000000000..9685c872cc
Binary files /dev/null and b/res/drawable-mdpi/ic_volume_mute_white_24dp.png differ
diff --git a/res/drawable-mdpi/ic_volume_up_white_24dp.png b/res/drawable-mdpi/ic_volume_up_white_24dp.png
new file mode 100644
index 0000000000..7cfd4c7b88
Binary files /dev/null and b/res/drawable-mdpi/ic_volume_up_white_24dp.png differ
diff --git a/res/drawable-xhdpi/ic_call_end_white_48dp.png b/res/drawable-xhdpi/ic_call_end_white_48dp.png
new file mode 100644
index 0000000000..8801d0ded4
Binary files /dev/null and b/res/drawable-xhdpi/ic_call_end_white_48dp.png differ
diff --git a/res/drawable-xhdpi/ic_mic_off_white_24dp.png b/res/drawable-xhdpi/ic_mic_off_white_24dp.png
new file mode 100644
index 0000000000..bb7915f33d
Binary files /dev/null and b/res/drawable-xhdpi/ic_mic_off_white_24dp.png differ
diff --git a/res/drawable-xhdpi/ic_phone_bluetooth_speaker_white_24dp.png b/res/drawable-xhdpi/ic_phone_bluetooth_speaker_white_24dp.png
new file mode 100644
index 0000000000..20ff3500a3
Binary files /dev/null and b/res/drawable-xhdpi/ic_phone_bluetooth_speaker_white_24dp.png differ
diff --git a/res/drawable-xhdpi/ic_phone_in_talk_white_24dp.png b/res/drawable-xhdpi/ic_phone_in_talk_white_24dp.png
new file mode 100644
index 0000000000..a2d78b2217
Binary files /dev/null and b/res/drawable-xhdpi/ic_phone_in_talk_white_24dp.png differ
diff --git a/res/drawable-xhdpi/ic_videocam_white_24dp.png b/res/drawable-xhdpi/ic_videocam_white_24dp.png
new file mode 100644
index 0000000000..1b2583d34e
Binary files /dev/null and b/res/drawable-xhdpi/ic_videocam_white_24dp.png differ
diff --git a/res/drawable-xhdpi/ic_volume_mute_white_24dp.png b/res/drawable-xhdpi/ic_volume_mute_white_24dp.png
new file mode 100644
index 0000000000..4121c2cb43
Binary files /dev/null and b/res/drawable-xhdpi/ic_volume_mute_white_24dp.png differ
diff --git a/res/drawable-xhdpi/ic_volume_up_white_24dp.png b/res/drawable-xhdpi/ic_volume_up_white_24dp.png
new file mode 100644
index 0000000000..2ed00343b8
Binary files /dev/null and b/res/drawable-xhdpi/ic_volume_up_white_24dp.png differ
diff --git a/res/drawable-xxhdpi/ic_call_end_white_48dp.png b/res/drawable-xxhdpi/ic_call_end_white_48dp.png
new file mode 100644
index 0000000000..c8099a1a15
Binary files /dev/null and b/res/drawable-xxhdpi/ic_call_end_white_48dp.png differ
diff --git a/res/drawable-xxhdpi/ic_mic_off_white_24dp.png b/res/drawable-xxhdpi/ic_mic_off_white_24dp.png
new file mode 100644
index 0000000000..7a15a9ea9e
Binary files /dev/null and b/res/drawable-xxhdpi/ic_mic_off_white_24dp.png differ
diff --git a/res/drawable-xxhdpi/ic_phone_bluetooth_speaker_white_24dp.png b/res/drawable-xxhdpi/ic_phone_bluetooth_speaker_white_24dp.png
new file mode 100644
index 0000000000..61b5bc6df5
Binary files /dev/null and b/res/drawable-xxhdpi/ic_phone_bluetooth_speaker_white_24dp.png differ
diff --git a/res/drawable-xxhdpi/ic_phone_in_talk_white_24dp.png b/res/drawable-xxhdpi/ic_phone_in_talk_white_24dp.png
new file mode 100644
index 0000000000..9c002da0aa
Binary files /dev/null and b/res/drawable-xxhdpi/ic_phone_in_talk_white_24dp.png differ
diff --git a/res/drawable-xxhdpi/ic_videocam_white_24dp.png b/res/drawable-xxhdpi/ic_videocam_white_24dp.png
new file mode 100644
index 0000000000..44c28e2f28
Binary files /dev/null and b/res/drawable-xxhdpi/ic_videocam_white_24dp.png differ
diff --git a/res/drawable-xxhdpi/ic_volume_mute_white_24dp.png b/res/drawable-xxhdpi/ic_volume_mute_white_24dp.png
new file mode 100644
index 0000000000..2c539c7ac9
Binary files /dev/null and b/res/drawable-xxhdpi/ic_volume_mute_white_24dp.png differ
diff --git a/res/drawable-xxhdpi/ic_volume_up_white_24dp.png b/res/drawable-xxhdpi/ic_volume_up_white_24dp.png
new file mode 100644
index 0000000000..2e751a40f5
Binary files /dev/null and b/res/drawable-xxhdpi/ic_volume_up_white_24dp.png differ
diff --git a/res/drawable-xxxhdpi/ic_call_end_white_48dp.png b/res/drawable-xxxhdpi/ic_call_end_white_48dp.png
new file mode 100644
index 0000000000..a09ec6862c
Binary files /dev/null and b/res/drawable-xxxhdpi/ic_call_end_white_48dp.png differ
diff --git a/res/drawable-xxxhdpi/ic_mic_off_white_24dp.png b/res/drawable-xxxhdpi/ic_mic_off_white_24dp.png
new file mode 100644
index 0000000000..22ca19ae44
Binary files /dev/null and b/res/drawable-xxxhdpi/ic_mic_off_white_24dp.png differ
diff --git a/res/drawable-xxxhdpi/ic_phone_bluetooth_speaker_white_24dp.png b/res/drawable-xxxhdpi/ic_phone_bluetooth_speaker_white_24dp.png
new file mode 100644
index 0000000000..c935d9638e
Binary files /dev/null and b/res/drawable-xxxhdpi/ic_phone_bluetooth_speaker_white_24dp.png differ
diff --git a/res/drawable-xxxhdpi/ic_phone_in_talk_white_24dp.png b/res/drawable-xxxhdpi/ic_phone_in_talk_white_24dp.png
new file mode 100644
index 0000000000..36be1da995
Binary files /dev/null and b/res/drawable-xxxhdpi/ic_phone_in_talk_white_24dp.png differ
diff --git a/res/drawable-xxxhdpi/ic_videocam_white_24dp.png b/res/drawable-xxxhdpi/ic_videocam_white_24dp.png
new file mode 100644
index 0000000000..ed20c07062
Binary files /dev/null and b/res/drawable-xxxhdpi/ic_videocam_white_24dp.png differ
diff --git a/res/drawable-xxxhdpi/ic_volume_mute_white_24dp.png b/res/drawable-xxxhdpi/ic_volume_mute_white_24dp.png
new file mode 100644
index 0000000000..1379bb4441
Binary files /dev/null and b/res/drawable-xxxhdpi/ic_volume_mute_white_24dp.png differ
diff --git a/res/drawable-xxxhdpi/ic_volume_up_white_24dp.png b/res/drawable-xxxhdpi/ic_volume_up_white_24dp.png
new file mode 100644
index 0000000000..82972b4e59
Binary files /dev/null and b/res/drawable-xxxhdpi/ic_volume_up_white_24dp.png differ
diff --git a/res/drawable/circle_alpha.xml b/res/drawable/circle_alpha.xml
new file mode 100644
index 0000000000..f38e68224f
--- /dev/null
+++ b/res/drawable/circle_alpha.xml
@@ -0,0 +1,5 @@
+
+
+
+
diff --git a/res/drawable/webrtc_audio_button.xml b/res/drawable/webrtc_audio_button.xml
new file mode 100644
index 0000000000..462a8898b4
--- /dev/null
+++ b/res/drawable/webrtc_audio_button.xml
@@ -0,0 +1,47 @@
+
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/res/drawable/webrtc_control_background.xml b/res/drawable/webrtc_control_background.xml
new file mode 100644
index 0000000000..1675990f77
--- /dev/null
+++ b/res/drawable/webrtc_control_background.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/res/drawable/webrtc_mute_button.xml b/res/drawable/webrtc_mute_button.xml
new file mode 100644
index 0000000000..1132b7a8d8
--- /dev/null
+++ b/res/drawable/webrtc_mute_button.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/res/drawable/webrtc_video_mute_button.xml b/res/drawable/webrtc_video_mute_button.xml
new file mode 100644
index 0000000000..5cc40e123a
--- /dev/null
+++ b/res/drawable/webrtc_video_mute_button.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/res/layout/webrtc_call_activity.xml b/res/layout/webrtc_call_activity.xml
new file mode 100644
index 0000000000..6611afd961
--- /dev/null
+++ b/res/layout/webrtc_call_activity.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
diff --git a/res/layout/webrtc_call_controls.xml b/res/layout/webrtc_call_controls.xml
new file mode 100644
index 0000000000..ed9bb0cf88
--- /dev/null
+++ b/res/layout/webrtc_call_controls.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/layout/webrtc_call_screen.xml b/res/layout/webrtc_call_screen.xml
new file mode 100644
index 0000000000..f2ed40328f
--- /dev/null
+++ b/res/layout/webrtc_call_screen.xml
@@ -0,0 +1,249 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/layout/webrtc_incoming_call_overlay.xml b/res/layout/webrtc_incoming_call_overlay.xml
new file mode 100644
index 0000000000..baa42eec40
--- /dev/null
+++ b/res/layout/webrtc_incoming_call_overlay.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
diff --git a/res/raw/webrtc_completed.mp3 b/res/raw/webrtc_completed.mp3
new file mode 100644
index 0000000000..fa207e9067
Binary files /dev/null and b/res/raw/webrtc_completed.mp3 differ
diff --git a/res/raw/webrtc_disconnected.mp3 b/res/raw/webrtc_disconnected.mp3
new file mode 100644
index 0000000000..848ad3f7ab
Binary files /dev/null and b/res/raw/webrtc_disconnected.mp3 differ
diff --git a/res/values/strings.xml b/res/values/strings.xml
index d623b35830..38cc3abf61 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -641,6 +641,14 @@
Signal
New message
+
+ The safety numbers for your conversation with %1$s have changed. This could either mean that someone is trying to intercept your communication, or that %2$s simply re-installed Signal.
+ You may wish to verify
+ safety numbers for this contact.
+
+ New safety numbers
+
+
Image
Image
@@ -1129,6 +1137,9 @@
Message trimming
Use system emoji
Disable Signal\'s built-in emoji support
+ Video calling beta
+ Support for next-generation video and voice calls when enabled by both parties. This feature is in beta.
+
diff --git a/res/values/styles.xml b/res/values/styles.xml
index b29d1d6923..fe4b9b5b0f 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -227,6 +227,13 @@
- @null
+
+