Suppress MissingPermission warning for Android vibration

It does check its permission every `vibrate_handheld()` calls.
Vibrate permission is added by checking it on export settings.

And there are some changes for deprecated method.
This commit is contained in:
volzhs 2019-08-27 21:52:44 +09:00
parent 2c63c27ef1
commit 3178dee53c
1 changed files with 9 additions and 1 deletions

View File

@ -32,6 +32,7 @@ package org.godotengine.godot;
//import android.R; //import android.R;
import android.annotation.SuppressLint;
import android.app.Activity; import android.app.Activity;
import android.app.ActivityManager; import android.app.ActivityManager;
import android.app.AlertDialog; import android.app.AlertDialog;
@ -58,6 +59,7 @@ import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Environment; import android.os.Environment;
import android.os.Messenger; import android.os.Messenger;
import android.os.VibrationEffect;
import android.os.Vibrator; import android.os.Vibrator;
import android.provider.Settings.Secure; import android.provider.Settings.Secure;
import android.support.v4.content.ContextCompat; import android.support.v4.content.ContextCompat;
@ -330,11 +332,17 @@ public class Godot extends Activity implements SensorEventListener, IDownloaderC
}); });
} }
@SuppressLint("MissingPermission")
public void vibrate(int p_duration_ms) { public void vibrate(int p_duration_ms) {
if (requestPermission("VIBRATE")) { if (requestPermission("VIBRATE")) {
Vibrator v = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE); Vibrator v = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);
if (v != null) { if (v != null) {
v.vibrate(p_duration_ms); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
v.vibrate(VibrationEffect.createOneShot(p_duration_ms, VibrationEffect.DEFAULT_AMPLITUDE));
} else {
//deprecated in API 26
v.vibrate(p_duration_ms);
}
} }
} }
} }