2017-10-12 10 views
2

私はクロスプラットフォームのARアプリケーションを開発するためにXamarinを使用しています。私はWikitudeのインスタントトラッキングを使用しています。wikitudeプラグインをxamarin形式で使用するには?

私はWikitudeアクティビティを開始することができ、インスタントトラッキングを実行することができます...トラッキング中に高解像度画像をキャプチャしたい...フレームを取得して変換するためにプラグインを構築しようとしています画像ストリームへ

彼女は私がプラグインを登録している

namespace XamarinExample.Droid 
    { 
     [Activity(Label = "WikitudeActivity")] 
     public class WikitudeActivity : Activity, ArchitectView.IArchitectUrlListener 
     { 
      ArchitectView architectView; 
      string worldUrl; 

      protected override void OnCreate(Bundle bundle) 
      { 
       base.OnCreate(bundle); 

       SetContentView(Resource.Layout.sample_cam); 

       Title = Intent.GetStringExtra("id"); 

       worldUrl = "Wikitude" + File.Separator + Intent.GetStringExtra("id") + File.Separator + "index.html"; 

       architectView = FindViewById<ArchitectView>(Resource.Id.architectView); 

       ArchitectStartupConfiguration startupConfiguration = new ArchitectStartupConfiguration(); 
       startupConfiguration.setLicenseKey(Constants.WIKITUDE_SDK_KEY); 
       startupConfiguration.setFeatures(ArchitectStartupConfiguration.Features.ImageTracking); 
       startupConfiguration.setCameraResolution(CameraSettings.CameraResolution.Auto); 



/////////////////////////////// Register Plugin//////////////////////////////////// 


       var plugins = new Plugin01("test"); 
       architectView.RegisterPlugin(plugins); 

       architectView.OnCreate(startupConfiguration); 
       architectView.RegisterUrlListener(this); 
      } 

    } 

My Plugin code taken from

public class Plugin01 : Com.Wikitude.Common.Plugins.Plugin 
{ 
    public Plugin01(string p0) : base(p0) 
    { 

    }  
    Frame currentFrame = null; 
    public override void CameraFrameAvailable(Frame p0) 
    { 
    System.Diagnostics.Debug.WriteLine("AVAILABLE FRAME"); 
     try 
     { 
      var data = p0.GetData(); 
      currentFrame = p0; 
     } 
     catch (System.Exception ex) { } 
    } 

    public override void Update(RecognizedTarget[] p0) 
    { 
      System.Diagnostics.Debug.WriteLine("AVAILABLE FRAME"); 
     if (p0 != null) 
     { 
      if (currentFrame != null) 
      { 
       // ConvertYuvToJpeg(currentFrame, p0[0]); 
      } 
     } 
    } 

} 

私Wikitudeの活動ですが、それはnですot呼び出し
public override void Update(RecognizedTarget [] p0)メソッド....ここで何が間違っていますか?

+0

コードを正確にどこに絞り込んでください。すべてのコードをダンプして、誰かがあなたに答えを与えることを期待しても動作しません。 – Cheesebaron

+0

こんにちは@Cheesebaron私はコードを絞り込んでいます...私の問題はameraFrameAvailable(フレームp0)でコールバックを取得していません..私は最初のコードスニペットでプラグインを登録しました – pritam001

答えて

1

私はアクティビティのメソッドを呼び出すサイクルが異なることを知っているので、間違ったメソッドで "RegisterPlugin"を呼び出していると思います。アクティビティの "OnPostCreate"メソッドで呼び出す必要があります。 コードの下に試してみて、私は結果を知っている:

protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 
     try 
     { 
      SetContentView(Resource.Layout.Main); 
      architectView = FindViewById<ArchitectView>(Resource.Id.architectView); 
      var config = new ArchitectStartupConfiguration(); 
      config.setLicenseKey(WIKITUDE_SDK_KEY); 
      architectView.OnCreate(config); 
     } 
     catch (Exception ex) { Toast.MakeText(this, ex.ToString(), ToastLength.Long); } 
    } 

protected override void OnPostCreate(Bundle savedInstanceState) 
    { 
     base.OnPostCreate(savedInstanceState); 
     if (architectView != null) 
      architectView.OnPostCreate(); 
     try 
     { 
      try 
      { 
       string url = string.Format(@"file:///android_asset/01_ImageRecognition_1_ImageOnTarget/index.html"); 
       architectView.Load(url); 
       Plugin01 cardPlugin = new Plugin01("com.plugin.dpiar"); 
       architectView.RegisterPlugin(cardPlugin); 
      } 
      catch (Exception ex) { } 
     } 
     catch (Exception ex) { Toast.MakeText(this, ex.ToString(), ToastLength.Long); } 
    } 

は、変数名を変更することを検討。

+0

こんにちは@ハムは働いています:)ありがとうございます。 ...私はおそらくあなたがそれを解決したおそらく1つの質問があります...それは働いているイメージをキャプチャしようとしています....しかし、私はあなたが持っていた同じ問題を抱えています....同じのための添付ファイルをifndしてください – pritam001

+0

あなたの答えを受け入れてください...画像のリンクを見つけてくださいhttps://ibb.co/n3QDd6 – pritam001

+0

私のコードはここにありますhttps://gist.github.com/pritasam/d3f3614ea9cba4e8e8f4725c248a4d00 – pritam001

関連する問題