Merge branch 'video' of git.linphone.org:linphone-android-private into video

This commit is contained in:
Simon Morlat 2010-11-29 15:07:15 +01:00
commit 29fb96f6a0
9 changed files with 47 additions and 47 deletions

View file

@ -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>

View file

@ -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>

View file

@ -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*/) {

View file

@ -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));
}
}

View file

@ -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);

View file

@ -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;
}

View file

@ -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);
}

View file

@ -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);

View file

@ -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);