2015-07-09 2 views
0

Я пытаюсь сделать мой андроид телефон вибрировал после того, как мяч попадает в цель в игре, так что я создал внутренний класс Vibrate, которые проходят активность как мой внешнего класса не является активностьвибро андроид телефон от класса неактивности

public class TheGame extends GameThread { 
    public class Vibrate extends Activity { 
    Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); 
    } 
//some methods 

    protected void updateGame(float secondsElapsed){ 
    //updating coordinates and if ball hits the target >> vibrate 
    TheGame.Vibrate vib = new TheGame.Vibrate(); 
    vib.v.vibrate(500); 

    } 
} 

Как я могу назвать вибрацию (-inner class) от внешнего класса? В настоящий момент программа останавливается на шоу «к сожалению, приложение остановилось» и «слишком много выходных данных для обработки андроида» в Logcat //////////

Наконец-то с помощью dhke. Мне просто нужно было получить доступ к getSystemService (...) из контекста, который I Extended во внешнем классе.

+0

Почему не 'GameThread' имеет доступ к' объекта context' где-нибудь? А точнее: кто создает объект GameThread? – dhke

+0

Я не знаю, кто создает объект, но нужен ли нам объект GameThread? – user3791431

+0

Вам понадобится доступ к объекту 'Context', который должен быть предоставлен вам инфраструктурой. Ошибка вашей программы должна действительно сказать вам, что вы * не можете * создавать действия с использованием 'new', они должны быть созданы каркасом и иметь довольно сложный жизненный цикл. Но вам не нужна активность для доступа к вибратору, вам нужен «Контекст». Итак, снова: кто создает «GameThread» и может ли создатель снабжать поток «Context» (или уже полученный вибратор) в поток? – dhke

ответ

0

Вызов статического метода в Non активность класса:

public class MyNonActivity{ 
    public static void vibrateDevice(Context mContext){ 
     Vibrator v = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); 
     // Vibrate for 500 milliseconds 
     v.vibrate(500); 
    } 
} 

Добавить разрешение в Manifest файл.

<uses-permission android:name="android.permission.VIBRATE"/> 

Как вызова от активности:

MyNonActivity.vibrateDevice(getApplicationContext()); 

Совершено

Смежные вопросы