Merge branch 'video' of git.linphone.org:linphone-android-private into video
This commit is contained in:
commit
29fb96f6a0
9 changed files with 47 additions and 47 deletions
|
@ -25,13 +25,13 @@
|
|||
android:layout_width="fill_parent"></EditText>
|
||||
<org.linphone.component.ToggleImageButton
|
||||
android:id="@+id/mic_mute_button" android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content" toggled="@drawable/mic_muted"
|
||||
untoggled="@drawable/mic_active" android:layout_weight="0.5"
|
||||
android:layout_width="wrap_content" android:layout_weight="0.5"
|
||||
checked="@drawable/mic_muted" unchecked="@drawable/mic_active"
|
||||
android:layout_gravity="left|center_vertical" />
|
||||
<org.linphone.component.ToggleImageButton
|
||||
android:id="@+id/speaker_button" android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content" toggled="@drawable/speaker_32_on"
|
||||
untoggled="@drawable/speaker_32_off" android:layout_weight="0.5"
|
||||
android:layout_width="wrap_content" android:layout_weight="0.5"
|
||||
checked="@drawable/speaker_32_on" unchecked="@drawable/speaker_32_off"
|
||||
android:layout_gravity="right|center_vertical" />
|
||||
</FrameLayout>
|
||||
</LinearLayout>
|
||||
|
|
|
@ -26,11 +26,11 @@
|
|||
></EditText>
|
||||
<org.linphone.component.ToggleImageButton android:id="@+id/mic_mute_button"
|
||||
android:layout_height="wrap_content" android:layout_width="wrap_content"
|
||||
toggled="@drawable/mic_muted" untoggled="@drawable/mic_active"
|
||||
checked="@drawable/mic_muted" unchecked="@drawable/mic_active"
|
||||
android:layout_gravity="left|center_vertical"/>
|
||||
<org.linphone.component.ToggleImageButton android:id="@+id/speaker_button"
|
||||
android:layout_height="wrap_content" android:layout_width="wrap_content"
|
||||
toggled="@drawable/speaker_32_on" untoggled="@drawable/speaker_32_off"
|
||||
checked="@drawable/speaker_32_on" unchecked="@drawable/speaker_32_off"
|
||||
android:layout_gravity="right|center_vertical"/>
|
||||
|
||||
</FrameLayout>
|
||||
|
|
|
@ -249,17 +249,14 @@ public class DialerActivity extends Activity implements LinphoneCoreListener {
|
|||
mInCallControlRow.setVisibility(View.VISIBLE);
|
||||
mAddressLayout.setVisibility(View.GONE);
|
||||
mInCallAddressLayout.setVisibility(View.VISIBLE);
|
||||
mMute.setChecked(!lLinphoneCore.isMicMuted());
|
||||
|
||||
String DisplayName = lLinphoneCore.getRemoteAddress().getDisplayName();
|
||||
if (DisplayName!=null) {
|
||||
mDisplayNameView.setText(DisplayName);
|
||||
} else {
|
||||
mDisplayNameView.setText(lLinphoneCore.getRemoteAddress().getUserName());
|
||||
}
|
||||
if ((Integer.parseInt(Build.VERSION.SDK) <=4 && mAudioManager.getMode() == AudioManager.MODE_NORMAL)
|
||||
|| Integer.parseInt(Build.VERSION.SDK) >4 &&mAudioManager.isSpeakerphoneOn()) {
|
||||
mSpeaker.setChecked(true);
|
||||
}
|
||||
configureMuteButtons();
|
||||
mWakeLock.acquire();
|
||||
}
|
||||
}
|
||||
|
@ -271,9 +268,9 @@ public class DialerActivity extends Activity implements LinphoneCoreListener {
|
|||
public void onCheckedChanged(ToggleImageButton button, boolean isChecked) {
|
||||
LinphoneCore lc = LinphoneService.instance().getLinphoneCore();
|
||||
if (isChecked) {
|
||||
lc.muteMic(false);
|
||||
} else {
|
||||
lc.muteMic(true);
|
||||
} else {
|
||||
lc.muteMic(false);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -497,6 +494,8 @@ public class DialerActivity extends Activity implements LinphoneCoreListener {
|
|||
mDisplayNameView.setText(lc.getRemoteAddress().toString());
|
||||
}
|
||||
}
|
||||
configureMuteButtons();
|
||||
|
||||
if (mSpeaker.isChecked()) {
|
||||
routeAudioToSpeaker();
|
||||
} else {
|
||||
|
@ -504,6 +503,15 @@ public class DialerActivity extends Activity implements LinphoneCoreListener {
|
|||
}
|
||||
setVolumeControlStream(AudioManager.STREAM_VOICE_CALL);
|
||||
}
|
||||
private void configureMuteButtons() {
|
||||
mMute.setChecked(LinphoneService.instance().getLinphoneCore().isMicMuted());
|
||||
if ((Integer.parseInt(Build.VERSION.SDK) <=4 && mAudioManager.getMode() == AudioManager.MODE_NORMAL)
|
||||
|| Integer.parseInt(Build.VERSION.SDK) >4 &&mAudioManager.isSpeakerphoneOn()) {
|
||||
mSpeaker.setChecked(true);
|
||||
} else {
|
||||
mSpeaker.setChecked(false);
|
||||
}
|
||||
}
|
||||
private void exitCallMode() {
|
||||
mCallControlRow.setVisibility(View.VISIBLE);
|
||||
mInCallControlRow.setVisibility(View.GONE);
|
||||
|
@ -512,13 +520,13 @@ public class DialerActivity extends Activity implements LinphoneCoreListener {
|
|||
mCall.setEnabled(true);
|
||||
mHangup.setEnabled(false);
|
||||
setVolumeControlStream(AudioManager.USE_DEFAULT_STREAM_TYPE);
|
||||
mMute.setChecked(true);
|
||||
mSpeaker.setChecked(false);
|
||||
mDecline.setEnabled(false);
|
||||
if (LinphoneService.instance().getLinphoneCore().isVideoEnabled()) {
|
||||
finishActivity(VIDEO_VIEW_ACTIVITY);
|
||||
}
|
||||
if (mWakeLock.isHeld())mWakeLock.release();
|
||||
mSpeaker.setChecked(false);
|
||||
routeAudioToReceiver();
|
||||
}
|
||||
private void routeAudioToSpeaker() {
|
||||
if (Integer.parseInt(Build.VERSION.SDK) <= 4 /*<donut*/) {
|
||||
|
|
|
@ -55,9 +55,9 @@ public class VideoCallActivity extends Activity {
|
|||
|
||||
private void rewriteToggleCameraItem(MenuItem item) {
|
||||
if (recordManager.isRecording()) {
|
||||
item.setTitle(getString(R.string.menu_videocall_toggle_camera_enable));
|
||||
} else {
|
||||
item.setTitle(getString(R.string.menu_videocall_toggle_camera_disable));
|
||||
} else {
|
||||
item.setTitle(getString(R.string.menu_videocall_toggle_camera_enable));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -29,8 +29,8 @@ import android.widget.ImageButton;
|
|||
|
||||
/**
|
||||
* Image button storing a checked state to display alternating drawables.
|
||||
* The "toggled" drawable is displayed when button is down / checked.
|
||||
* The "untoggled" drawable is displayed when button is up / unchecked.
|
||||
* The "checked" drawable is displayed when button is down / checked.
|
||||
* The "unchecked" drawable is displayed when button is up / unchecked.
|
||||
*
|
||||
* @author Guillaume Beraudo
|
||||
*
|
||||
|
@ -38,14 +38,14 @@ import android.widget.ImageButton;
|
|||
public class ToggleImageButton extends ImageButton implements OnClickListener {
|
||||
private static final String namespace = null;
|
||||
private boolean checked;
|
||||
private Drawable on;
|
||||
private Drawable off;
|
||||
private Drawable stateChecked;
|
||||
private Drawable stateUnChecked;
|
||||
private OnCheckedChangeListener onCheckedChangeListener;
|
||||
|
||||
public ToggleImageButton(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
on = getResources().getDrawable(attrs.getAttributeResourceValue(namespace, "toggled", -1));
|
||||
off = getResources().getDrawable(attrs.getAttributeResourceValue(namespace, "untoggled", -1));
|
||||
stateChecked = getResources().getDrawable(attrs.getAttributeResourceValue(namespace, "checked", -1));
|
||||
stateUnChecked = getResources().getDrawable(attrs.getAttributeResourceValue(namespace, "unchecked", -1));
|
||||
setBackgroundColor(Color.TRANSPARENT);
|
||||
|
||||
setOnClickListener(this);
|
||||
|
@ -65,7 +65,7 @@ public class ToggleImageButton extends ImageButton implements OnClickListener {
|
|||
|
||||
|
||||
private void handleCheckChanged() {
|
||||
setImageDrawable(checked?on:off);
|
||||
setImageDrawable(checked?stateChecked:stateUnChecked);
|
||||
requestLayout();
|
||||
invalidate();
|
||||
if (onCheckedChangeListener != null) onCheckedChangeListener.onCheckedChanged(this, checked);
|
||||
|
|
|
@ -52,7 +52,8 @@ public abstract class AndroidCameraRecord {
|
|||
public void startPreview() { // FIXME throws exception?
|
||||
if (previewStarted) {
|
||||
Log.w(tag, "Already started");
|
||||
return;
|
||||
throw new RuntimeException("Video recorder already started");
|
||||
// return
|
||||
}
|
||||
|
||||
if (params.surfaceView.getVisibility() != SurfaceView.VISIBLE) {
|
||||
|
@ -91,7 +92,7 @@ public abstract class AndroidCameraRecord {
|
|||
}
|
||||
}
|
||||
|
||||
onSettingParameters(parameters);
|
||||
onSettingCameraParameters(parameters);
|
||||
camera.setParameters(parameters);
|
||||
|
||||
|
||||
|
@ -114,33 +115,28 @@ public abstract class AndroidCameraRecord {
|
|||
previewStarted = true;
|
||||
|
||||
|
||||
|
||||
// Register callback to get capture buffer
|
||||
if (storedPreviewCallback != null) {
|
||||
lowLevelSetPreviewCallback(camera, storedPreviewCallback);
|
||||
}
|
||||
lowLevelSetPreviewCallback(camera, storedPreviewCallback);
|
||||
|
||||
|
||||
onCameraStarted(camera);
|
||||
onPreviewStarted(camera);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
protected void onSettingParameters(Parameters parameters) {
|
||||
|
||||
}
|
||||
protected void onSettingCameraParameters(Parameters parameters) {}
|
||||
|
||||
/**
|
||||
* Hook.
|
||||
* @param camera
|
||||
*/
|
||||
public void onCameraStarted(Camera camera) {}
|
||||
public void onPreviewStarted(Camera camera) {}
|
||||
|
||||
public void storePreviewCallBack(PreviewCallback cb) {
|
||||
this.storedPreviewCallback = cb;
|
||||
if (camera == null) {
|
||||
Log.w(tag, "Capture camera not ready, storing callback");
|
||||
this.storedPreviewCallback = cb;
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -46,18 +46,14 @@ public class AndroidCameraRecordBufferedImpl extends AndroidCameraRecordImpl {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void onCameraStarted(Camera camera) {
|
||||
super.onCameraStarted(camera);
|
||||
public void onPreviewStarted(Camera camera) {
|
||||
super.onPreviewStarted(camera);
|
||||
|
||||
Size s = camera.getParameters().getPreviewSize();
|
||||
int wishedBufferSize = s.height * s.width * 3 / 2;
|
||||
|
||||
camera.addCallbackBuffer(new byte[wishedBufferSize]);
|
||||
camera.addCallbackBuffer(new byte[wishedBufferSize]);
|
||||
/*
|
||||
for (int i=1; i < 30; i++) {
|
||||
camera.addCallbackBuffer(new byte[wishedBufferSize]);
|
||||
}*/
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -67,8 +63,8 @@ public class AndroidCameraRecordBufferedImpl extends AndroidCameraRecordImpl {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected void onSettingParameters(Parameters parameters) {
|
||||
super.onSettingParameters(parameters);
|
||||
protected void onSettingCameraParameters(Parameters parameters) {
|
||||
super.onSettingCameraParameters(parameters);
|
||||
// Only on v8 hardware
|
||||
camera.setDisplayOrientation(90 * orientationCode);
|
||||
}
|
||||
|
|
|
@ -34,11 +34,11 @@ public class AndroidCameraRecordImpl extends AndroidCameraRecord implements Prev
|
|||
private long filterCtxPtr;
|
||||
private double timeElapsedBetweenFrames = 0;
|
||||
private long lastFrameTime = 0;
|
||||
private final long expectedTimeBetweenFrames;
|
||||
private final double expectedTimeBetweenFrames;
|
||||
|
||||
public AndroidCameraRecordImpl(RecorderParams parameters) {
|
||||
super(parameters);
|
||||
expectedTimeBetweenFrames = 1l / Math.round(parameters.fps);
|
||||
expectedTimeBetweenFrames = 1d / Math.round(parameters.fps);
|
||||
filterCtxPtr = parameters.filterDataNativePtr;
|
||||
|
||||
storePreviewCallBack(this);
|
||||
|
|
|
@ -138,7 +138,7 @@ public class AndroidCameraRecordManager {
|
|||
|
||||
parameters.rotation = rotation;
|
||||
parameters.surfaceView = surfaceView;
|
||||
if (version > 8) {
|
||||
if (version >= 8) {
|
||||
recorder = new AndroidCameraRecordBufferedImpl(parameters);
|
||||
} else {
|
||||
recorder = new AndroidCameraRecordImpl(parameters);
|
||||
|
|
Loading…
Reference in a new issue