简体   繁体   English

错误充气 class com.google.vrtoolkit.cardboard.CardboardView 崩溃应用程序

[英]Error inflating class com.google.vrtoolkit.cardboard.CardboardView crashes application

its has no build error, but crashing when i running on emulator.它没有构建错误,但是当我在模拟器上运行时崩溃。

--------- beginning of crash E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.myrajawali, PID: 6166 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myrajawali/com.example.myrajawali.MainActivity}: android.view.InflateException: Binary XML file line #9 in com.example.myrajawali:layout/activity_main: Binary XML file line #9 in com.example.myrajawali:layout/activity_main: Error inflating class com.google.vrtoolkit.cardboard.CardboardView at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3270) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.Z93F725A07423FE1C8 --------- 崩溃 E/AndroidRuntime:致命异常:主进程:com.example.myrajawali,PID:6166 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.comrajawali .example.myrajawali.MainActivity}: android.view.InflateException: Binary XML file line #9 in com.example.myrajawali:layout/activity_main: Binary XML file line #9 in com.example.myrajawali:layout/activity_main: Error inflating class com.google.vrtoolkit.cardboard.CardboardView at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3270) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.Z93F725A07423FE1C8 89F448B33D21F46Z:3409) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7356) at java.lang.reflect.Method.invoke(Nat 89F448B33D21F46Z:3409) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor .java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java: 214) 在 android.app.ActivityThread.main(ActivityThread.java:7356) 在 java.lang.reflect.N ive Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) Caused by: android.view.InflateException: Binary XML file line #9 in com.example.myrajawali:layout/activity_main: Binary XML file line #9 in com.example.myrajawali:layout/activity_main: Error inflating class com.google.vrtoolkit.cardboard.CardboardView Caused by: android.view.InflateException: Binary XML file line #9 in com.example.myrajawali:layout/activity_ma ive Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) Caused by: android.view. InflateException: Binary XML file line #9 in com.example.myrajawali:layout/activity_main: Binary XML file line #9 in com.example.myrajawali:layout/activity_main: Error inflating class com.google.vrtoolkit.cardboard.CardboardView Caused by : android.view.InflateException: 二进制 XML 文件第 9 行在 com.example.myrajawali:layout/activity_ma in: Error inflating class com.google.vrtoolkit.cardboard.CardboardView Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Constructor.newInstance0(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:343) at android.view.LayoutInflater.createView(LayoutInflater.java:854) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1006) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:961) at android.view.LayoutInflater.rInflate(LayoutInflater.java:1123) at android.view.LayoutInflate in: Error inflating class com.google.vrtoolkit.cardboard.CardboardView Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Constructor.newInstance0(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor .java:343) at android.view.LayoutInflater.createView(LayoutInflater.java:854) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1006) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:961)在 android.view.LayoutInflater.rInflate(LayoutInflater.java:1123) 在 android.view.LayoutInflate r.rInflateChildren(LayoutInflater.java:1084) at android.view.LayoutInflater.inflate(LayoutInflater.java:682) at android.view.LayoutInflater.inflate(LayoutInflater.java:534) at android.view.LayoutInflater.inflate(LayoutInflater.java:481) at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:438) at android.app.Activity.setContentView(Activity.java:3324) at com.example.myrajawali.MainActivity.onCreate(MainActivity.java:23) at android.app.Activity.performCreate(Activity.java:7802) at ZC31B32364CE19CA8FCD150A417EC r.rInflateChildren(LayoutInflater.java:1084) at android.view.LayoutInflater.inflate(LayoutInflater.java:682) at android.view.LayoutInflater.inflate(LayoutInflater.java:534) at android.view.LayoutInflater.inflate(LayoutInflater .java:481) at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:438) at android.app.Activity.setContentView(Activity.java:3324) at com.example.myrajawali.MainActivity.onCreate( MainActivity.java:23) 在 android.app.Activity.performCreate(Activity.Z93F725A07423FE1C889F448B33D21F448B33D21F46Z:78417ECCE58Z.app.Activity.performCreate(Activity.java:7847123A4702) 在 ZCFCECD153 CE58Z.app.Activity.performCreate(Activity.java:7791) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) CE58Z.app.Activity.performCreate(Activity.java:7791) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245) at android.app.ActivityThread .handleLaunchActivity(ActivityThread.java:3409) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.Z93F725A07423FE1C889F448B33D:D

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myrajawali">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity" android:screenOrientation="landscape">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="com.google.intent.category.CARDBOARD" />
            </intent-filter>
        </activity>
    </application>

