Продолжать вибрацию даже после того, как экран переходит в спящий режим в Android

В моем приложении я запускаю VIBRATOR_SERVICE через следующий код

long[] pattern = {50,100,1000}
Vibrator vibe=(Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
vibe.vibrate(pattern, 0);

Я хочу, чтобы вибрация продолжалась, пока я не позвоню

vibe.cancel();

Код работает нормально, но вибрация сбивается при переходе экрана в спящий режим.

Я хочу, чтобы вибрация продолжалась даже после перехода экрана в спящий режим. Есть ли способы сделать это? Пожалуйста, помогите мне.

Заранее спасибо.:)

2 ответа

Решение

Правильный ответ на вопрос заключается в следующем

Прежде чем делать это, не забудьте добавить разрешение "android.permission.VIBRATE"к файлу манифеста вашего приложения.

public BroadcastReceiver vibrateReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            vibe.vibrate(pattern, 0);
        }
    }
};

IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
registerReceiver(vibrateReceiver, filter);

wakelock не будет работать здесь, потому что приемник получит намерение только после выключения экрана. Хотя мы можем получить Wakelock после перехода экрана в режим выключения, вибрация прекращается, потому что это происходит с ACTION_SCREEN_OFF, Так что это можно сделать, снова запустив вибрацию после приема трансляции.

Попробуйте это может помочь вам. Первая марка broadcast receiver для этого так, что когда мобильный свет выключен, то пиши логику вибрации мобильного телефона.

 public BroadcastReceiver wakeLockReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent)
    {
        if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            //WRITE LOGIC OF VIBRATION.
        }
    }
};

IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
registerReceiver(wakeLockReceiver, filter);

Добавить разрешение в AndroidManifest.xml

<uses-permission android:name="android.permission.VIBRATE"/>
Другие вопросы по тегам