C# 从Xamarin调用异步android mag stripe库

C# 从Xamarin调用异步android mag stripe库,c#,android,xamarin,C#,Android,Xamarin,如果解释得不好,很抱歉。我正在开发一个xamarin应用程序,我们的客户用它来扫描条形码。iOS和Android都有前端。这部分工作正常,但我正在尝试添加代码,以便在某些android设备上访问mag stripe阅读器。我可以检测代码中是否有正确的设备。不幸的是,mag stripe阅读器代码是异步的,因此换句话说,它有一个等待滑动的侦听器。我有实现磁条阅读器功能的示例android应用程序,但我无法集成到Xamarin应用程序中。 我试着打电话给完整的应用程序 protected o

如果解释得不好,很抱歉。我正在开发一个xamarin应用程序,我们的客户用它来扫描条形码。iOS和Android都有前端。这部分工作正常,但我正在尝试添加代码,以便在某些android设备上访问mag stripe阅读器。我可以检测代码中是否有正确的设备。不幸的是,mag stripe阅读器代码是异步的,因此换句话说,它有一个等待滑动的侦听器。我有实现磁条阅读器功能的示例android应用程序,但我无法集成到Xamarin应用程序中。
我试着打电话给完整的应用程序

    protected override void OnCreate(Bundle savedInstanceState)
    {

         var intent = new Intent(Xamarin.Forms.Forms.Context, typeof(JanamScanActivity));
         StartActivityForResult(intent, 1);

    }

    protected override void OnActivityResult(int requestCode, [GeneratedEnum] Android.App.Result resultCode, Intent data)
    {
        base.OnActivityResult(requestCode, resultCode, data);

    }
但它不会返回我需要的结果,而且我相信它无论如何都太慢了。扫描和磁条读取是在具有do while循环的任务中完成的。当前扫描程序代码正在使用片段

   StartScanning();

  ((MainApplication)Activity.Application).scannerFragment.ResumeAnalysis();

我有没有办法创建一个没有用户界面的android库,我可以从Xamarin调用它。目前,库代码在我没有runOnUIThread时会抱怨,因为它需要一个活动

 private void postMSRStateChange(final EngineState state)
    {
        runOnUiThread(new Runnable(){
            @Override
            public void run() {
                handleMSRStateChange(state);
            }
        });
    }


    protected MsrResultCallback mCallback = new MsrResultCallback() {
        @Override
        public void onResult(final int cmd, final int status) {
            runOnUiThread(new Runnable() {
              @Override
                public void run() {
                    System.out.println("onResult");
                    // MSR engine is on another thread. When we get the callback, post the
                    // event to our own message queue then handle the event in the main thread.
                    // Not doing so can/will cause application crash.

                    handleSetResult(cmd, status);
                }
            });
        }
    };

对不起,我把这弄糊涂了

我现在要去另一个方向。我正在制作一个在后台运行的独立应用程序。感谢所有看过这个的人

看来我要把它变成一个单独的android服务,让它更容易实现。感谢所有看过这个的人。所以我不知道这是否意味着你现在解决了你的问题?如果是,请在这里分享您的解决方案,并将您的回答标记为答案,谢谢。不完全如此,但我现在正朝着不同的方向前进。所以如果你是这么建议的话,我想我可以回答我的问题。