From ea0945d406bae68df88b7351148b269e386fd9b2 Mon Sep 17 00:00:00 2001 From: Moxie Marlinspike Date: Wed, 9 Nov 2016 09:37:40 -0800 Subject: [PATCH] Beta support for webrtc video and voice calling // FREEBIE --- AndroidManifest.xml | 11 +- build.gradle | 10 +- proguard-webrtc.pro | 3 + protobuf/Makefile | 3 + protobuf/WebRtcData.proto | 31 + res/drawable-hdpi/ic_call_end_white_48dp.png | Bin 0 -> 553 bytes res/drawable-hdpi/ic_mic_off_white_24dp.png | Bin 0 -> 428 bytes .../ic_phone_bluetooth_speaker_white_24dp.png | Bin 0 -> 468 bytes .../ic_phone_in_talk_white_24dp.png | Bin 0 -> 483 bytes res/drawable-hdpi/ic_videocam_white_24dp.png | Bin 0 -> 173 bytes .../ic_volume_mute_white_24dp.png | Bin 0 -> 138 bytes res/drawable-hdpi/ic_volume_up_white_24dp.png | Bin 0 -> 365 bytes res/drawable-mdpi/ic_call_end_white_48dp.png | Bin 0 -> 389 bytes res/drawable-mdpi/ic_mic_off_white_24dp.png | Bin 0 -> 288 bytes .../ic_phone_bluetooth_speaker_white_24dp.png | Bin 0 -> 323 bytes .../ic_phone_in_talk_white_24dp.png | Bin 0 -> 325 bytes res/drawable-mdpi/ic_videocam_white_24dp.png | Bin 0 -> 131 bytes .../ic_volume_mute_white_24dp.png | Bin 0 -> 110 bytes res/drawable-mdpi/ic_volume_up_white_24dp.png | Bin 0 -> 251 bytes res/drawable-xhdpi/ic_call_end_white_48dp.png | Bin 0 -> 712 bytes res/drawable-xhdpi/ic_mic_off_white_24dp.png | Bin 0 -> 484 bytes .../ic_phone_bluetooth_speaker_white_24dp.png | Bin 0 -> 547 bytes .../ic_phone_in_talk_white_24dp.png | Bin 0 -> 601 bytes res/drawable-xhdpi/ic_videocam_white_24dp.png | Bin 0 -> 178 bytes .../ic_volume_mute_white_24dp.png | Bin 0 -> 152 bytes .../ic_volume_up_white_24dp.png | Bin 0 -> 455 bytes .../ic_call_end_white_48dp.png | Bin 0 -> 1039 bytes res/drawable-xxhdpi/ic_mic_off_white_24dp.png | Bin 0 -> 713 bytes .../ic_phone_bluetooth_speaker_white_24dp.png | Bin 0 -> 830 bytes .../ic_phone_in_talk_white_24dp.png | Bin 0 -> 882 bytes .../ic_videocam_white_24dp.png | Bin 0 -> 234 bytes .../ic_volume_mute_white_24dp.png | Bin 0 -> 185 bytes .../ic_volume_up_white_24dp.png | Bin 0 -> 654 bytes .../ic_call_end_white_48dp.png | Bin 0 -> 1355 bytes .../ic_mic_off_white_24dp.png | Bin 0 -> 902 bytes .../ic_phone_bluetooth_speaker_white_24dp.png | Bin 0 -> 1042 bytes .../ic_phone_in_talk_white_24dp.png | Bin 0 -> 1162 bytes .../ic_videocam_white_24dp.png | Bin 0 -> 290 bytes .../ic_volume_mute_white_24dp.png | Bin 0 -> 206 bytes .../ic_volume_up_white_24dp.png | Bin 0 -> 878 bytes res/drawable/circle_alpha.xml | 5 + res/drawable/webrtc_audio_button.xml | 47 + res/drawable/webrtc_control_background.xml | 5 + res/drawable/webrtc_mute_button.xml | 9 + res/drawable/webrtc_video_mute_button.xml | 9 + res/layout/webrtc_call_activity.xml | 12 + res/layout/webrtc_call_controls.xml | 29 + res/layout/webrtc_call_screen.xml | 249 ++ res/layout/webrtc_incoming_call_overlay.xml | 29 + res/raw/webrtc_completed.mp3 | Bin 0 -> 16042 bytes res/raw/webrtc_disconnected.mp3 | Bin 0 -> 17294 bytes res/values/strings.xml | 11 + res/values/styles.xml | 7 + res/xml/preferences_advanced.xml | 6 + .../thoughtcrime/redphone/RedPhoneShare.java | 46 - .../thoughtcrime/redphone/VoiceCallShare.java | 70 + .../securesms/ApplicationContext.java | 3 + .../securesms/ConfirmIdentityDialog.java | 29 +- .../securesms/ConversationActivity.java | 32 +- .../RegistrationProgressActivity.java | 7 +- .../securesms/WebRtcCallActivity.java | 404 +++ .../components/emoji/EmojiProvider.java | 3 +- .../components/webrtc/PercentFrameLayout.java | 136 + .../components/webrtc/WebRtcCallControls.java | 124 + .../components/webrtc/WebRtcCallScreen.java | 292 +++ .../webrtc/WebRtcInCallAudioButton.java | 189 ++ .../webrtc/WebRtcIncomingCallOverlay.java | 116 + .../webrtc/WebRtcNotificationBarManager.java | 90 + .../securesms/contacts/ContactsDatabase.java | 7 +- .../securesms/database/MmsSmsColumns.java | 5 + .../securesms/database/SmsDatabase.java | 9 +- .../database/TextSecureDirectory.java | 39 +- .../database/model/MessageRecord.java | 4 + .../SignalCommunicationModule.java | 4 +- .../securesms/events/WebRtcCallEvent.java | 52 + .../securesms/jobs/PushDecryptJob.java | 91 +- .../securesms/jobs/RefreshAttributesJob.java | 14 +- .../AdvancedPreferenceFragment.java | 20 + .../securesms/recipients/Recipient.java | 3 +- .../securesms/recipients/Recipients.java | 3 +- .../service/RegistrationService.java | 2 +- .../securesms/service/WebRtcCallService.java | 1039 ++++++++ .../sms/IncomingPreKeyBundleMessage.java | 16 +- .../securesms/sms/IncomingTextMessage.java | 8 + .../securesms/util/DirectoryHelper.java | 22 +- .../securesms/util/FutureTaskListener.java | 4 +- .../securesms/util/ListenableFutureTask.java | 31 +- .../securesms/util/TextSecurePreferences.java | 9 + src/org/thoughtcrime/securesms/util/Util.java | 4 + .../securesms/util/VerifySpan.java | 39 + .../util/concurrent/SettableFuture.java | 2 + .../webrtc/CallNotificationManager.java | 86 + .../webrtc/PeerConnectionFactoryOptions.java | 11 + .../webrtc/PeerConnectionWrapper.java | 314 +++ .../securesms/webrtc/WebRtcDataProtos.java | 2248 +++++++++++++++++ .../webrtc/audio/OutgoingRinger.java | 125 + 96 files changed, 6098 insertions(+), 130 deletions(-) create mode 100644 proguard-webrtc.pro create mode 100644 protobuf/Makefile create mode 100644 protobuf/WebRtcData.proto create mode 100644 res/drawable-hdpi/ic_call_end_white_48dp.png create mode 100644 res/drawable-hdpi/ic_mic_off_white_24dp.png create mode 100644 res/drawable-hdpi/ic_phone_bluetooth_speaker_white_24dp.png create mode 100644 res/drawable-hdpi/ic_phone_in_talk_white_24dp.png create mode 100644 res/drawable-hdpi/ic_videocam_white_24dp.png create mode 100644 res/drawable-hdpi/ic_volume_mute_white_24dp.png create mode 100644 res/drawable-hdpi/ic_volume_up_white_24dp.png create mode 100644 res/drawable-mdpi/ic_call_end_white_48dp.png create mode 100644 res/drawable-mdpi/ic_mic_off_white_24dp.png create mode 100644 res/drawable-mdpi/ic_phone_bluetooth_speaker_white_24dp.png create mode 100644 res/drawable-mdpi/ic_phone_in_talk_white_24dp.png create mode 100644 res/drawable-mdpi/ic_videocam_white_24dp.png create mode 100644 res/drawable-mdpi/ic_volume_mute_white_24dp.png create mode 100644 res/drawable-mdpi/ic_volume_up_white_24dp.png create mode 100644 res/drawable-xhdpi/ic_call_end_white_48dp.png create mode 100644 res/drawable-xhdpi/ic_mic_off_white_24dp.png create mode 100644 res/drawable-xhdpi/ic_phone_bluetooth_speaker_white_24dp.png create mode 100644 res/drawable-xhdpi/ic_phone_in_talk_white_24dp.png create mode 100644 res/drawable-xhdpi/ic_videocam_white_24dp.png create mode 100644 res/drawable-xhdpi/ic_volume_mute_white_24dp.png create mode 100644 res/drawable-xhdpi/ic_volume_up_white_24dp.png create mode 100644 res/drawable-xxhdpi/ic_call_end_white_48dp.png create mode 100644 res/drawable-xxhdpi/ic_mic_off_white_24dp.png create mode 100644 res/drawable-xxhdpi/ic_phone_bluetooth_speaker_white_24dp.png create mode 100644 res/drawable-xxhdpi/ic_phone_in_talk_white_24dp.png create mode 100644 res/drawable-xxhdpi/ic_videocam_white_24dp.png create mode 100644 res/drawable-xxhdpi/ic_volume_mute_white_24dp.png create mode 100644 res/drawable-xxhdpi/ic_volume_up_white_24dp.png create mode 100644 res/drawable-xxxhdpi/ic_call_end_white_48dp.png create mode 100644 res/drawable-xxxhdpi/ic_mic_off_white_24dp.png create mode 100644 res/drawable-xxxhdpi/ic_phone_bluetooth_speaker_white_24dp.png create mode 100644 res/drawable-xxxhdpi/ic_phone_in_talk_white_24dp.png create mode 100644 res/drawable-xxxhdpi/ic_videocam_white_24dp.png create mode 100644 res/drawable-xxxhdpi/ic_volume_mute_white_24dp.png create mode 100644 res/drawable-xxxhdpi/ic_volume_up_white_24dp.png create mode 100644 res/drawable/circle_alpha.xml create mode 100644 res/drawable/webrtc_audio_button.xml create mode 100644 res/drawable/webrtc_control_background.xml create mode 100644 res/drawable/webrtc_mute_button.xml create mode 100644 res/drawable/webrtc_video_mute_button.xml create mode 100644 res/layout/webrtc_call_activity.xml create mode 100644 res/layout/webrtc_call_controls.xml create mode 100644 res/layout/webrtc_call_screen.xml create mode 100644 res/layout/webrtc_incoming_call_overlay.xml create mode 100644 res/raw/webrtc_completed.mp3 create mode 100644 res/raw/webrtc_disconnected.mp3 delete mode 100644 src/org/thoughtcrime/redphone/RedPhoneShare.java create mode 100644 src/org/thoughtcrime/redphone/VoiceCallShare.java create mode 100644 src/org/thoughtcrime/securesms/WebRtcCallActivity.java create mode 100644 src/org/thoughtcrime/securesms/components/webrtc/PercentFrameLayout.java create mode 100644 src/org/thoughtcrime/securesms/components/webrtc/WebRtcCallControls.java create mode 100644 src/org/thoughtcrime/securesms/components/webrtc/WebRtcCallScreen.java create mode 100644 src/org/thoughtcrime/securesms/components/webrtc/WebRtcInCallAudioButton.java create mode 100644 src/org/thoughtcrime/securesms/components/webrtc/WebRtcIncomingCallOverlay.java create mode 100644 src/org/thoughtcrime/securesms/components/webrtc/WebRtcNotificationBarManager.java create mode 100644 src/org/thoughtcrime/securesms/events/WebRtcCallEvent.java create mode 100644 src/org/thoughtcrime/securesms/service/WebRtcCallService.java create mode 100644 src/org/thoughtcrime/securesms/util/VerifySpan.java create mode 100644 src/org/thoughtcrime/securesms/webrtc/CallNotificationManager.java create mode 100644 src/org/thoughtcrime/securesms/webrtc/PeerConnectionFactoryOptions.java create mode 100644 src/org/thoughtcrime/securesms/webrtc/PeerConnectionWrapper.java create mode 100644 src/org/thoughtcrime/securesms/webrtc/WebRtcDataProtos.java create mode 100644 src/org/thoughtcrime/securesms/webrtc/audio/OutgoingRinger.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index c73f6db33..20df6d651 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 11b56065f..ca6cf2526 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 000000000..7a1e3dea5 --- /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 000000000..241899855 --- /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 000000000..3e6c3fd71 --- /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 0000000000000000000000000000000000000000..e1831d7afd086dcfc741a496d058af3d0308da99 GIT binary patch literal 553 zcmV+^0@nSBP)Ksbir@OQBE-g|t&k+Ykz+ zv_rwEC`K3YWfDSS5J7RvWL_XcKqYFppN>MvIXStxmwO?<=lKUdap+5>QmIrbl}e>j zGRKXZG-J-9Wt+BCRc+a{Y|)qQxnSHenb_~4{1ro{d|_SL)_iW#>#}--+KstyO|7k% z^}hD{fL?Las(SQ?8(uyLC^P13^={64vi*ZH6XrFlAAKO(59m$bE9xH$9-8v0VFP+~ zsHo`BYrtDhy5x~1|0(JlL*+odW>xLpwjW$JqEnQ(%e$_bmsizYJ$r#Zu_nI}QN!c% zTk&B&=mn1z_eM>icNF(P_imuq{7zFq{AzF~=!Cy%8i+rA{68pj1)2(ii!u?~%+L}b zZmWdrvtU;=W`?d^6guO|>85IXU^O5DfI3g62s-|^{I^FF~F-L?V(yCEW=O=9B zb417|EjTI~@JoKlw1WKR;N}vQvpae>w!v}f>M-hs<`NyOS00000NkvXXu0mjfwpIZY literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..6fccf5d09f041a62f4c831bb7038d59216d91a88 GIT binary patch literal 428 zcmV;d0aN~oP)7*pw6*!brO z;>wChcQR1etfOQBSPTH4;3^W?^LfE0AR)ugvqj9w#dIXk)a2GmiSbTF4Z1+Pq!7U-2 z_H!z=23Gr_Q^t7TP3tC8sAm{i=!e2rRpyU3o-myXeLd^8 zPvEl+XN0gloeD>_ssDQq3u+dqq-KS}11(yE8K8oCVJ;7?Xf#%)Y_4@o0!s84K>q== W1dVw9)Q3s{0000^iXJEG0KeO>rcgDK5J3{2+GA`&%(aSUraHe2{Ac;Fo0gy>t1=V|?F$H4-cF>ugUC@RvW3mj4V5_^d zKy0J#aZ%sZ_et~>HCY{-~XxUHbz0?FOs4oWf$?u~mwAlq;0M}YWdla`( zD7MLCz)&lwOL50VR^2gcv+rf5z=G~_D9p)kRAfQJ4eK)M33#Pe4&9XBnH&V~?8vV5 z6&x;y^5?!HQkOgj%<0PB5$=~m9lis&DhloQ35*G0izXUYltE#t>~T{EKqEW*4A@%^ z?E*h+6Qxaqqe2)5C(EJm2;3H>T?RwamDF27-J0N___IQ>G4S5{s!*p{Fl~7?DC{;5 z?pj(63Il+9g}++jtO>ogwuMsX0WWNj7?S`#d*hi&tJ^{09N>dPiTQPd?V&JW9&pF@ zQihQ>P&)gpv?@^OG^$w|k0wldT1B8K8iKmNWh{y5d1PRu~2?kC7U;UT= zr_N^cXMNj}ZsyAiX8k|Xl(j>y|G(%AHdBGz0OmV0|k0wldT1B8K8pr?yth{y4_R}8rr6nLC3%G{lO z-LY#I$D|hlpZGs4Gi%U}HxU$8Ok%l^kf9+dG>eCIEf3?{GpZu(Jd(faCius>{Md3x lQjl+ULDpm@7m=8SRy}9aHrPw9U{*RDXjni literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..57d787163e90cc34c16eca4e924adca106deb12c GIT binary patch literal 365 zcmV-z0h0cSP)*Pj zyZkh7Ub{XL@4QGHYZ5VC@2&xYC#cf}!13}qb1co#owXXu+ ztYpS~fIYLb1dH;tFT zz2;wIYCx29Cvl4hF#TPz{h+!vd#T$3+p(akfyB*#i&zkgi5mou@u1B#OYrgsKnsnz z+Kc|g&E`w?Zt8ZxR$M_|>P-9X5lqFj$dR5jE`mEv`I@#*87$`;Bkj(?wbnd?t;=ch zeiL~{?YOJtp!4y=f6Rd@cvWn~cl2a7{|8yIuMqOdjdereUy*tT*z=o!Gh#=i2 zxUHW#j;ZlmFB~yTpC3Sx}?~Nic9mw!VXE%t4-O|}Tsh_|+P54s)>dbrr zidFQ20(vVbVGTk9pdd6u1?s{B?p^l`+zDx(acj#Hu#H<)l7cYeNZ1sJc>*koG@S1d z!I?N=0P(RwPMz)%p_8y#Kp{S-Sj5)v5kV&^WRQT%Q2D;s0U^mDyCjevmSBfHh7cVH jZ3Zxa0SsV(e*t^~=a|RM72~P_00000NkvXXu0mjf^Vpp> literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..15094d8842474220f070d23097108ffd974ca9f8 GIT binary patch literal 288 zcmV+*0pI?KP)cMm`(21AT9SrjmjL1kRXy)pqrRb3sY4Ll09vG(ARcknn?t5kgrxD myMaPRJApz*E&~wfufQ*5Xmx+>l_Em`0000jZd!SjCU#pFMZQVn~q~A zc1&f!oRZ+HnVjb%_Dp4jt~(j!Ar9Qk_-tY|<8$937BW6haO6=2Tz4avv4|tjb4te- zecM(nna|&O<;0p>I(Gfh%SAkPh@ZNKY5a?hDBK78)1nDb?lTJ#_HAxQD2M9OC$xk3SiHJBy*jivDgy5nLNmDe1 zgogHfa?~p~@AY4fo|D{GR-I}ZPQhPW<_+a?4wWWTQ2MMl7ui;tNkO|lZ~VZHft+Vu zX(bgpEn-J+>dY%Ob>^5oA3aI5S;VK*d7<>hog8y&I&s%e45muMp%ZJmQ*h5K`xr@# zV=i^x;j8Xcc#RK<$M}{y1K8G+3SIb<=)iu?^BxPiIgjjOEH~#l4m{02+I8hRCUM|p z3K}-FteQ1tIF~cw#FG0OHl1naDxTTJZ{OAAY93m4L9VCYTP+p&KM#zWv*wqUmE2ZG XfRjN?g6O-M00000NkvXXu0mjfGVqI( literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d146209a5145962cfa3226918807fb663d2c7267 GIT binary patch literal 131 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7~ThPZ!4!i_^&o609!G|JDCLW>R0E zB@$rzfKlM-fB6Xu7?;Q_nyA4m@N`K=MMHs9q13<2G0Z3Zl&)S@Vb}iFVci(~H*k$- dvd9Bg24TD2RUWTqYyg_d;OXk;vd$@?2>^H7D%Jo1 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..9685c872ccaf8227025ceb9b380f3ca1b531f0a3 GIT binary patch literal 110 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1Q%@Ji5R22v2@>BP)H8RU`u|@& z(2`S1;Z)}}hG4&d!}UA{s~WiudX*iSIML*UM@@>#dqpOO-oi!6Gd@)C0}WvCboFyt I=akR{0B%kqt^fc4 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..7cfd4c7b88b8d9bc366f0781ea713262c472f2ef GIT binary patch literal 251 zcmV_3jXM$Xr=X;u-(=$+=p?pXDw?0dQEU`vlso0* zdA>~MdnZ|}a_K;?hMpz~crq;DB#C3M_^{K7{|JeJE4*9lz<-5A&ow3;cstUgmBg|) z?9YRLs_i}`i4$DZ1hx|Ec&Q3Ui9Wun!eJ|XR)x*P2A*reeUcdAyt39iO`>@L8ae*^XoFE%2g55>;f$a!bnJ3^a-8Q&a-BDj#(M~HGj;g!I zhT#AT6Q-T;yKcMWxVr6%K>-T8JnM{J*Dz;?qQ8JmrhTEGeXj2M{s8XwmOl-mWk>Al zC7>{A!Js?kent0y!j#j7)u$d%bOX4{$I5r!N%LksY_|!UjT==ctTS%23A^nzW8O*U zmG474I|JO{4P{z(%A6@TiZ*tWDRVyYht{on)phLwYWDj8L-itux0`9nrkixxLt!a58z9;H3Llg znMwfo(S8319JESh0Q}{te*uN(pi%&sQ;0C)bt(zquv(a*vH5}42RexTey86(fe-f{4kyh~{+(!Bv2JQ==%JP-)<&$CY}%iXF4O^C zeZ85VwQV|>k=Fb`*B6Xuh!wdk&kyt=L#)eXFh9^U&Jt6(OkzNU7|13DM2L<-JrE|U zfjChQ#EE(!PSgW&q8^A7aiEfj1C>M^h!A@@A`Arjn;cOO`~-K?yi0~SmDcZrUvXd? zJWcaEazyGguoVYZ!OJv1ph&y|Z{olcFmd|te9T6HSnvZpjssT#kJ6L#M&t<{L$DYI z(&hPG`tP7+*}%la?hJ9pd#^R(fNS=^n&UHTi?%awaU}?(J_oGogoxBA(6$En>Uup< z(iaQ?ymd=At#sY?i3rgs^`sZ}XUE8f9VvMt1f<^dO+JkCA1Vl>o^a0x2Qzd>ThCUR zXheI_4FF5h`6v(xh&O*#UM>;!K#-^eGDLp6>wyB%KNKLH?$6F00+5Klv++Hs?-B5S a0e=92ZRRk`JirnF0000zB7zk^ zflZozgNjX&F0D#!>?1A*n(G-$ZnE#YzYiCF+$H?Vc5qKfH|Ry-ZfSr!y#+?RRfz!Y zNMwLcIh6=ZXybMsXz5HV4XBul1O!*XiGf zG9cs$FpqkiPXj(l<$$nhtC|4n_6d2QE|rr)mY4^PIG+JtN#%N%K;`eiBdI*^VqW~B zvcM&&Ea}hAH$Wp28DK~{N3-)4P|-kBH3#(htTW$Kvhx81*T9t=5Ipl|)}2jX6>&a* z3*B55!9>UWIU(8Mtz34&fK`a|wccOXPl)s9OFTHo0Nm_y{-2-B_kbB;tIY$a0F0FZ zf;WH#gJpmt)&bLHfZzdu$uht$b-e&8%U-zQw1f8O?-EG7acd?!=G&0}s}^)mFl{hD4_X-@*(n1_Z2 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..a2d78b22172911425b21ae8c79da9041a46ae939 GIT binary patch literal 601 zcmV-f0;c_mP)2+&ocHoAp8q}GJ>GNwyVJYvJ|C&3rlJ@iiq{JL@?f2x%rnh(4yas2 z$rqIex!!P*29=H!e(IEi%@*lXsrZebX63-o1DaF{zTu}`IcQ`rCm7}hX|mq2N5!## zpHuQh2NR@lEz+i9c#5AJDu^IUxZbi;c8uZYkt}Fo7T0~*aTPx+)N2Fld}fBr1eC!J zW^tX74PE#bmM}ijpu(u*2l@WcrVZp8r(O(aaiI2}1HkHxZ04G|Is%jBB!C5?6vj6~s~E z7?&=A(XDDAL>eQ?5&2?2K^nAGjN*#Xt2~5> z12JY8rjHJGQ?K$chAYmHJP4B{-wORI2V-PS(W(r>B=Hwjc^D;)E5d;OBTSNlR4ziS zk~PN&Ni0-8I{84!v=uaRi*-t(t)i1zN}%oFB+n^A+eMHGRw+o8z%D{OBuc(zRT77| n!X2J4&sTntWSO(7si~-co;IymT`&Bo00000NkvXXu0mjf&bbB- literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..1b2583d34e8bafff26a20f89c9d7cacf4525617e GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}b0DN>3NZkP61P*9^Is4S8Gw;|*rq z@i^Z5O~`&LSF^H2(&3uW+b>MJ-#(mEy!`0wC)efFl5M{lznoI4x{+;s;upRj$rU~^>bP0l+XkKQP@0n literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..4121c2cb4316ed86d76dcd8908675fa9e5994b4b GIT binary patch literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}b0DcuyC{kP61P*ADU?VBk3H;CBAm zJGQgUZcd?R7``*7MQ8IGzBkTso4~^2>3~Lj(0!o&Ks#W;fuE_*JAbnu7yjPAPx+mF mT;GoWf25RneHxkU8RU+tO?lQez2GU(Dh5wiKbLh*2~7YuU^9yV literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..2ed00343b8061decdc32bb522bf935b199bd4b51 GIT binary patch literal 455 zcmV;&0XY7NP)Vh4S+i9bn60&2*5;>f*zm< zHbA08N&`>?3sB(`39cFX6F|yiDU+1=u$HPL!nZt*K26j57QOxew>+*#A7|o~`~hxx zI`~P>#Vxq5Z+SZA^wTnK%l%*YmPechIV*2Q_SA+8@GFma&}PBPJv4s(JHT(k&TW&G zd4|YjjB5eh=e;!AjwS$BMA)QH7w{%Z(kSo20il*?B+L?( zMVSxtBQJ}xXOt67z?Jpss?oOf0Iy_Zo|TL-t;6nxyp>xveogDRt} literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..c8099a1a15dda6c065cbcf3f5a51c3cf4f25fd25 GIT binary patch literal 1039 zcmV+q1n~QbP)*4F5EbdU*GfFjIneHf!T&u3Z-OsM5Qb8 zN9#sXwu~_BPAVY?l86#YGl}X+VTcbxx}8}LN{TF!!Usi2NR9HQ(!i)Dh@fn#$LZ#) zN0DM4^n1SN>>PLApa0?|ZVN5bX`PL>>#;|#yg`HVdhO9;yN%X)$1)4e zahAIR$6SncC99BF@LgwAZ-Ucr9La5>9$Ez zuPzT5D@wRA?y=flY1-`i;(?mHDP1obA3|xo zfHNKlUe$2AKvVq8umNI=Nv95!cu1aM1;hdOof=T1P8fDT@VW+tfsE75umxh1=0ZTz z>}FU4vCB0l1G-;7!ybr3=AH=!mJJ%$w#&_B5WEVVoGEHG9nw#g_k@h0lZjz@&7h&H=XRLEL&XTu{x z7DNX;p-xoL>MXFocpedoC)(g5QGpxpi__$369s`%5FN5WPE_a;kIEOrBSJAm+e{G^ zzR9+v=Mf=2(Q1vN3f8DIEsqH4hz30_5mmCpV+IQF+$;(Jr6B5ao2atgs;@9l3ZRn^ z?Q*%O!d<4PFi#qwaJ#%?`^AN#N;lq5j;&8y7Dt?ue5fDn_L7mJig&i9{s4X6GCsRI z>9b7GA}3V;66b36zsh>*{kt7HAOQdX01)*5bvpv_fm;d$2@)hokRU;V5F|*DAVGoz z2||z{L4pJc5+n#gf&>W?BuJ1TK?o8gNRS{wf&?K*kRU;mAOhFlPsF?ZQhopc002ov JPDHLkV1l-t*)jkC literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..7a15a9ea9e9125e04739214c0fad7c0226d5eca2 GIT binary patch literal 713 zcmV;)0yh1LP)HNE`WQNVAQwxt5?=Ldi4JNv?e8W`ZH^40M<}s4YU)Gn(=?Nztv4@ z0;Coj$nh5G7XHoNx=EY)2mrjoSwR<(Dr~{OYpwem*R)7FZwIaBE7EfcHTUfl8KX>v zHzW$_3#;rP$0b1OPk+ZLq_emXpcUSq!CnI?*t=}E_i3(Bu#;>c$2orQ8I5+54dl4t zk>kmH0-iVD(6@j;H`BuH>SCP*g@vMdHj v-!T&5!~yB+=7Dewpg7AxIVcC^przg~#hgP)@y&i{5p~M| z9?3QQFR9A{%8=9{9V#eI4oB+qK*9))l%=bBP(*U$h?(RPgb7?5G*t`Alic$N`uaSQ zOXw#mK29BUL~>Jzi4@U?OXbvdWHU(BB=@X;p6GE5pe>Sn7cr5%9LEOwoa9y!!}^I7 zjtcsa9vC%LTlQ}@kl*ZPzPF@Motb_PA3WF z_7hqu6DN%;jU)Zc-8Rr7T927Hf=fJ-0rU)7Jtj^8BuwJ^%mV5mxwkAF5A*=X0DQ~M z7Lc$@<>qKsKuZ-aXrmkf@SWpWK(kb8UgZeauvYF0>v4>rVLL~^q}nc@$>kS z|1y3*GLXPop|}IqSY(!$c!5c7(n0#(#P3g@s_-{hLF)7x^JP$loOlF+&!us16`+cQDCC z_ADRZg?j9IMwuYP`>gT}`~1!c5z}0zfWof$*B??Bid2L zU?H10M!CJrkv%>pT1koUFy9fhmz->|lQ`Ea5gghW$8WoA@gi|HC^4ED#IIF$SVx>r zSzs|oFpaTXHdsoW6Dq?+&T@nuv@llzT+TO``elc+#A#9ho>4kzln;v;#PqamaF95U zD*(S?TIItXjN=(1ujF`%I4c!Ext%yNum#hzN{*F8+oLjsIe;S<4&UQBMNY|ahS}}I zQ5nL$B?Id)-KXT}W;Q)I3PGMGHu5P!tuiox=WQj&{em5Z%B;rW#-RB!CSv`_WM0){YcQoXSr(*$>`-q?j{ zn445z6!-ztAWKwV+{_rJ<1A8r(ZV#Q<1A4uR`C=oR2#J6_Y+Nuz&t+Te?RgjPjI8s z#_RZvuu8LF9(@FjF~C8(d5u@t$_=U>yYZXkIfbA=A8{_QTGb-QZi4o+P(BpsBZ&c} zfj0;m;t{zh&`UDYN(XIB6V$_X`VR$qNla;>g+B@Ui*~N&3oIx-tl$LY{=tgUM1d}< zq_puUzflFHj|CK&qC%<-ZsT(*qS|3CUt>+R#l3vM3>H*-H1R5bkdQ77E@KT{3=yZK zON-mt%KHp6n@-gS*YXfsDDojkImJ2tW{MJ>h zQBv~(_A|Uaeg>M$g-&EJ3;(E>F0WfsuqEq@i4qW8@}AzdO6rx>m9XRe^SrNqJ^A{6 z_JW14-f=$P%=XJsxKGL9nM=c&PKKGnj7I8ADSj*`=EzL26jUe%O0+bb;bi0#P;hAY zVbJ!!)MTmdKI;Vst04r5ToB#j- literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..2e751a40f53b82208e70aaa474d4395a81910a12 GIT binary patch literal 654 zcmV;90&)F`P)_7O&ty4On2@XE3V9dzP8Jcq(p`*@*6|CyVZUeYC9;eb zA>``#g5Qc*fu2;h#B;V4-S|F6)h@MgH|yvD-!%2rmRDRQ3kKsD;oImHj%x0}G)R>vLm+2n`D%IHY!LVa`UVo*UbQ@Y6=< zYHq9>p;a}ZKk<_RaB#(+x@oiQ*R8nhpIQh#R@rYLOj-yHs_f4Y&W9J8R)_0G+6cQt z3$@v+a$i9B9{&0<=H#A1mH)8T6bzp1I>>IT!Mw z=!;z}Av9TI`;^|o99c$eiw!-ho;GD$j@imfvMkVNS+E+QNuHB-CB06@StQRjyQ1eY z-l4f~Qx@)}?va6eBsPWf7A}8DtJGRpV5myXmnpVYr#Lm;e9(07*qoM6N<$f`lO}%>V!Z literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..a09ec6862c8699c8490152c1dd7ff1dccbd753ef GIT binary patch literal 1355 zcmb_cd05g182$kssNpl1$Fg}Q)-J9N}kifzx#XN^L+37z2EuYm;FS=MQzbpp;^brBL0}%#vUm%q9ysx5xMcm1OL&|>S| zf*lEs@S5w#PjRi=WAJ0S&siy6i8uu2p^Oc%xMqHspb7J-gy$W>o0E*nG;R8~0Q;p< zVKuXxnn)UH!A@sEwv`z1<3B3$IZ;l>tzri!Qss1c>S)o1dbM#wzSErZR4!^5O5)gu zx{YOqlQoUWw-Y)F_k22Ah5eA}bJsPF13K5#?-~21_&UJ>2d`?+L*bWkYNp|y~9USG;yG$j-dMB@rgeFND)Oyic zrHF>uCD&J-AE+zAd}O9?aqKW=|1}4@6tUo|n)S&|0Q<*GE6D@?{5e!??n^_`hu1ew z_N^CpGOWxgkIA9p;%?sGVqQJQLfQn|TUxNfq7q#Vq!^nN@(-@@&6U?SvBll=LJ3@z z`wkSbu)-%!X7Lqop6)e*~YP9^g^-8Nb6PVgPDu72zZL@hlQuJDef4aO!_6C-y}B2TK+ z=q4D0K!hFQ?eyv}ow%>s?;hV|Q;BrAE$X34Z?B_2J{YO;uw~+^dV6MaY@fE~J3Evk zu_H-cExy#XTMlCsC%W!PFj)!mN-hQ4WGuSIV&ZdiQPd=&@9T>YTj;#@+B9uuZ9 z1`fi#NpG{<891}kK65ksF!tW-dbLLWw)@1T{O)V*e};tkbr6w`OQ6e68Oi2nRWJOUai{tT~Jw*mcy4u&3+JaH9LFcG5$(75z0# zod4y5i&865GS(wY*fX?Wje9e67#^&sAnaMH__X_0|1!S)np%I>l2GH46Gu;n*Vu6f zs+ZGozNRhT?A*02j564xmIq|j1RQ6thH=!2z_3mwkp7?4e%pBEl&Cnt}9X{@J zdMJj<$+C!f=SkP(6t;uy`ex>fB;yv{Elu4gXf(wjO8zB&*f6bk{^hreT(>?PizW!& za;BYiw`X<^yKw_OcpBJ9ylEPzdrt-fw*~ht^_A8_p{OnG zCJ=&RLKX>xyg(2Ffg}b*r4fXvxzS2SG!9Jg69q=8E8ar;l2$K}N zfBHTR9w%Ug7?|=Rv~z$@`?Q7!*w@FCu!L`ag$LNz_ak&r!M6%+;Q{vbeF)HF}2 zNq_`|Ws-CuJfOf-BElv~+6Vv;5=tcLC;&i6h)7fbfROM$kvc$5PzT5f>Hs-G9Uv#@ z0_21~B6WbApbn4|)B$pWIzUcP2gnJ!06F13B6WbApbn4|)B$pWIzUcP2gnKP069Sy zASd(^sRQH$eSn*A=ugNZz*qo3LPi1pgkuLpl%MaGvADw(fZS z0eBPKTc_Hd0O0ZV2aXG!0}-LXQ>xuhAFzs*<2#ly5D{9jyO=&;8oQ4$b!(w4BJ^YT zYx;m8?0$Bf_!9(#U$FZkeLyF6_Z%l$c-%Chz(ed_69XDPXWn(37$9zv(2Lz&ObEaP zcKRDn-{mmW&UBFITpCY2F~OJgJdnNB1%p$$X4WA zo@f#b^0l%=Ow!8y&Tn#pA)R%zNEzP_`GYPD1*WA0LwY;Q58S3vH~7YSMu`cAwD&SY z%yOOjt}(;syo9kQCm2G_|2we)GyVj9fSjNYkQ4L)a)LggO@N%B01y!- zvk$NdbJP~|b@l-MgqW`|Sp)bJV!p&=4d73R8OCH5;PKHmjFAIWmjePW2jqYpkOOi+ c4#)w|08MwkKa}4vHUIzs07*qoM6N<$f?~y!82|tP literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..c935d9638e18b3119ce2ab773ac2c7fa38bad963 GIT binary patch literal 1042 zcmV+t1nv8YP)H>GS(DR-|DL9qACOVtQvQ(-<1z)J5|3GPVp_F3V zfLiP*Vzr1CMcmXEREn!Yu__evUPrxCA2;41{LW1{cTN)S5AJg|*%ZE?MVZOHk*ac3 zRRzF{NYN9@a%e(~0C*vGfF?u-(1hp!@O+s8HO3j!08J<-pvF5ust8$A0l@(nq{$46 zHOB`G76gm~04a@Jz{otpa~{AT(^#73rb2)QX)Ym43i3+_Ie5vlKBJ$c$ju){#K+rKnr`T5C@@6!hFCs!+Zl^8hckFZbH`l z`J+hpfZwsV9_f3-LIAuIT%>H*X#(k|Eh4nTcJO1cNs zxPZM;$NUf=?12tp&&Std z08sN?0O4oDW0jGD54PT3^ugAQ>%o?~m+{Zngd;2WXmNvMen}qg{;x7+QO-z7mI8WH2m;l0~=(d*{VE8S$MLj0Kbxaa= zj&<<>gaq9w`r`oz2he@YCGh}O^BuZ(>5T;-T+al$Bh+F62=|hrJ6iCaeLvgSO~Mr` z4-mGK*Cz!&n}_+e^G^OVo@EP{t|UNsmAt-TopJsYVSjUq1MDVY3pcQqK6(rQ$Gt{g z=cpH(@A<1RAE1YWz*7Ge3 z*VOaN1`t;BCjMLi|23G18z5ZEN3j9)J;M380m54L(~b+EZv!V{1L(VpFCzq~54jT& z0@TCdgS6rT=(~y?d>@G4~iIiQa^k$Y>Xjl|sLJ&gg?4l6K zk|@#B3@wqeBnq;!CSqM!GtHRW+0o5y?&aG>UHE@qj{oyK=bY`p^Z7`TNF)-8L?RIn z)R5pj>2%RdjnZO}9?sIjJ~s0N4UAHLP(unEDW)n7oGx;J=a{5iBY~}i(!kGQ9-~aT z!+C6VDGkzT<5k8fHyFfTk$iC_NnRwT?4t*JG5NyA@7%3yBZa+j@`bIfT&-;4EcT|z z7xs=(t?c1A_Uh$}7~`459G3DH-!niuDdsC%_y&6mWQnmn$Zq=Z)6WuR2fMMiS{b2| zb)3W75RWSx*n+)xl`+Qf65V(iVu`}z1?+vNK)8_vUiz7@uvmz_i1~k%<+Nk^TETIGD@oCyG>B2fJT~wL-Wuh=E0~6usGxYA^inj) z3Rkg+R@~YcF9Q>}gy|Ut#Wd1M(Vz@a&Q9Dm%Yg)@eF~0W@snbvGR8)nda06ug_yc2 zQBbVJTZ)+qfFeG^X}t`LV-QnZK{1|Q+)~U^KvZxFQ!7O>@B^mh3Xb=2N-;|zuo$Pf z3~a>owt`~@PM<0iiun`M8W~uQX|KZIAWm_G!kd^rmVvu49aR|2$LTAD!hM*2k%1|g z&L|wd#i>ytFcDLm3{1e(t#G&pr&h`p7^5-u$-rn#0}6|SIBilPVLAht2AQKm!aF#f zq(X&*3AEv~LxqG#a9gHA!hW23h^ugL14*1tQ>DT|BW_11SK(kAZl5zsg@Q7E#_bb| zRVcWL4%|MZM1_KT>BnssF=c>q7O{p#u2KH63@=|$AxqSAhW}jROV%=*(aI;@z{`(R z$pZCs;?&0xwy}mrW^*%@lv1QzVk=%w6W0|`PbYS|Xr@NFK@r>W(!+A4L7Yx9kz%TH zgJQPhZ3koJi8x6zl~ArwL=)ala;IFVBT44EluN9~+Yno*&}FD2Ng&ECmeP;6zj#>x z;|`Jpq+DYj?f5xFy+kb?1g6|$3P0g5K?flyA1LEJazy#ULORF+L9?7s4sjZ z`dg=nZ3NGX*QczyQwj`vc|$kX%>MU4_u27-XQ1Fsx=&8bpK^6=W#{+5{x0v--*iiI zK6_5eHWRkq-woYo`i}j$!>)2&V!wgH0wW@j83QAeoL2*oWZ@_>deZ&>ak+XyvA!1j^LK3P nm_Pheb$}Qopa5qqD6eI%v1Ev>S}gk$=xGK|S3j3^P6N=~j6=*Yqr>mdKI;Vst E0IGsUApigX literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..82972b4e59ebd6648f6132267d70e0eb3ed2645a GIT binary patch literal 878 zcmV-!1CjiRP)V7pmJYSR~eKS{(!oQ$RJCI zh#(`Wz*HnCx`?o&;uIG7G1K&P;oX|`PNO+9d&7SA?b>Vk!28a-KbE2F;qiDp9*@W4 zA)nAvju6=%Q{1JEVs{1RN$`-pMBEjaXOz>dwp+j?3kaedBi~j51FC>zg#T<5FrWzN zB)Gydy95jb3#bfIZjXS0bOZ#G?657!U$-Y~lhF=p@*mTLA+? zKpzFP^9_xkH04gfAV?X#jr(ZKQIi`11Crm)X=RpVzEF{U0fRys^Zwxz$-E+xT>*nm zI&({TLo(O0DPTY+&G|*VRbJ-mYzY{GNjFCcqezAcXG6e{iuCjR%M6lJnHMmyAc4FT zxmu7+P>@*x0}B)wW@n0gJxI=GQoz811pvBO9{47F7xTvmXG*}pA_btIje1tjBWcKt zfPp^{fDtyRc~>$iGCWzFz)}&Mw_o3baZY{@*kY#ubm@z2Vj@S2tpc!1t$kZW_1Y^i zqJ9_ZMbuaFY!yJ=LKYGiQGeSj@Jy}#TtpqVR{-@e<+_NuYO_F_QvHC4>9$$mrc%8| z#JsjyK>Op$M9fE<1tyj1Yemdwn+4)Z^@xaxd4XX3BQ)UpOMFAAUhC4&Xsc5Fpi3XJ zQl)yQi0QCb;Hg@@Uqm(AD^Rc0UPD|&{bj4bu)0-g6j4+5ZfNvFt~(;?fvsE0PPOu8 z`2camPJuomYUOr$tU{5E2U|m|Q}eDODl$B_@o2G+^=W6_W8dL!XJB7MDbr&9|Ag&2 zULT@1MZR7nXI#4AIErM974BRyRWXa?ggcjfWsD&iB;S>5)~&oplAzL+i|z{EkxYjx ztp-($lgtakZZvzGBt|k(%3Wx;+0G+0W~jEm;i-_zOrw#Y&i0nGVlELyCr*>yO@I67 zAx02$>~^{Ba-3?H8(&{i;%@8l4=xgRxA}X3N_X4u$7v?d)qjBaz;U_WcSRu1J?i9Q z*$sgxw>Tubgi_@%07*qoM6N<$ Ef==9+1ONa4 literal 0 HcmV?d00001 diff --git a/res/drawable/circle_alpha.xml b/res/drawable/circle_alpha.xml new file mode 100644 index 000000000..f38e68224 --- /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 000000000..462a8898b --- /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 000000000..1675990f7 --- /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 000000000..1132b7a8d --- /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 000000000..5cc40e123 --- /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 000000000..6611afd96 --- /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 000000000..ed9bb0cf8 --- /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 000000000..f2ed40328 --- /dev/null +++ b/res/layout/webrtc_call_screen.xml @@ -0,0 +1,249 @@ + + + + + + + + + + + + + + + + + + + +