2012-08-01 66 views
0

我會解釋情況。我正試圖解決在出現標記時如何暫停相機。這個鏈接顯示我的意思是一個標記。使用andar進行android方法來凍結相機

http://code.google.com/p/andar/

當標誌已經出現我想要的方式來暫停相機時,使標記不會消失,即使相機而動。我需要這個,所以在玩遊戲時可以慢跑,但標記仍然會保留在正確的位置。下面是代碼形式的標記物活性

公共類CustomActivity延伸AndARActivity {

CustomObject2 someObject; 
ARToolkit artoolkit; 
@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    CustomRenderer renderer = new CustomRenderer();//optional, may be set to null 
    super.setNonARRenderer(renderer);//or might be omited 
    try { 
     //register a object for each marker type 
     artoolkit = super.getArtoolkit(); 
     someObject = new CustomObject2 
      ("test", "patt.hiro", 80.0, new double[]{0,0}); 
     artoolkit.registerARObject(someObject); 
     someObject = new CustomObject2 
     ("test", "android.patt", 80.0, new double[]{0,0}); 
     artoolkit.registerARObject(someObject); 
     someObject = new CustomObject2 
     ("test", "barcode.patt", 80.0, new double[]{0,0}); 
     artoolkit.registerARObject(someObject); 
    } catch (AndARException ex){ 
     //handle the exception, that means: show the user what happened 
     System.out.println(""); 
    }  
    startPreview(); 
} 

/** 
* Inform the user about exceptions that occurred in background threads. 
* This exception is rather severe and can not be recovered from. 
* TODO Inform the user and shut down the application. 
*/ 
public void uncaughtException(Thread thread, Throwable ex) { 
    Log.e("AndAR EXCEPTION", ex.getMessage()); 
    finish(); 
} 

}

@Override

繪製函數用於繪製立方體

public final void draw(GL10 gl) { 
     super.draw(gl); 

     gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_SPECULAR,mat_flash); 
     gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_SHININESS, mat_flash_shiny);  
     gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_DIFFUSE, mat_diffuse); 
     gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_AMBIENT, mat_ambient); 

     //this code draws the cube. 
     gl.glColor4f(0, 1.0f, 0, 1.0f); 
     gl.glTranslatef(0.0f, 0.0f, 12.5f); 


     // experement with the api 
     //draw the box 
     box.draw(gl); 
    } 

我會圍繞startPreview函數包裝代碼嗎?或者我需要檢查是否繪製了該對象,然後以此方式停止預覽。

我發現這個命令,但我不知道如何實現它當標記正在顯示。我知道我需要一些條件,但不知道它是什麼。 camera.stopPreview();

+0

添加了安達爾標籤 – 2012-08-01 19:36:38

+0

您嘗試了什麼?您發佈的代碼是我們在項目頁面上給出的默認值。 – 2012-08-01 19:38:04

+0

我試圖添加暫停功能,但它不斷崩潰。這是正確的方法嗎?我會更新我的代碼 – alex 2012-08-01 20:00:38

回答

2

也許嘗試添加一些代碼,將停止發送相機預覽緩衝區進行處理。這樣它將繼續渲染相機預覽,但不會處理新的幀。

+0

謝謝你聽起來像個好主意。我試試 – alex 2012-08-02 08:35:21

+0

你可以評估。我會圍繞startPreview函數 – alex 2012-08-02 08:41:24

+0

包裝代碼感謝它的工作 – alex 2012-08-02 10:24:12