2012-02-12 4 views
0

Я хочу создать компас с использованием Surface View, и я нашел этот код ниже ... но я не знаю, чего пытается достичь код ниже, любые идеи?Что это такое? Android Surface View

Это реализованный метод. Я думаю, что метод следует вызывать один раз, и поток выполняется вечно, если не вызывается метод onPause ... но когда я попытался запустить код ниже класса Paint, вызывается только один раз, а затем выходите ... обновление для позиции датчики не учитываются. Пожалуйста помоги.

@Override 
public void surfaceCreated(SurfaceHolder holder) { 
    // TODO Auto-generated method stub 

    this.runDrawingThread = true; 

    new Thread(new Runnable() 
    { 

     public void run() 
     {  
      long l1 = System.currentTimeMillis(); 
      long l2 = 0L; 
      int i = 0; 
      int j = 0; 
      long l3 = System.currentTimeMillis(); 

      if (!Painter.this.runDrawingThread){    
       return; 
      } 
      if (j < 2) 
      { 
       Painter.this.onPaint(l3, true); 
       j++; 
       if ((l3 - l2)/1000L < 1L)   
       l2 = l3; 
      } 

      for (i = 0; ;i++) 
      { 
       Log.i("test", "i value " + i); 
       while (true) 
       { 

       l1 += 16L; 
       l3 = l1 - l3; 
       if (l3 < 0L) 
        break; 
       try 
       { 
        Log.i("inside","inside the thread"); 
        Thread.sleep(l3); 
       } 
       catch (Exception localException) 
       { 

       } 
       } 

       Painter.this.onPaint(l3, false); 
       break; 
       }   


     } 
    }).start(); 
} 

ответ

1

Хммм ... Любопытно ....

Для начала, я не знаю, что это Painter класс.

if (j < 2) это странно, потому что я не вижу ничего, что могло бы изменить его от инициализированную значение 0.

«положение датчиков пренебрег.» Вероятно, потому, что я ничего не вижу, чтобы обращаться к датчикам телефона.

Этот код когда-либо работал в первую очередь? Я предлагаю вам найти какой-то другой ресурс, как, возможно, это: http://www.anddev.org/other-coding-problems-f5/android-compass-tutorial-t11674.html

UPDATE: для цикла без конца условия, и просто иметь перерыв в конце концов? В чем смысл?

«Нить бежит навсегда» Не из того, что я вижу. У вас есть while(true), но if (l3 < 0L) будет правдой, учитывая, что l3 = l1 - l3; будет меньше нуля, потому что l3 должно быть выше, чем l1. Он попадает в разрыв, а затем ударяет по разрыву в конце цикла for, тем самым выходя из потока.

Сложно сказать, что вам нужно сделать, потому что я действительно не знаю, что вы пытаетесь здесь сделать.

+0

Код, приведенный выше, является всего лишь фрагментом кода. Ах, да .. пожалуйста, проверьте этот код по приведенной ниже ссылке и пришлите мне то, что вы думаете или чего не хватает (если у вас есть время), спасибо заранее ... http: /scamexdotexe.x10.mx/ – scamexdotexe

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