[英]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.CardboardView
的CardboardView
。
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 Project
和Rebuild Project
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.