Fix from Jehan for sound issue in ICS

This commit is contained in:
Sylvain Berfini 2012-07-05 10:13:13 +02:00
parent aacf792f44
commit 7eb4e1be47
3 changed files with 27 additions and 17 deletions

View file

@ -33,6 +33,7 @@ import android.os.Handler;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction; import android.support.v4.app.FragmentTransaction;
import android.view.KeyEvent;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import android.view.animation.Animation; import android.view.animation.Animation;
@ -402,4 +403,11 @@ public class InCallActivity extends FragmentActivity implements
setCallControlsVisibleAndRemoveCallbacks(); setCallControlsVisibleAndRemoveCallbacks();
} }
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (LinphoneUtils.onKeyVolumeAdjust(keyCode)) return true;
if (LinphoneUtils.onKeyBackGoHome(this, keyCode, event)) return true;
return super.onKeyDown(keyCode, event);
}
} }

View file

@ -93,6 +93,7 @@ import android.media.AudioManager;
import android.media.MediaPlayer; import android.media.MediaPlayer;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.NetworkInfo; import android.net.NetworkInfo;
import android.os.Build;
import android.os.PowerManager; import android.os.PowerManager;
import android.os.PowerManager.WakeLock; import android.os.PowerManager.WakeLock;
import android.os.Vibrator; import android.os.Vibrator;
@ -905,8 +906,6 @@ public final class LinphoneManager implements LinphoneCoreListener {
public void textReceived(LinphoneCore lc, LinphoneChatRoom cr, public void textReceived(LinphoneCore lc, LinphoneChatRoom cr,
LinphoneAddress from, String message) { LinphoneAddress from, String message) {
//TODO : Remove
Log.e("LinphoneManager, Message received from " + from + ": " + message);
for (LinphoneSimpleListener listener : getSimpleListeners(LinphoneActivity.class)) { for (LinphoneSimpleListener listener : getSimpleListeners(LinphoneActivity.class)) {
((LinphoneActivity) listener).onMessageReceived(from, message); ((LinphoneActivity) listener).onMessageReceived(from, message);
} }
@ -998,7 +997,7 @@ public final class LinphoneManager implements LinphoneCoreListener {
if (state == State.Connected) { if (state == State.Connected) {
if (Hacks.needSoftvolume() || sLPref.useSoftvolume()) { if (Hacks.needSoftvolume() || sLPref.useSoftvolume()) {
adjustSoftwareVolume(0); // Synchronize adjustVolume(0); // Synchronize
} }
} }
@ -1227,15 +1226,19 @@ public final class LinphoneManager implements LinphoneCoreListener {
return extractADisplayName(r, linphoneAddress); return extractADisplayName(r, linphoneAddress);
} }
public void adjustSoftwareVolume(int i) { public void adjustVolume(int i) {
int oldVolume = mAudioManager.getStreamVolume(LINPHONE_VOLUME_STREAM); if (Build.VERSION.SDK_INT<15) {
int maxVolume = mAudioManager.getStreamMaxVolume(LINPHONE_VOLUME_STREAM); int oldVolume = mAudioManager.getStreamVolume(LINPHONE_VOLUME_STREAM);
int maxVolume = mAudioManager.getStreamMaxVolume(LINPHONE_VOLUME_STREAM);
int nextVolume = oldVolume +i; int nextVolume = oldVolume +i;
if (nextVolume > maxVolume) nextVolume = maxVolume; if (nextVolume > maxVolume) nextVolume = maxVolume;
if (nextVolume < 0) nextVolume = 0; if (nextVolume < 0) nextVolume = 0;
mLc.adjustSoftwareVolume((nextVolume - maxVolume)* dbStep); mLc.adjustSoftwareVolume((nextVolume - maxVolume)* dbStep);
} else
// starting from ICS, volume must be adjusted by the application, at least for STREAM_VOICE_CALL volume stream
mAudioManager.adjustStreamVolume(LINPHONE_VOLUME_STREAM, i<0?AudioManager.ADJUST_LOWER:AudioManager.ADJUST_RAISE, 0);
} }
public static Boolean isProximitySensorNearby(final SensorEvent event) { public static Boolean isProximitySensorNearby(final SensorEvent event) {

View file

@ -28,15 +28,13 @@ import java.net.URL;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Set;
import org.linphone.core.LinphoneAddress; import org.linphone.core.LinphoneAddress;
import org.linphone.core.LinphoneCall; import org.linphone.core.LinphoneCall;
import org.linphone.core.LinphoneCall.State;
import org.linphone.core.LinphoneCore; import org.linphone.core.LinphoneCore;
import org.linphone.core.Log; import org.linphone.core.Log;
import org.linphone.core.LinphoneCall.State;
import org.linphone.mediastream.Version; import org.linphone.mediastream.Version;
import org.linphone.mediastream.video.capture.hwconf.Hacks; import org.linphone.mediastream.video.capture.hwconf.Hacks;
@ -47,6 +45,7 @@ import android.content.Intent;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.BitmapFactory; import android.graphics.BitmapFactory;
import android.net.Uri; import android.net.Uri;
import android.os.Build;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
@ -74,9 +73,9 @@ public final class LinphoneUtils {
return true; return true;
} }
public static boolean onKeyVolumeSoftAdjust(int keyCode) { public static boolean onKeyVolumeAdjust(int keyCode) {
if (!((keyCode == KeyEvent.KEYCODE_VOLUME_UP || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) if (!((keyCode == KeyEvent.KEYCODE_VOLUME_UP || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)
&& Hacks.needSoftvolume())) { && (Hacks.needSoftvolume())|| Build.VERSION.SDK_INT >= 15)) {
return false; // continue return false; // continue
} }
@ -84,9 +83,9 @@ public final class LinphoneUtils {
Log.i("Couldn't change softvolume has service is not running"); Log.i("Couldn't change softvolume has service is not running");
return true; return true;
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) { } else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
LinphoneManager.getInstance().adjustSoftwareVolume(1); LinphoneManager.getInstance().adjustVolume(1);
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) { } else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
LinphoneManager.getInstance().adjustSoftwareVolume(-1); LinphoneManager.getInstance().adjustVolume(-1);
} }
return preventVolumeBarToDisplay; return preventVolumeBarToDisplay;
} }