진동이없는 서비스가 있지만 화면이 꺼지면 진동이 멈 춥니 다. 올바른 BroadcastReceiver를 추가 한 후에는 화면을 켜거나 끈 후에 반복적으로 진동을 재생할 수 없다는 것을 알았습니다. 아래의 예 간단한 코드 :SCREEN_ON 의도 후 진동 반복을 시작할 수 없습니다.
//VibratingService class
Vibrator mVibrator;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mVibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
vibrate();
}
}, filter);
vibrate();
return START_STICKY;
}
@Override
public void onDestroy() {
mVibrator.cancel();
super.onDestroy();
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
private void vibrate() {
Log.d("TAG", "vibrate");
mVibrator.vibrate(new long[] { 1000, 500 }, 0); //doesn't work
//mVibrator.vibrate(new long[] { 1000, 500 }, -1); //works
}
반복이 진동 방법에 매개 변수 (반복되지 않음) -1로 설정하면 진동이 작동, 이상한, 그러나 다른 값으로 설정하면 작동하지 않습니다 무엇.
어떤 아이디어, 해결 방법? 아니면 그냥 다른 휴대폰에서 작동합니까? 나는 구글 넥서스에 그것을 runned 및 4.1.2 안드로이드
편집 :
는 몇 가지 테스트 후 나는 것으로 확인 : 화면이 꺼져 가기 전에 그들이 중지 된 경우
- 진동이 제대로 시작됩니다 (하지만 inleceive - 너무 늦은 것 같습니다.)
- "시스템 진동"(예 : 화면 잠금 해제)은 다음 화면으로 진동이 올바르게 시작되도록합니다. 그는 확실히 패턴에 연결되어 - - 진동 (긴 밀리)와 그런 문제가 없다 - 모두가 잘 작동
에게 내가 찾을 수없는 경우이
mVibrator가 서비스 컨텍스트에서 가져 오는 것이 방송에서 작동하지 않을 수도 있습니다. (컨텍스트 컨텍스트에서) onReceive에서 다시 가져 오려고 시도하십시오. – njzk2
@ njzk2 - 확인했는데 그럴 것 같지 않습니다. 진동이 "패턴"으로 멈추는 무언가가 있습니다. 단지 올바르게 다시 시작할 수없는 것 같습니다. 단지 "시스템 진동"만이 가능합니다. 내 편집을 보아라. – Koger