Android:无法将LifeCycleOwner强制转换为CamerX预览代码中的活动错误
我正在尝试使用相机API在textureView上显示相机预览。。。 java中几乎没有任何与cameraX api相关的教程,因此很难理解api是如何工作的……代码给了我一个运行时异常,其中指出 “无法将活动强制转换为lifeCycleowner”Android:无法将LifeCycleOwner强制转换为CamerX预览代码中的活动错误,android,android-lifecycle,android-camera2,android-camerax,Android,Android Lifecycle,Android Camera2,Android Camerax,我正在尝试使用相机API在textureView上显示相机预览。。。 java中几乎没有任何与cameraX api相关的教程,因此很难理解api是如何工作的……代码给了我一个运行时异常,其中指出 “无法将活动强制转换为lifeCycleowner” 创建自定义生命周期 //lifecycle for camera CustomLifecycle lifecycle=new CustomLifecycle(); lifecycle.doOnResume();
创建自定义生命周期
//lifecycle for camera
CustomLifecycle lifecycle=new CustomLifecycle();
lifecycle.doOnResume();
lifecycle.doOnStart();
CameraX.bindToLifecycle(lifecycle, preview,imageCapture);
public class CustomLifecycle implements LifecycleOwner {
private LifecycleRegistry mLifecycleRegistry;
CustomLifecycle() {
mLifecycleRegistry = new LifecycleRegistry(this);
mLifecycleRegistry.markState(Lifecycle.State.CREATED);
}
void doOnResume() {
mLifecycleRegistry.markState(Lifecycle.State.RESUMED);
}
void doOnStart() {
mLifecycleRegistry.markState(Lifecycle.State.STARTED);
}
@NonNull
public Lifecycle getLifecycle() {
return mLifecycleRegistry;
}
}
camerax的官方代码实验室已经建议您必须更新appcompat依赖项: 如果Android Studio抱怨“this”不是LifecycleOwner,请尝试重建项目或将appcompat依赖项更新到1.1.0或更高版本 查看以下链接:
我发布的代码运行良好,现在我犯了在活动中实现它的错误。它必须在一个片段中实现:|
这个
需要继承自FragmentActivity
,例如通过扩展AppCompatActivity
。如果此处只有一个普通的活动
,则该操作无效。您的意思是不能将活动强制转换为LifeCycleOwner
而不是另一个相反的对象吗?请添加完整的代码。
//lifecycle for camera
CustomLifecycle lifecycle=new CustomLifecycle();
lifecycle.doOnResume();
lifecycle.doOnStart();
CameraX.bindToLifecycle(lifecycle, preview,imageCapture);
public class CustomLifecycle implements LifecycleOwner {
private LifecycleRegistry mLifecycleRegistry;
CustomLifecycle() {
mLifecycleRegistry = new LifecycleRegistry(this);
mLifecycleRegistry.markState(Lifecycle.State.CREATED);
}
void doOnResume() {
mLifecycleRegistry.markState(Lifecycle.State.RESUMED);
}
void doOnStart() {
mLifecycleRegistry.markState(Lifecycle.State.STARTED);
}
@NonNull
public Lifecycle getLifecycle() {
return mLifecycleRegistry;
}
}