xamarin - 我正在尝试在 Xamarin Android 中使用 Google ARCore sceneform SDK。但我在“ModelRenderable.InvokeBuilder().SetSource()”方法中遇到错误
问题描述
我正在尝试在 Xamarin Android 中使用 Google ARCore sceneform SDK。但我收到错误:
Java.Lang.NoSuchMethodError: '没有非静态方法 "Lcom/google/ar/sceneform/rendering/ModelRenderable$Builder;.setSource(Landroid/content/Context;I)Ljava/lang/Object;"'
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
if (!CheckIsSupportedDeviceOrFinish(this))
{
return;
}
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.activity_main);
int requestPermissions=0;
string cameraPermission = Android.Manifest.Permission.Camera;
if (!(ContextCompat.CheckSelfPermission(this, cameraPermission) == (int)Permission.Granted))
{
ActivityCompat.RequestPermissions(this, new String[] { cameraPermission, }, requestPermissions);
}
arFragment = (ArFragment)SupportFragmentManager.FindFragmentById(Resource.Id.ux_fragment);
ModelRenderable.InvokeBuilder().SetSource(this, Resource.Raw.andy).Build(((renderable) =>
{
andyRenderable = renderable;
}));
//add the event handler
arFragment.TapArPlane += OnTapArPlane;
解决方案
你应该尝试Java反射......它对我有用。
var builder = ModelRenderable.InvokeBuilder();
var javaClass = Java.Lang.Class.FromType(builder.GetType());
var method = javaClass.GetMethod("setSource", Class.FromType(renderableDefinition.GetType()));
method.Invoke(builder, renderableDefinition);
var future = builder.Build();
var model = future.Get();
推荐阅读
- neo4j - Gremlin/Janusgraph 中的多个顶点标签是否可能,或者是否有更好的替代解决方案?
- arrays - 从文件中读取字符串并转换为数组 Julia
- android - 当片段返回的数据为空时,如何在视图寻呼机中动态操作片段
- amazon-web-services - 如何为每个在aws中动态登录我的网站的用户创建子域
- r - 通过 id 重塑并保持其他变量不变
- visual-studio-2017 - 无法在代码中使用我安装的 NuGet 包
- angular - 可以为角材料中的垫子图标禁用制表位吗?
- node.js - 在 GCP 中处理长时间运行的任务(但不是 CPU、内存密集型)的最佳方法
- python - 如何更好地识别导致python中分段错误的原因?
- django - 芹菜节拍每分钟运行一次,而不是每 15 分钟运行一次