2011-08-25 4 views
1

특정 영화의 포스터가 카메라 앞면에 안드로이드로 표시 될 때 특정 비디오가 재생되는 안드로이드 응용 프로그램을 개발 중입니다. 이전에이 물건에 AndAr 프로젝트를 사용하고 있으며 customObject의 draw() 함수에서 몇 가지 변경을 수행하여 작동 시켰습니다. 하지만 이제 고객이 Qualcomm SDK를 사용하기를 원합니다. 이미지 타겟 애플리케이션을 가지고 놀고 있었지만 아무 것도 찾을 수 없었습니다.Qualcomm SDK를 사용하는 마커 기반 AR 안드로이드 응용 프로그램

+0

내가 어떻게 했습니까? andar를 사용하여 영화 포스터를 선택하십시오. 저는 현재 Andar를 사용하여 미리 정의 된 이미지를 감지하려고합니다. –

+0

나는 andar를 사용하지 않았습니다. 아래의 답변을 확인할 수있는 qualcomm SDK를 사용했습니다. – abhishek

답변

2

좋아, 잘 됐어. 는 I이 링크

https://ar.qualcomm.at/arforums/showthread.php?t=32

난 이미 방법 renderFrame 을 가졌다 가지고 있었다 imagetargets.cpp에서 가져온 그것의 해결책이 다음 것은 그래서 난 그것을 조금

JNIEXPORT void JNICALL 
    Java_com_qualcomm_QCARSamples_ImageTargets_ImageTargetsRenderer_renderFrame(JNIEnv*  
    env, jobject obj) 

{ 
//LOG("Java_com_qualcomm_QCARSamples_ImageTargets_GLRenderer_renderFrame"); 

// Clear color and depth buffer 
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

// Render video background: 
QCAR::State state = QCAR::Renderer::getInstance().begin(); 

#ifdef USE_OPENGL_ES_1_1 
// Set GL11 flags: 
glEnableClientState(GL_VERTEX_ARRAY); 
glEnableClientState(GL_NORMAL_ARRAY); 
glEnableClientState(GL_TEXTURE_COORD_ARRAY); 

glEnable(GL_TEXTURE_2D); 
glDisable(GL_LIGHTING); 

#endif 

glEnable(GL_DEPTH_TEST); 
glEnable(GL_CULL_FACE); 

// Did we find any trackables this frame? 
for(int tIdx = 0; tIdx < state.getNumActiveTrackables(); tIdx++) 
{ 
    // Get the trackable: 
    const QCAR::Trackable* trackable = state.getActiveTrackable(tIdx); 
    QCAR::Matrix44F modelViewMatrix = 
     QCAR::Tool::convertPose2GLMatrix(trackable->getPose());   

    // Choose the texture based on the target name: 
    int textureIndex = (!strcmp(trackable->getName(), "stones")) ? 0 : 1; 
    const Texture* const thisTexture = textures[textureIndex]; 

    jstring js = env->NewStringUTF(trackable->getName()); 
       jclass javaClass = env->GetObjectClass(obj); 
       jmethodID method = env->GetMethodID(javaClass, "displayMessage", "(Ljava/lang/String;)V"); 
       env->CallObjectMethod(obj, method, js); 

    } 

glDisable(GL_DEPTH_TEST); 

#ifdef USE_OPENGL_ES_1_1   
glDisable(GL_TEXTURE_2D); 
glDisableClientState(GL_VERTEX_ARRAY); 
glDisableClientState(GL_NORMAL_ARRAY); 
glDisableClientState(GL_TEXTURE_COORD_ARRAY); 
#else 
glDisableVertexAttribArray(vertexHandle); 
glDisableVertexAttribArray(normalHandle); 
glDisableVertexAttribArray(textureCoordHandle); 
#endif 

QCAR::Renderer::getInstance().end(); 
} 
을 수정했다

그리고 imageRenderer 클래스를 변경 한 후 다음 코드를 이력서에 추가했습니다. -

ImageTargetsRenderer.mainActivityHandler = new Handler() { 
     @Override 
     public void handleMessage(Message msg) { 
      Intent intent = new Intent(Intent.ACTION_VIEW); 
      intent.setData(Uri.parse("http://www.youtube.com/watch?v=DyDA2Abnssg")); 
      startActivity(intent); 
      ImageTargets.this.finish(); 
     } 
    }; 
관련 문제