</manifest>

mainActivity主要活动

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/black"
    tools:context=".MainActivity">

    <com.google.vrtoolkit.cardboard.CardboardView
        android:id="@+id/cardboard_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</RelativeLayout>

MainActivity.java MainActivity.java

    package com.example.myrajawali;



import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;


import com.google.vrtoolkit.cardboard.CardboardActivity;
import com.google.vrtoolkit.cardboard.CardboardView;



public class MainActivity extends CardboardActivity {

    private CardboardView cardboardView;
    private MediaPlayer mediaPlayer;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        cardboardView = findViewById(R.id.cardboard_view);

        // init media player for video
        mediaPlayer = MediaPlayer.create(this, R.raw.sample);
        Log.d("AAAA","aaaaaaaaaaaaaaaaaaaaaaaa");
        mediaPlayer.setLooping(true);

        //create renderee

        CardboardView.StereoRenderer renderer = new Vediorenderer(this, mediaPlayer);
        // associate a renderer with cardboardView
        cardboardView.setRenderer(renderer);

        // associate the cardboardView with this activity
        setCardboardView(cardboardView);

    }

    @Override
    public void onCardboardTrigger() {
        super.onCardboardTrigger();

        // toggle vr mode on touch/trigger
        cardboardView.setVRModeEnabled(!cardboardView.getVRMode());
    }

    @Override
    protected void onPause() {
        super.onPause();
        if (mediaPlayer != null) {
            mediaPlayer.pause();
        }
    }

    @Override
    protected void onResume() {
        super.onResume();
        if (mediaPlayer != null) {
            mediaPlayer.start();
        }
    }



}

VedioRenderer.java视频渲染器.java

package com.example.myrajawali;

import android.content.Context;
import android.graphics.SurfaceTexture;
import android.media.MediaPlayer;
import android.view.MotionEvent;

import com.google.vrtoolkit.cardboard.CardboardView;
import com.google.vrtoolkit.cardboard.Eye;
import com.google.vrtoolkit.cardboard.FieldOfView;
import com.google.vrtoolkit.cardboard.HeadTransform;
import com.google.vrtoolkit.cardboard.Viewport;

import org.rajawali3d.cameras.Camera;
import org.rajawali3d.materials.Material;
import org.rajawali3d.math.Matrix4;
import org.rajawali3d.math.Quaternion;
import org.rajawali3d.math.vector.Vector3;
import org.rajawali3d.primitives.Sphere;
import org.rajawali3d.renderer.Renderer;

import javax.microedition.khronos.egl.EGLConfig;

import c.org.rajawali3d.textures.StreamingTexture;
 //import rajawali.renderer.RajawaliRenderer;



public class Vediorenderer extends Renderer implements CardboardView.StereoRenderer {
    // video stuff
    private MediaPlayer mediaPlayer;
    private StreamingTexture videoTexture;

    // temporary math variables
    /** position and rotation of eye camera in 3d space as matrix object */
    private Matrix4 eyeMatrix;
    /** rotation of eye camera in 3d space */
    private Quaternion eyeOrientation;
    /** position of eye camera in 3d space */
    private Vector3 eyePosition;


    /**
     * @param context      e.g. an activity
     * @param mediaPlayer  Fully initialized media player instance with loaded video.
     *                     Make sure to call play/pause by yourself.
     */
    public  Vediorenderer(Context context, MediaPlayer mediaPlayer){
        super(context);
        this.mediaPlayer = mediaPlayer;
        // init math stuff
        eyeMatrix = new Matrix4();
        eyeOrientation = new Quaternion();
    }

