2
저는 Google Cardboard를 처음 사용하여 이것을 구현하려고 시도했지만 example입니다. .aar 파일을 올바르게 포함 시켰으며 실행시이 런타임 예외가 발견되었습니다. 이 문제를 해결하는 방법을 제안하고 가능하면 데모가있는 Google 골판지의 기본 시작 위치를 제안하십시오.
이 주제에 관해 저에게 도움을 주신 것에 진심으로 감사드립니다.
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Vibrator;
import android.util.Log;
import android.widget.ImageView;
import com.google.vr.sdk.base.Eye;
import com.google.vr.sdk.base.GvrActivity;
import com.google.vr.sdk.base.GvrView;
import com.google.vr.sdk.base.HeadTransform;
import com.google.vr.sdk.base.Viewport;
import javax.microedition.khronos.egl.EGLConfig;
public class MainActivity extends GvrActivity implements
GvrView.StereoRenderer {
private static final String TAG = "MainActivity2";
Uri fileUri = null;
ImageView photoImage = null;
private Vibrator mVibrator;
private int mScore = 0;
private CardboardOverlayView mOverlayView;
public MainActivity() {
}
/**
* Sets the view to our CardboardView and initializes the transformation
* matrices we will use to render our scene. //@param savedInstanceState
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.content_main);
GvrView cardboardView = (GvrView) findViewById(R.id.cardboard_view1);
setGvrView(cardboardView);
mVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
mOverlayView = (CardboardOverlayView) findViewById(R.id.overlay);
mOverlayView.show3DSplashImage();
mOverlayView.show3DImage(mScore++, MainActivity.this);
mVibrator.vibrate(50);
}
protected void onNfcIntent(Intent intent) {
}
@Override
public void onRendererShutdown() {
Log.i(TAG, "onRendererShutdown");
}
@Override
public void onSurfaceChanged(int width, int height) {
Log.i(TAG, "onSurfaceChanged");
}
@Override
public void onSurfaceCreated(EGLConfig eglConfig) {
Log.i(TAG, "onSurfaceCreated");
}
/**
* Creates the buffers we use to store information about the 3D world.
* OpenGL doesn't use Java arrays, but rather needs data in a format it can
* understand. Hence we use ByteBuffers.
*
* @param config
* The EGL configuration used when creating the surface.
*/
/*@Override
public void onCardboardTrigger() {
Log.i(TAG, "onRendererShutdown1");
mOverlayView.show3DImage(mScore++, MainActivity.this);
mVibrator.vibrate(50);
}*/
/**
* Prepares OpenGL ES before we draw a frame.
*
* @param headTransform
* The head transformation in the new frame.
*/
@Override
public void onNewFrame(HeadTransform headTransform) {
}
@Override
public void onDrawEye(Eye eye) {
}
/**
* Draws a frame for an eye. The transformation for that eye (from the
* camera) is passed in as a parameter.
*
* @param viewport
* The transformations to apply to render this eye.
*/
@Override
public void onFinishFrame(Viewport viewport) {
}
public void onRemovedFromCardboard() {
Log.d("vbv", "msg");
}
}
CardboardOverlayView.java
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.opengl.GLSurfaceView$GLThread.surfaceCreated()' on a null object reference
at android.opengl.GLSurfaceView.surfaceCreated(GLSurfaceView.java:556)
at android.view.SurfaceView.updateWindow(SurfaceView.java:675)
at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:202)
at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:944)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2357)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1301)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6673)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:800)
at android.view.Choreographer.doCallbacks(Choreographer.java:603)
at android.view.Choreographer.doFrame(Choreographer.java:572)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:786)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5637)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
MainActivity.java 선형 레이아웃 extented 클래스입니다.