2
我有無盡的振動的服務後重復震動,但是當屏幕關閉振動停止。在添加了正確的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(未重複)振動工作,但是當設定爲其他值不起作用。
任何想法,解決方法?或者,也許它只適用於其他手機?我拼命地跑它放在谷歌Nexus和Android的4.1.2
編輯:
一些測試後,我已經確定:如果他們之前的屏幕去了被攔
- 震動會正常啓動(但不中的onReceive - 這似乎爲時已晚)
- 「系統振動」(例如解鎖屏幕)時,允許振動與下一屏幕開/關正常啓動。直到下一個「破發」,等等
- (EDIT 2) - 這絕對是連接模式 - 不存在具有振動(long millis)來沒有這樣的問題 - 一切工作正常
如果我沒有找到任何「正常」的解決方案,我將只需要創建可能是我自己的振動器類...
有可能是你的mVibrator是從服務的上下文中獲取上不轉播工作。嘗試在再次的onReceive獲取它(從上下文的背景下) – njzk2
@ njzk2 - 我檢查了,但它似乎並不如此。它有一些震動停止在「模式」,似乎我不能正確地重新啓動它們,只有「系統振動」可以。請參閱我的編輯 – Koger