2012-02-12 15 views
0

Surface Viewを使ってコンパスを作成したいのですが、下のコードが見つかりました...しかし、以下のコードが達成しようとしているアイデアは何ですか?以下はどのようなコードですか? Android Surface View

実装されているメソッドです。私はメソッドを一度呼び出す必要があり、スレッドは永遠にonPauseメソッドが呼び出されない限り実行する必要があると思う...しかし、私はペイントクラスの下のコードを実行しようとしたときに一度呼び出され、終了...の位置の更新センサは無視される。助けてください。

@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

うーん...好奇心....

手始めに、私はこの画家のクラスが何であるかを知りません。私は0

が初期化された値のからそれを変更することは何も表示されていないので、

if (j < 2)は奇数である「センサーの位置を無視しているの。」それはおそらく私は電話のセンサーにアクセスする何もここに表示されないためです。

このコードは最初に機能しましたか? http://www.anddev.org/other-coding-problems-f5/android-compass-tutorial-t11674.html

UPDATE:なし終了条件とループの はA、単に最後の休憩を持つ私は、おそらくこのように、あなたには、いくつかの他のリソースを見つけることをお勧め?そのポイントは何ですか?

「スレッドは永遠に走る」私が見ているものではない。 while(true)がありますが、l3 = l1 - l3;l3l1よりも高い値にする必要があるため、0未満になると考えて、if (l3 < 0L)が真となります。ブレークに当たった後、forループの最後にブレークを叩いてスレッドを終了します。

ここでやろうとしていることは本当にわからないので、あなたがする必要があるとは言い難いです。

+0

上記のコードはちょうどコードスニペットです。ああ、次のリンクからこのコードをチェックして、私にあなたの考えを伝えてください。 /scamexdotexe.x10.mx/ – scamexdotexe

関連する問題