Fixed vibration issue on Android 10 when app in background
This commit is contained in:
parent
e476b18d21
commit
9b966f70e4
5 changed files with 35 additions and 9 deletions
|
@ -39,7 +39,11 @@ import android.telephony.TelephonyManager;
|
|||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.CheckBox;
|
||||
|
||||
import java.io.File;
|
||||
import java.sql.Timestamp;
|
||||
import java.util.Date;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
import org.linphone.assistant.PhoneAccountLinkingAssistantActivity;
|
||||
import org.linphone.call.AndroidAudioManager;
|
||||
import org.linphone.call.CallManager;
|
||||
|
@ -67,12 +71,6 @@ import org.linphone.utils.LinphoneUtils;
|
|||
import org.linphone.utils.MediaScanner;
|
||||
import org.linphone.utils.PushNotificationUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.sql.Timestamp;
|
||||
import java.util.Date;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
|
||||
/** Handles Linphone's Core lifecycle */
|
||||
public class LinphoneManager implements SensorEventListener {
|
||||
private final String mBasePath;
|
||||
|
|
|
@ -355,8 +355,7 @@ public class AndroidAudioManager {
|
|||
|| mAudioManager.getRingerMode() == AudioManager.RINGER_MODE_NORMAL)
|
||||
&& mVibrator != null
|
||||
&& LinphonePreferences.instance().isIncomingCallVibrationEnabled()) {
|
||||
long[] patern = {0, 1000, 1000};
|
||||
mVibrator.vibrate(patern, 1);
|
||||
Compatibility.vibrate(mVibrator);
|
||||
}
|
||||
if (mRingerPlayer == null) {
|
||||
requestAudioFocus(STREAM_RING);
|
||||
|
|
|
@ -26,6 +26,7 @@ import android.app.PendingIntent;
|
|||
import android.content.ContentProviderClient;
|
||||
import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
import android.os.Vibrator;
|
||||
import android.view.WindowManager;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import org.linphone.R;
|
||||
|
@ -242,4 +243,9 @@ class ApiTwentyOnePlus {
|
|||
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
|
||||
}
|
||||
}
|
||||
|
||||
public static void vibrate(Vibrator vibrator) {
|
||||
long[] pattern = {0, 1000, 1000};
|
||||
vibrator.vibrate(pattern, 1);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -33,7 +33,10 @@ import android.content.Context;
|
|||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.graphics.Bitmap;
|
||||
import android.media.AudioAttributes;
|
||||
import android.os.Build;
|
||||
import android.os.VibrationEffect;
|
||||
import android.os.Vibrator;
|
||||
import android.provider.Settings;
|
||||
import android.widget.RemoteViews;
|
||||
import org.linphone.R;
|
||||
|
@ -314,4 +317,15 @@ class ApiTwentySixPlus {
|
|||
activity.enterPictureInPictureMode();
|
||||
}
|
||||
}
|
||||
|
||||
public static void vibrate(Vibrator vibrator) {
|
||||
long[] timings = {0, 1000, 1000};
|
||||
int[] amplitudes = {0, VibrationEffect.DEFAULT_AMPLITUDE, 0};
|
||||
VibrationEffect effect = VibrationEffect.createWaveform(timings, amplitudes, 1);
|
||||
AudioAttributes audioAttrs =
|
||||
new AudioAttributes.Builder()
|
||||
.setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE)
|
||||
.build();
|
||||
vibrator.vibrate(effect, audioAttrs);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,6 +30,7 @@ import android.content.Context;
|
|||
import android.content.Intent;
|
||||
import android.graphics.Bitmap;
|
||||
import android.os.Build;
|
||||
import android.os.Vibrator;
|
||||
import android.provider.Settings;
|
||||
import android.service.notification.StatusBarNotification;
|
||||
import org.linphone.core.Address;
|
||||
|
@ -324,4 +325,12 @@ public class Compatibility {
|
|||
|
||||
return new StatusBarNotification[0];
|
||||
}
|
||||
|
||||
public static void vibrate(Vibrator vibrator) {
|
||||
if (Version.sdkAboveOrEqual(Version.API26_O_80)) {
|
||||
ApiTwentySixPlus.vibrate(vibrator);
|
||||
} else {
|
||||
ApiTwentyOnePlus.vibrate(vibrator);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue