From bd71366e11ed7b33c8b5548ca90f24f2cda6602b Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 30 Sep 2011 13:54:06 +0200 Subject: [PATCH] Display an icon during a video call to show the signal strength --- res/drawable/stat_sys_signal_0.png | Bin 0 -> 587 bytes res/drawable/stat_sys_signal_1.png | Bin 0 -> 597 bytes res/drawable/stat_sys_signal_2.png | Bin 0 -> 595 bytes res/drawable/stat_sys_signal_3.png | Bin 0 -> 594 bytes res/drawable/stat_sys_signal_4.png | Bin 0 -> 532 bytes res/layout-land/videocall.xml | 9 ++++ res/layout/videocall.xml | 10 ++++- src/org/linphone/VideoCallActivity.java | 55 ++++++++++++++++++++++++ 8 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 res/drawable/stat_sys_signal_0.png create mode 100644 res/drawable/stat_sys_signal_1.png create mode 100644 res/drawable/stat_sys_signal_2.png create mode 100644 res/drawable/stat_sys_signal_3.png create mode 100644 res/drawable/stat_sys_signal_4.png mode change 100644 => 100755 res/layout-land/videocall.xml mode change 100644 => 100755 res/layout/videocall.xml mode change 100644 => 100755 src/org/linphone/VideoCallActivity.java diff --git a/res/drawable/stat_sys_signal_0.png b/res/drawable/stat_sys_signal_0.png new file mode 100644 index 0000000000000000000000000000000000000000..cb7b7b34bf087a626d8b46c388b69f05816f64f4 GIT binary patch literal 587 zcmV-R0<`^!P)P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz?MXyIRCwCFR!eFEK@hDOM{yydqF_vL zAud!D6+v7Gxr}GXA##aqy+**5AoxSXg{wpY3U2+Ic@5Qc#u?1`D`=a3JzcNrRe#iu z$0Oa_w1<(@>-E?9eExno9ICf)s_S|?7K^>LTCGov4g7>cp{5DO!{IP_z22(`w%aW& zm&>ZzH_hRbBnbwCalhY>2x!0GU*tTUPE#tCqUm%>lgWfut5uxm1PLTFr4sE@OD2Z1X0sPrlUl9T$mjDPhGE2S@y44{{S1f0#^e93+}nNy Z7ywM)IYKBIqP)P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz_en%SRCwClR?TX{KoFk9C?X;X3aKp~ z#Dj{0C-ETo20n$)&=>I5m*~}#FW{-*DIkc7hzC!t6coJrZ}(f+u!#nZu|0HQ9rBr( zZ|2+C-6*HiiGF*i^an%3PqkXDEf$Nn7?76bKIEJl96 z-xI-Zx1-f+Rc5xu9-mB-NF<^MgF$3Khr{8n;F(N@(&;qKW;2>jr?g(Lb&FhBd?pp2 z_l{I5#r;7xnM_D-C{2`zD!dE?g$m(tn8(9>IEhdJWR4_?qIe?N@AurIn(cP$og|;n zQ#PCB+K(=}5wXBX0Az+?T+I3sCMT_mHNk8)n=~4Y zxD^J;kZ3w>;pF|j-BOl`8A)F$-np{`Vn9Nl_xizt-nD300000NkvXXu0mjf_UI0I literal 0 HcmV?d00001 diff --git a/res/drawable/stat_sys_signal_2.png b/res/drawable/stat_sys_signal_2.png new file mode 100644 index 0000000000000000000000000000000000000000..fd543636c9d5c71f3e3557e6552b104b1cfa3e11 GIT binary patch literal 595 zcmV-Z0<8UsP)P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz^+`lQRCwClR=sKhK@i?MPq7eDP`H?2 zAr>muVj-lqxu@_M(pcK%CDK~?0#*S*2nZq~Vquj?K*833v){rTdzafJ=b0247zaOg z=bM?GojvV*KC|Bzo&A9r_^H)u_siw-@pL*>t`fPfzogUYhhDGuY?CAsi8cq#WHQOZ z;cy^={eI8Z>ve_OHvfBLlf>h3Ga8K|0(LweFLIvG=UFb7WApi(&1N&U*=$Tlxp4Tr zR6;M6Y&I+QgKRpTGP$7)N)cHE5jaH^VzHR;2faE8RRLs55>3+rksJ;OVUf*lw+l{E zDwSBFP!P4BOeT&@V3nEp5p)qEFBXezI2`^g6M%lk3mr0VeX*CEe_Jj;B;*i#+$1O$ zFv`rHUEA$esm*4S_4|Ec34;UDuP_G*G6B1n*6Ve#5SB1R4W+2PFu7bhoe8wnYO(Qn zEG%K6P)ICaBGTA0R4r_&K&x7)Qhdtsx|NR0HsVBm?t zmt1ZQ7b=s^M~qwWvSRG4R;#zgVsU4mNwr#Sl*{EO!!XQiyz#tL@BAt> h9GU!!PofV21_1LdQ+v_>@umO(002ovPDHLkV1g|S2jTz# literal 0 HcmV?d00001 diff --git a/res/drawable/stat_sys_signal_3.png b/res/drawable/stat_sys_signal_3.png new file mode 100644 index 0000000000000000000000000000000000000000..6c4873af3bdf0566ff9b294011217c0fa8cb1feb GIT binary patch literal 594 zcmV-Y0P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz^hrcPRCwClR=a8fQ4pP7SFsRLP}rDg zA(qy`LI`4I<5&0v7HKT)QuqsLt^5J82na&JMl8g_Dv^MKt#7mE!Yp^!?D|-fA{WNN zVeXuJ&g{-z<#0IAZ!eYpU}^Zt=krgq+3aP%-#^~uDF>K3`s zd_yW>*RE75CH4bsG#ZioKxs@7EW9ifg$kiiNYsPf9E4Q>m?MayD4syJ+pX|mvtF;g zgH)?kDi({>>2#>kXjquQ+nJ~g0`zmOP$-Da@EijZm?IMeFBvb~KX~kAnNG@e?F_Sn zKrUuxk!!VDIa;k&qh7BkJjdk4F_sHv&pX+ZQmG^o;W=h!0s|8mGdXHJC)VqA8V-lT zbIj-Si9~oe5PRe0JPVU@xh#V4ZUx<#xHcY7ihOE0NuIDyF}d-G$#c+rgzaO+e&SOx zfS?BV
    >;*CclSnz3h^EojTP9~ES2n3E^2~{2|tyW6}+wHbF8qSRk1_LqX`~AMC zB}=OSF_B1o#A2~~TsS}Je#yekipy(0pMOrL(+5+oTrOA1X0xxFrs=o1;|=-0j8~yz gVe&6NiM|CG00U?;Z&CX87ytkO07*qoM6N<$f^ggiLjV8( literal 0 HcmV?d00001 diff --git a/res/drawable/stat_sys_signal_4.png b/res/drawable/stat_sys_signal_4.png new file mode 100644 index 0000000000000000000000000000000000000000..a3320cbb4fd216a1215364d7a59856dee0e1fd32 GIT binary patch literal 532 zcmV+v0_**WP)P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzwn;=mRCwCFRy~WtKoFh81gu0sA*WYa zTZ@QrSlaj_g01Z}Dedkz2-jMPz14vzTy1T2CkG0)YW%o;3mev$Xk4QUlOd1Eyq%Ao zjdna9>CsDj8cD5Ids{3PABV%C9EVd~*S~YQ-1}%W`og<`M>?JEG0@6nGGvmaFCIxMm9mn_Bz8di{a(qrZQE3>R%tvQQ@7it^?Gf2k>P=qu~gA+w^No% zrNSLT!Ez&6p2Ry z_NY>?*ZIfL0=pE6A;4QszFcHKK`03T)$tNWg0?4=Ei7p#?D$Av&lhdRfiV~k4}+y?eBeI7Zt<& zI%{G7SPAQzsMr|^+6`j`V;)h!K6g7l|Bu_u;Q4)Ed77%D72pcxAN%qFTem% Wt1S+j0li270000 + + + diff --git a/res/layout/videocall.xml b/res/layout/videocall.xml old mode 100644 new mode 100755 index c05381913..268cf08d6 --- a/res/layout/videocall.xml +++ b/res/layout/videocall.xml @@ -26,5 +26,13 @@ android:layout_marginBottom="15dip" android:layout_marginRight="15dip" > - + + + \ No newline at end of file diff --git a/src/org/linphone/VideoCallActivity.java b/src/org/linphone/VideoCallActivity.java old mode 100644 new mode 100755 index 34e387f78..9474ada03 --- a/src/org/linphone/VideoCallActivity.java +++ b/src/org/linphone/VideoCallActivity.java @@ -23,11 +23,15 @@ package org.linphone; import org.linphone.core.LinphoneCall; import org.linphone.core.Log; import org.linphone.mediastream.video.AndroidVideoWindowImpl; +import org.linphone.mediastream.video.capture.AndroidVideoApi5JniWrapper; import org.linphone.mediastream.video.capture.hwconf.AndroidCameraConfiguration; import android.content.Context; +import android.hardware.Camera; +import android.hardware.Camera.CameraInfo; import android.opengl.GLSurfaceView; import android.os.Bundle; +import android.os.Handler; import android.os.PowerManager; import android.os.PowerManager.WakeLock; import android.view.Menu; @@ -36,6 +40,8 @@ import android.view.MenuItem; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; +import android.view.View.OnClickListener; +import android.widget.ImageView; /** * For Android SDK >= 5 @@ -47,6 +53,7 @@ public class VideoCallActivity extends SoftVolumeActivity { private SurfaceView mVideoCaptureViewReady; public static boolean launched = false; private WakeLock mWakeLock; + private Handler refreshHandler = new Handler(); AndroidVideoWindowImpl androidVideoWindowImpl; @@ -111,6 +118,54 @@ public class VideoCallActivity extends SoftVolumeActivity { PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE); mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK|PowerManager.ON_AFTER_RELEASE,Log.TAG); mWakeLock.acquire(); + + Runnable runnable = new Runnable() { + public void run() { + while (launched && LinphoneManager.getLc().isIncall()) + { + refreshHandler.post(new Runnable() { + public void run() { + int oldQuality = 0; + float newQuality = LinphoneManager.getLc().getCurrentCall().getCurrentQuality(); + if ((int) newQuality != oldQuality) + updateQualityOfSignalIcon(newQuality); + } + }); + + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + }; + new Thread(runnable).start(); + } + + void updateQualityOfSignalIcon(float quality) + { + ImageView qos = (ImageView) findViewById(R.id.QoS); + if (quality >= 4) // Good Quality + { + qos.setImageDrawable(getResources().getDrawable(R.drawable.stat_sys_signal_4)); + } + else if (quality >= 3) // Average quality + { + qos.setImageDrawable(getResources().getDrawable(R.drawable.stat_sys_signal_3)); + } + else if (quality >= 2) // Low quality + { + qos.setImageDrawable(getResources().getDrawable(R.drawable.stat_sys_signal_2)); + } + else if (quality >= 1) // Very low quality + { + qos.setImageDrawable(getResources().getDrawable(R.drawable.stat_sys_signal_1)); + } + else // Worst quality + { + qos.setImageDrawable(getResources().getDrawable(R.drawable.stat_sys_signal_0)); + } } void updatePreview(boolean cameraCaptureEnabled) {