2016-07-03 1 views
3

Этот код производит непрерывный звук и работает, когда я удаляю df.calculateFreq() из класса ThreadMain. Когда я помещаю его в метод genTone() ниже, консоль печатает «тест» только один раз, а затем останавливается, а без него код работает нормально. Не хватает ли времени для обработки дополнительных данных? Спасибо, и ошибок нет.График фиксированной ставки, отказывающийся работать

public ThreadMain() { 
     audio = new AudioGenerator(10000); 
     audio.createPlayer(); 

     dF = new DetermineFreq(); 

     exec = Executors.newSingleThreadScheduledExecutor(); 
     exec.scheduleAtFixedRate(new Runnable() { 
      @Override 
      public void run() { 
       //RUN FUNC every 20 millisecond 
       genTone(); 

      } 
     }, 0, 50, TimeUnit.MILLISECONDS); 
    } 

    public void genTone(){ 
     System.out.println("test"); 
     dF.calculateFreq(); <--- this 
     tone = audio.getSineWave(noteDuration, 10000, 200); 
     audio.writeSound(tone); 
    } 

public class DetermineFreq{ 
    MainActivity main; 

    float accelX; 

    public void DetermineFreq() { 
     main = new MainActivity(); 
    } 

    public void calculateFreq() { 
     accelX = main.getAccelX(); 
     System.out.println(accelX); 
    } 
} 

ответ

3

ScheduledExecutor может быть тихо бросает ошибку, и прекращения резьбового это произойдет.

Оберните содержимое вашего метода genTone() в попытке поймать и распечатать трассировку стека из всех обнаруженных исключений.

public void genTone(){ 
    try 
     { 
     System.out.println("test"); 
     dF.calculateFreq(); 
     tone = audio.getSineWave(noteDuration, 10000, 200); 
     audio.writeSound(tone); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 
Смежные вопросы