Android 導入別人的工程(成爲主工程的library),手把手教學

引言:導入封裝好的功能工程在自己的工程上,等於直接 給自己的工程上一件“裝備”,提升實力
PS:我曾經代入別人的工程,並實現了主工程(Application)和導入工程(library)的界面跳轉與函數的調用。其中有各種各樣的困難和錯誤,所以我找兩個獨立的工程,和並在一起,我每一步都以截圖並講解,手把手教導,大家可以自己找兩個工程來練練手,大家在哪一步有疑問的,評論說出來,成功的點個贊。
本來想弄兩個簡單的工程合併的,如:一個button的,TextView的,但這樣大家看來也沒什麼興趣。那我就弄一個有趣的工程合併。——————芝麻開燈。
芝麻開燈:一個是訊飛的語音識別工程,另一是我的WIFI調試助手源碼工程,使用效果如下:按下按鈕,說芝麻開燈,然後我的STM32就亮一盞燈,芝麻關燈就反之,其他指令無效。
好的現在開始我們的手把手教學。
1.成功導入工程,這些功能工程的設置和你的Android stduio 的版本號和設置不一定是相符。
都是成功建立的。在這裏插入圖片描述
在這裏插入圖片描述
工程代碼
語音程序如圖:支持聊天和文字朗讀
WIFI客戶端
在這裏插入圖片描述
2.確認那個是library(導入的工程)
我把ChatRobot 作爲導入的工程,Mpplication 作爲主要工程。
(1).打開ChatRobot工程,設置爲library.
修改的位置:
在這裏插入圖片描述
修改的內容:

修改位置1 apply plugin: 'com.android.application’改爲apply plugin: 'com.android.library’
在這裏插入圖片描述
在這裏插入圖片描述
會出現一個提示,不要理會。
修改位置2
路徑:在這裏插入圖片描述
刪除app的封裝設置,如圖標、界面、名字之類的。
刪之前:
在這裏插入圖片描述
刪之後:
在這裏插入圖片描述
我是刪這麼多的,留下兩個,一個是允許返回,一是活動。我覺的這兩個是很必要的。
看不清楚的,看下面的代碼(圖中的)


    <application
        android:allowBackup="true"
        android:icon="@drawable/asd"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.yile.chatrobot.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
<application
        android:allowBackup="true">
        <activity
            android:name="com.yile.chatrobot.MainActivity">

        </activity>
    </application>

然後保存工程,然後關閉工程注意:建議關閉library工程,有導入不了的可能
在這裏插入圖片描述
(2).現在要在Mpplication (主要工程)導入ChatRobot(library)
點擊Import Module
在這裏插入圖片描述
在這裏插入圖片描述
選擇library的路徑:
在這裏插入圖片描述
然後點擊OK
填寫import的名字,然後finish。
在這裏插入圖片描述
然後就成功導入library。
在這裏插入圖片描述
重新編譯也沒出錯。
然後要在主程序上,引用library這包,才能使用library裏面代碼。
(1).點擊Project Strycture.
在這裏插入圖片描述
(2).看圖
在這裏插入圖片描述
(3).
在這裏插入圖片描述
(4).在這裏插入圖片描述
在這裏插入圖片描述
測試:在這裏插入圖片描述
能·import library裏Java文件。灰色的原因是我沒使用。
(以上Android 導入別人的工程(成爲主工程的library),手把手教學)的全部內容,我都是一邊做,一邊截圖,一邊寫博客的,可靠性很高。

下面講解實例代碼(芝麻開燈),主要學習的是主工程(Application)和導入工程(library)的界面跳轉與函數的調用,我想一起講,我覺得這本來就放在一起學習的。
看圖:在這裏插入圖片描述
這兩個都是工程的活動(activity),兩個別再兩座山上如何連接呢?
我要講的是“連”在一起的方法。
1.首先是學習的是兩個界面的跳轉,
(1).兩邊各定義一個跳轉按鍵。
(2).主界面跳轉到library的界面

在這裏插入圖片描述
在按鍵上寫上跳轉代碼
Intent IntentA = new Intent();
IntentA.setClass(clientActivity.this,MainActivity.class);//語音識別
startActivity(IntentA);
(2)library跳轉到主界面的界面
跳轉界面不是用setClass,而是用setComponent在這裏插入圖片描述
把位置寫清楚。 ComponentName comp = new ComponentName(this, “com.example.administrator,mpplication.clientActivity”);
在按鍵上寫上跳轉代碼
Intent IntentB= new Intent();
IntentB.setComponent(comp);
startActivity(IntentB);
這樣就實現,兩個界面的跳轉。
小結:主工程 import library ,就是有直接的關係,所以能直接跳轉到library 的界面;而library 不可以import 主工程,沒有直接關係,要託關係才能找到。
2.學習的函數調用
主工程爲我的WiFi調試助手,library爲訊飛的語音識別。
兩邊都設置一個按鈕(點擊後,說:“芝麻開燈或關燈”,能發送十六進制在我的PC端,這裏我就不上單片機了,原理是一樣的。)
主工程能調用library裏面的函數,而library暫時不能調用主工程裏面的函數(ps:我在網上找不到)。
主工程能調用library裏面的函數方法:
1.首先主工程要import library。
在這裏插入圖片描述
2.要在library 裏定好位置。
在這裏插入圖片描述
public static MainActivity instancechatrobot=null;
3.然後獲取位置信息:在這裏插入圖片描述
然後定義回調函數:
例如:
public int yuyinreturn()
{
return send;
}
public void yuyinreqingling(int a)
{
send=a;
}
public String yuyinwenzi()
{
return wenzi;
}

然後主程序調用這些在library的函數:
String wenzichulichuli=com.yile.chatrobot.MainActivitychat.instancechat.wenzichuli();
這樣能直接把library的語音處理結果在工程裏使用。
我的芝麻開燈的程序還在編寫中,有BUG,是按下按鍵後,獲取的語音識別是空(null),原因是語音識別要先發送你的話到訊飛的語音終端,再回復您的問答。一問一答要時間,而按鍵按下會直接獲取當時回答或提問,而你還沒開始問。所以我要在兩邊加個線程,合理正確處理信息。代碼之後發佈,有興趣的評論點贊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章