diff --git a/res/drawable/stat_sys_signal_0.png b/res/drawable/stat_sys_signal_0.png new file mode 100644 index 000000000..cb7b7b34b Binary files /dev/null and b/res/drawable/stat_sys_signal_0.png differ diff --git a/res/drawable/stat_sys_signal_1.png b/res/drawable/stat_sys_signal_1.png new file mode 100644 index 000000000..5376e9258 Binary files /dev/null and b/res/drawable/stat_sys_signal_1.png differ diff --git a/res/drawable/stat_sys_signal_2.png b/res/drawable/stat_sys_signal_2.png new file mode 100644 index 000000000..fd543636c Binary files /dev/null and b/res/drawable/stat_sys_signal_2.png differ diff --git a/res/drawable/stat_sys_signal_3.png b/res/drawable/stat_sys_signal_3.png new file mode 100644 index 000000000..6c4873af3 Binary files /dev/null and b/res/drawable/stat_sys_signal_3.png differ diff --git a/res/drawable/stat_sys_signal_4.png b/res/drawable/stat_sys_signal_4.png new file mode 100644 index 000000000..a3320cbb4 Binary files /dev/null and b/res/drawable/stat_sys_signal_4.png differ diff --git a/res/layout-land/videocall.xml b/res/layout-land/videocall.xml old mode 100644 new mode 100755 index c73a3f935..2d39b8f84 --- a/res/layout-land/videocall.xml +++ b/res/layout-land/videocall.xml @@ -25,5 +25,14 @@ android:layout_alignParentRight="true" android:layout_marginTop="15dip" android:layout_marginRight="15dip" > + + + 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) {