Я хочу добавить вибрационную обратную связь для игры, которую я разрабатываю, вместе с музыкальной пьесой, такой как "победитель" и вибрирующий паттерн.
Проблема в том, что когда я добавляю вибрирующие предложения, приложение падает.
Например:
private void Down()
{
soundM.playSound(Sound.SOUND_NEWINTENT);
for (int i=0 ; i<8 ; i++) {
for (int j=0 ; j<12 ; j++) {
if (Play[i][j] != null) {
Play[i][j].moveDown();
if (Play[i][j].getSpritePosition().y>=380) {
Sprite.updateState(Sprite.STATE_GAME_LOST);
endOfGame = true;
soundM.playSound(Sound.SOUND_LOST);
vib = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);
vib.vibrate(500);
}
}
}
}
Он не находится внутри операции, поэтому я не могу реализовать что-то вроде этого Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE)
, потому что это оператор активности. Я попытался объявить public Vibrator vib;
а затем реализовать код, который я показал выше, но когда потерянная игра возвращается, приложение падает.
Я также пытался сделать это через "уведомление", но тот же результат, приложение вылетает.
Любая идея, как я могу реализовать вибрацию на нем?
Благодарю!!
PS: У меня есть android.permission.VIBRATE, так что это не проблема. На самом деле я получил вирбацию, работающую над меню.
Я объявляю публичный объект вибратора в активности, которая вызывает объект игры. В моем случае активность onCreate запускает MainGamePanel, который расширяет поверхностьView. Поэтому в операции onCreate я объявляю объект вибратора и инициализирую его
public static Vibrator v;
v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
//Then when I want to game to vibrate, inside of MainGamePanel I call
long[] pattern = { 0, 200, 500 };
DroidzActivity.v.vibrate(pattern, 0);
Надеюсь это поможет!