    /*========================================================
     Override Renderer abstract methods
     =========================================================*/

    @Override
    protected void initScene() {
        // setup world sphere
        Sphere sphere = new Sphere(1, 24, 24);
        sphere.setPosition(0, 0, 0);
        // invert the sphere normals
        // factor "1" is two small and result in rendering glitches
        sphere.setScaleX(100);
        sphere.setScaleY(100);
        sphere.setScaleZ(-100);
        // create texture from media player video
        videoTexture = new StreamingTexture("video", this.mediaPlayer);
        // set material with video texture
        Material material = new Material();
        material.setColorInfluence(0f);
        try {
            material.addTexture(videoTexture);
        } catch (Exception e){
            throw new RuntimeException(e);
        }
        sphere.setMaterial(material);

        // add sphere to scene
        getCurrentScene().addChild(sphere);
    }
    @Override
    public void onRenderSurfaceDestroyed(SurfaceTexture surfaceTexture) {
        super.onRenderSurfaceDestroyed(surfaceTexture);
        mediaPlayer.stop();
        mediaPlayer.release();
    }
    @Override
    public void onOffsetsChanged(float xOffset, float yOffset, float xOffsetStep, float yOffsetStep, int xPixelOffset, int yPixelOffset) {

    }

    @Override
    public void onTouchEvent(MotionEvent event) {

    }

    /*========================================================
     Override CarboardView abstract methods
     =========================================================*/



    @Override
    public void onNewFrame(HeadTransform headTransform) {

    }

    @Override
    public void onDrawEye(Eye eye) {
        // Rajawali camera
        Camera currentCamera = getCurrentCamera();

        // cardboard field of view
        FieldOfView fov = eye.getFov();

        // update Rajawali camera from cardboard sdk
        currentCamera.updatePerspective(fov.getLeft(), fov.getRight(), fov.getBottom(), fov.getTop());
        eyeMatrix.setAll(eye.getEyeView());
        // orientation
        eyeOrientation.fromMatrix(eyeMatrix);
        currentCamera.setOrientation(eyeOrientation);
        // position
        eyePosition = eyeMatrix.getTranslation().inverse();
        currentCamera.setPosition(eyePosition);

        // render with Rajawali
        super.onRenderFrame(null);
    }

    @Override
    public void onFinishFrame(Viewport viewport) {

    }

    @Override
    public void onSurfaceChanged(int width, int height) {
        // tell Rajawali that cardboard sdk detected a size change
        super.onRenderSurfaceSizeChanged(null, width, height);
    }


    @Override
    public void onSurfaceCreated(EGLConfig eglConfig) {
        // pass opengl config to Rajawali
        super.onRenderSurfaceCreated(eglConfig, null, -1, -1);
    }

    @Override
    public void onRendererShutdown() {
        // tell Rajawali about shutdown
        super.onRenderSurfaceDestroyed(null);
    }
    @Override
    protected void onRender(long elapsedRealTime, double deltaTime) {
        super.onRender(elapsedRealTime, deltaTime);

        if (videoTexture != null) {
            // update texture from video content
            videoTexture.update();
        }
    }

}

android.view.InflateException

This error occurs when there is any issue in your XML layout file.当您的 XML 布局文件中有任何问题时,会发生此错误。 The error is occurring on Line#9 of your activity_main , where you are using CardboardView of com.google.vrtoolkit.cardboard.CardboardView .该错误发生在您的activity_main的第 9 行,您使用的是com.google.vrtoolkit.cardboard.CardboardViewCardboardView

Possibility of error that XML layout is not inflating properly to view. XML 布局未正确膨胀以查看错误的可能性。 You have to check the library is added properly or not in build.gradle .您必须检查是否在build.gradle中正确添加了库。

Also, do Clean Project and Rebuild Project .另外,做Clean ProjectRebuild Project

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM