首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用andar for android方法冻结摄像头

使用andar for android方法冻结摄像头
EN

Stack Overflow用户
提问于 2012-08-02 03:34:42
回答 1查看 440关注 0票数 0

我会解释一下情况。我正在尝试解决如何在标记出现时暂停相机。我所说的标记是从这个链接中显示出来的。

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

当标记出现时,我想要一种暂停相机的方法,这样即使相机在移动,标记也不会消失。我需要这个,这样当玩游戏的时候,相机可以被轻推,但记号仍然会留在正确的地方。以下是标记活动的代码

公共类CustomActivity扩展了AndARActivity {

代码语言:javascript
复制
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

用于绘制立方体的绘制函数

代码语言:javascript
复制
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();

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-02 06:04:26

也许可以尝试添加一些停止发送相机预览缓冲区进行处理的代码。这样,它将继续渲染相机预览,但不会处理新帧。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11766283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档