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),原因是语音识别要先发送你的话到讯飞的语音终端,再回复您的问答。一问一答要时间,而按键按下会直接获取当时回答或提问,而你还没开始问。所以我要在两边加个线程,合理正确处理信息。代码之后发布,有兴趣的评论点赞。

原创文章 21 获赞 6 访问量 5351

猜你喜欢

转载自blog.csdn.net/weixin_44244812/article/details/104381099