mirror of
https://github.com/moonlight-stream/moonlight-android.git
synced 2026-06-17 14:21:08 +00:00
Use VibrationAttributes to bypass interruption policy
This commit is contained in:
@@ -10,6 +10,7 @@ import android.media.AudioAttributes;
|
|||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.CombinedVibration;
|
import android.os.CombinedVibration;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
|
import android.os.VibrationAttributes;
|
||||||
import android.os.VibrationEffect;
|
import android.os.VibrationEffect;
|
||||||
import android.os.Vibrator;
|
import android.os.Vibrator;
|
||||||
import android.os.VibratorManager;
|
import android.os.VibratorManager;
|
||||||
@@ -1357,7 +1358,14 @@ public class ControllerHandler implements InputManager.InputDeviceListener, UsbD
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
vm.vibrate(combo.combine());
|
VibrationAttributes.Builder vibrationAttributes = new VibrationAttributes.Builder()
|
||||||
|
.setFlags(VibrationAttributes.FLAG_BYPASS_INTERRUPTION_POLICY, VibrationAttributes.FLAG_BYPASS_INTERRUPTION_POLICY);
|
||||||
|
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||||
|
vibrationAttributes.setUsage(VibrationAttributes.USAGE_MEDIA);
|
||||||
|
}
|
||||||
|
|
||||||
|
vm.vibrate(combo.combine(), vibrationAttributes.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void rumbleSingleVibrator(Vibrator vibrator, short lowFreqMotor, short highFreqMotor) {
|
private void rumbleSingleVibrator(Vibrator vibrator, short lowFreqMotor, short highFreqMotor) {
|
||||||
@@ -1382,10 +1390,19 @@ public class ControllerHandler implements InputManager.InputDeviceListener, UsbD
|
|||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
if (vibrator.hasAmplitudeControl()) {
|
if (vibrator.hasAmplitudeControl()) {
|
||||||
VibrationEffect effect = VibrationEffect.createOneShot(60000, simulatedAmplitude);
|
VibrationEffect effect = VibrationEffect.createOneShot(60000, simulatedAmplitude);
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||||
|
VibrationAttributes vibrationAttributes = new VibrationAttributes.Builder()
|
||||||
|
.setUsage(VibrationAttributes.USAGE_MEDIA)
|
||||||
|
.setFlags(VibrationAttributes.FLAG_BYPASS_INTERRUPTION_POLICY, VibrationAttributes.FLAG_BYPASS_INTERRUPTION_POLICY)
|
||||||
|
.build();
|
||||||
|
vibrator.vibrate(effect, vibrationAttributes);
|
||||||
|
}
|
||||||
|
else {
|
||||||
AudioAttributes audioAttributes = new AudioAttributes.Builder()
|
AudioAttributes audioAttributes = new AudioAttributes.Builder()
|
||||||
.setUsage(AudioAttributes.USAGE_GAME)
|
.setUsage(AudioAttributes.USAGE_GAME)
|
||||||
.build();
|
.build();
|
||||||
vibrator.vibrate(effect, audioAttributes);
|
vibrator.vibrate(effect, audioAttributes);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1395,7 +1412,14 @@ public class ControllerHandler implements InputManager.InputDeviceListener, UsbD
|
|||||||
long pwmPeriod = 20;
|
long pwmPeriod = 20;
|
||||||
long onTime = (long)((simulatedAmplitude / 255.0) * pwmPeriod);
|
long onTime = (long)((simulatedAmplitude / 255.0) * pwmPeriod);
|
||||||
long offTime = pwmPeriod - onTime;
|
long offTime = pwmPeriod - onTime;
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||||
|
VibrationAttributes vibrationAttributes = new VibrationAttributes.Builder()
|
||||||
|
.setUsage(VibrationAttributes.USAGE_MEDIA)
|
||||||
|
.setFlags(VibrationAttributes.FLAG_BYPASS_INTERRUPTION_POLICY, VibrationAttributes.FLAG_BYPASS_INTERRUPTION_POLICY)
|
||||||
|
.build();
|
||||||
|
vibrator.vibrate(VibrationEffect.createWaveform(new long[]{0, onTime, offTime}, 0), vibrationAttributes);
|
||||||
|
}
|
||||||
|
else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||||
AudioAttributes audioAttributes = new AudioAttributes.Builder()
|
AudioAttributes audioAttributes = new AudioAttributes.Builder()
|
||||||
.setUsage(AudioAttributes.USAGE_GAME)
|
.setUsage(AudioAttributes.USAGE_GAME)
|
||||||
.build();
|
.build();
|
||||||
|
|||||||
Reference in New Issue
Block a user