• [Xamarin] 從Xamarin中呼叫 *.jar 的 library


    上篇文章我們建立一個很簡單的Library : com.example.blackfactory.UtilFunc 現在我們要在Xamarin 中呼叫囉!

    首先我們要先成立一個橋接的專案 JARBridge ,這邊請注意 需要開 Java Bindings Library

    2013-09-14_152842

    接下來預設在專案中有一個Jars的檔案夾,我們就嵌入上篇文章中的 blackfactory.jar 
    2013-09-14_152913

    2013-09-14_152957

    很重要一點請將該檔,在property 中 Build Action 設定成  Embeddedjar 

    2013-09-14_153019

    這時候我們建立一支 Util.cs 來做轉介呼叫

      2013-09-14_153046

    C# Code :

    using Com.Example.Blackfactory;
     
    namespace JARBridge
    {
     
        public class JARUtil
        {
            /// <summary>
            /// 將美金換台幣
            /// </summary>
            /// <param name="d"></param>
            /// <returns></returns>
            public double ConvertUS2NTFormJAR(double d)
            {
                //轉呼叫JAR 中的Method
                return UtilFunc.ConvertUSToNT(d);
            }
     
     
            /// <summary>
            /// 取得貨幣轉換資訊
            /// </summary>
            /// <param name="nation"></param>
            /// <returns></returns>
            public CurrencyInfo GetCurrencyInfoFormJAR(string nation)
            {
                return UtilFunc.GetCurrencyInfo(nation);
            }
        }
     
    }

    記得要using Com.Example.Blackfactory 你放心這些東西Xamarin 很溫馨的都有 intelligence sense

    2013-09-14_161244
    接下來建立一個主要的專案,剛剛那專案只是負責拿來橋接得而已 請注意,新建立好主要的專案記得設成Default Project 不然你會發現怎麼都執行不起來
    2013-09-14_154256
    Layout Code :

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <Button
            android:id="@+id/btnCallJar"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="呼叫JAR METHOD" />
    </LinearLayout>

    2013-09-14_161449
    Main Actiivity C#  Code :

    using Android.App;
    using Android.Widget;
    using Android.OS;
     
    namespace TestCallJar
    {
        [Activity(Label = "TestCallJar", MainLauncher = true, Icon = "@drawable/icon")]
        public class Activity1 : Activity
        {
     
            protected override void OnCreate(Bundle bundle)
            {
                base.OnCreate(bundle);
     
     
                SetContentView(Resource.Layout.Main);
     
     
                var btnCallJar = FindViewById<Button>(Resource.Id.btnCallJar);
     
                btnCallJar.Click += delegate
                    {
                        var jarProvider = new JARBridge.JARUtil();
                        Toast.MakeText(this,
                                       " 100美金轉臺幣為 " + jarProvider.ConvertUS2NTFormJAR(100) + "," +
                                       jarProvider.GetCurrencyInfoFormJAR("en").NationName + "!!", ToastLength.Long).Show();
                    };
            }
        }
    }
     

    記得不要忘記去reference JARBridge  這專案

    2013-09-14_154404

    測試結果:
    shot_000005

     

    參考:
    http://docs.xamarin.com/guides/android/advanced_topics/java_integration_overview/binding_a_java_library_(.jar)

  • 相关阅读:
    Linux 防火墙配置
    【存在问题,待修改】SSH 远程登陆
    Hadoop 本地模式安装
    CentOS7 安装 JDK
    JS的DOM操作
    JavaScript
    格式与布局(定位)
    样式表
    表单、内嵌网页
    HTML中的一般标签、常用标签和表格
  • 原文地址:https://www.cnblogs.com/whatthehell/p/3444939.html
Copyright © 2020-2023  润新知