Show who is talking in conf view
This commit is contained in:
parent
e68972794f
commit
38a3dec60f
6 changed files with 39 additions and 8 deletions
BIN
res/drawable/conf_speaking.png
Normal file
BIN
res/drawable/conf_speaking.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
|
@ -23,7 +23,8 @@
|
|||
android:layout_width="wrap_content" android:layout_height="fill_parent"
|
||||
android:layout_centerVertical="true">
|
||||
<TextView android:id="@+id/status_label" style="@style/callee_status" />
|
||||
<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/QoS" android:src="@drawable/stat_sys_signal_0" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" />
|
||||
<ImageView android:id="@+id/callee_status_speeking" style="@style/callee_status" android:src="@drawable/conf_speaking" android:visibility="gone"/>
|
||||
<ImageView android:id="@+id/callee_status_qos" style="@style/callee_status" android:src="@drawable/stat_sys_signal_0" android:visibility="gone"/>
|
||||
<ImageView android:id="@+id/callee_status_paused" style="@style/callee_status" android:src="@drawable/conf_status_paused" android:visibility="gone"/>
|
||||
<ImageView android:id="@+id/callee_status_secured" style="@style/callee_status" android:src="@drawable/conf_secured" android:visibility="gone"/>
|
||||
<ImageView android:id="@+id/callee_status_maybe_secured" style="@style/callee_status" android:src="@drawable/conf_maybe_secured" android:visibility="gone"/>
|
||||
|
|
|
@ -67,6 +67,7 @@ public abstract class AbstractCalleesActivity extends ListActivity implements Li
|
|||
|
||||
private Handler callqualityHandler;
|
||||
private List<View> viewsToUpdateCallQuality;
|
||||
private boolean shouldDisplayWhoIsTalking = false;
|
||||
@Override
|
||||
/**
|
||||
* Called by the child classes AFTER their own onCreate.
|
||||
|
@ -215,6 +216,12 @@ public abstract class AbstractCalleesActivity extends ListActivity implements Li
|
|||
}
|
||||
|
||||
protected final void initCallQualityListener() {
|
||||
final int timeToRefresh;
|
||||
if (shouldDisplayWhoIsTalking)
|
||||
timeToRefresh = 100;
|
||||
else
|
||||
timeToRefresh = 1000;
|
||||
|
||||
callqualityHandler = new Handler();
|
||||
viewsToUpdateCallQuality = new ArrayList<View>();
|
||||
callqualityHandler.postDelayed(new Runnable() {
|
||||
|
@ -227,11 +234,19 @@ public abstract class AbstractCalleesActivity extends ListActivity implements Li
|
|||
LinphoneCall call = (LinphoneCall) v.getTag();
|
||||
float newQuality = call.getCurrentQuality();
|
||||
updateQualityOfSignalIcon(v, newQuality);
|
||||
|
||||
// We also use this handler to display the ones who speaks
|
||||
ImageView speaking = (ImageView) v.findViewById(R.id.callee_status_speeking);
|
||||
if (shouldDisplayWhoIsTalking && call.getPlayVolume() >= -20) {
|
||||
speaking.setVisibility(View.VISIBLE);
|
||||
} else if (speaking.getVisibility() != View.GONE) {
|
||||
speaking.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
callqualityHandler.postDelayed(this, 1000);
|
||||
callqualityHandler.postDelayed(this, timeToRefresh);
|
||||
}
|
||||
},1000);
|
||||
},timeToRefresh);
|
||||
}
|
||||
|
||||
protected final void registerCallQualityListener(final View v, final LinphoneCall call) {
|
||||
|
@ -241,6 +256,10 @@ public abstract class AbstractCalleesActivity extends ListActivity implements Li
|
|||
v.setTag(call);
|
||||
viewsToUpdateCallQuality.add(v);
|
||||
}
|
||||
|
||||
protected final void registerCallSpeakerListener() {
|
||||
shouldDisplayWhoIsTalking = true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -282,7 +301,10 @@ public abstract class AbstractCalleesActivity extends ListActivity implements Li
|
|||
|
||||
void updateQualityOfSignalIcon(View v, float quality)
|
||||
{
|
||||
ImageView qos = (ImageView) v.findViewById(R.id.QoS);
|
||||
ImageView qos = (ImageView) v.findViewById(R.id.callee_status_qos);
|
||||
if (!(qos.getVisibility() == View.VISIBLE)) {
|
||||
qos.setVisibility(View.VISIBLE);
|
||||
}
|
||||
if (quality >= 4) // Good Quality
|
||||
{
|
||||
qos.setImageDrawable(getResources().getDrawable(R.drawable.stat_sys_signal_4));
|
||||
|
|
|
@ -96,12 +96,15 @@ public class ConferenceDetailsActivity extends AbstractCalleesActivity {
|
|||
}
|
||||
});
|
||||
|
||||
setVisibility(v, R.id.callee_status_qos, true);
|
||||
|
||||
// May be greatly sped up using a drawable cache
|
||||
ImageView pictureView = (ImageView) v.findViewById(R.id.picture);
|
||||
setCalleePicture(pictureView, address);
|
||||
|
||||
registerCallDurationTimer(v, call);
|
||||
registerCallQualityListener(v, call);
|
||||
registerCallSpeakerListener();
|
||||
|
||||
return v;
|
||||
}
|
||||
|
|
|
@ -456,7 +456,7 @@ public class IncallActivity extends AbstractCalleesActivity implements
|
|||
|
||||
boolean statusPaused = state== State.Paused || state == State.PausedByRemote;
|
||||
setVisibility(v, R.id.callee_status_paused, statusPaused);
|
||||
setVisibility(v, R.id.QoS, !statusPaused);
|
||||
setVisibility(v, R.id.callee_status_qos, !statusPaused);
|
||||
|
||||
final OnLongClickListener showCallActionsLongListener = new OnLongClickListener() {
|
||||
public boolean onLongClick(View v) {
|
||||
|
|
|
@ -147,4 +147,9 @@ class LinphoneCallImpl implements LinphoneCall {
|
|||
public String toString() {
|
||||
return "Call " + nativePtr;
|
||||
}
|
||||
|
||||
private native float getPlayVolume(long nativePtr);
|
||||
public float getPlayVolume() {
|
||||
return getPlayVolume(nativePtr);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue