为Android应用程序创建自定义用户界面
这个例子展示了如何使用Simulink®Android™设备支持包为万博1manbetx万博1manbetxAndroid应用程序创建和集成定制的用户界面(UI)。
先决条件
有关如何使用Android设备的Simulink支持包在Android万博1manbet万博1manbetxx设备上运行Simulink模型的更多信息,请参见开始使用Android设备.
所需的硬件
安卓设备,如手机或平板电脑
USB连接线连接设备到主机
硬件设置
使用USB线将Android设备连接到主机。
为Android应用程序创建和集成自定义UI的工作流程
使用本节描述的工作流程在Android设备上创建和定制自己的用户界面。
1.创建一个新的Simulin万博1manbetxk模型,并连接FromApp, ToApp, Terminator, Constant和Add块,如图所示。
2.在MATLAB®中,对硬件选项卡,在模式部分中,点击在船上奔跑.在部署部分中,点击构建从下拉菜单中。
3.在当前文件夹面板的MATLAB, Simul万博1manbetxink创建一个项目文件夹。在Android Studio中,导入此项目文件夹。有关如何将项目导入Android Studio的更多信息,请参见导入项目到谷歌Android Studio.
4.在Android Studio中,创建一个新的活动文件。
5.在modelname.java
文件,在代码的末尾,将此代码添加到倒数第二个右括号之后。
公共无效startModel(){if (!BgThread.isAlive()) {BgThread.start();}}公共接口MyCustomObjectListener{公共无效ToAppMethod(字节[]数据);[] FromAppMethod();} MyCustomObjectListener listener = null;公共无效setCustomObjectListener(MyCustomObjectListener侦听器){这个。听者=听者;}公共无效ToAppMethod(byte[] data){if(listener != null) listener.ToAppMethod(data);}公共字节[]FromAppMethod(){if(listener != null)返回listener.FromAppMethod();否则返回null;}
的MyCustomObjectListener
接口方法必须包含Simulink模型中存在的FromApp和ToApp方法。万博1manbetx方法签名必须与Simulink模型中存在的FromApp和ToApp块匹配。万博1manbetx
6.在新的活动文件中,继承modelname类并实现MyCustomObjectListener
接口方法。
在
oncreate
,添加这行代码来设置自定义对象列表,并从modelname活动获取回调:super.setCustomObjectListener(这个);
在
onresume
,添加这行代码来启动模型:super.startModel ();
将此方法添加到前面代码末尾的新活动文件中
}
:
@重写公共无效ToAppMethod(byte[] data){//处理}
@覆盖公共字节[]FromAppMethod(){//处理//返回数据}
7.将新活动设置为Android Studio中的应用程序启动器活动(此活动默认显示在Android应用程序上)安卓>项目,导航到src \ \ AndroidManifest.xml主要
归档并删除这些代码行。
“android.intent.action.MAIN”/>
. filter
8.将这些代码行添加到活动
标签。
<活动android: name =".MainActivity”android:主题=“@style / Theme.AppCompat.Light.DarkActionBar”>“android.intent.action.MAIN”/>
在代码中,替换MainActivity
与您的Android应用程序的活动。
9.在Android设备上部署应用程序。
配置Simulink万博1manbetx模型和校准参数
在本例中,使用前面描述的工作流在Android设备上创建自定义应用程序androidCustomInteg
万博1manbetx仿真软件模型。该应用程序对您选择的输入图像执行图像处理,并将处理后的图像作为输出显示在Android应用程序上。
要打开Simulink模万博1manbetx型,在MATLAB命令窗口中运行这个命令。
open_system (“androidCustomUIInteg”)
从生成的Android应用程序中的方法接收数据
FromApp块从Android应用程序的这些方法接收数据。
GetImage
-获取输入图像。GetAlgo
-获取图像处理算法。GetText
-在图像中插入输入文本。GetPosition
-获取图像的位置。
为GetImage
方法,FromApp块具有这些参数值。
方法名称- - - - - -
GetImage
.数据类型- - - - - -
uint8
.数据量(N)- - - - - -
480000
.样品时间- - - - - -
1
.
为GetAlgo
方法,FromApp块具有这些参数值。
方法名称- - - - - -
GetAlgo
.数据类型- - - - - -
uint8
.数据量(N)- - - - - -
1
.样品时间- - - - - -
1
.
为GetText
方法,FromApp块具有这些参数值。
方法名称- - - - - -
GetText
.数据类型- - - - - -
uint8
.数据量(N)- - - - - -
10
.样品时间- - - - - -
1
.
为GetPosition
方法,FromApp块具有这些参数值。
方法名称- - - - - -
GetPosition
.数据类型- - - - - -
单
.数据量(N)- - - - - -
1
.样品时间- - - - - -
1
.
过程图片
的过程图片
MATLAB函数块包含模型对输入图像执行的图像处理算法Imin
.
您可以对输入图像执行这些图像处理操作。
将图像沿垂直轴翻转
在图像中插入字体大小为30的文本
调整图像的对比度
对图像应用几何变换
将图像旋转90度
将图像旋转270度
补充图像
双击过程图片
MATLAB函数块打开的函数。您可以编辑此函数的参数以适应您的图像处理需求。
将数据发送到生成的Android应用程序中的方法
ToApp块将处理过的图像数据发送给应用程序。的ToApp块具有这些参数值。
方法名称- - - - - -
ShowImage
.参数数- - - - - -
1
.
在Android设备上部署和运万博1manbetx行Simulink模型
1.在硬件选项卡,在模式部分中,选择在船上奔跑.
2.在部署部分中,点击构建从下拉菜单中。在当前文件夹在MATLAB中,Simulin万博1manbetxk创建一个项目文件夹,androidCustomUIInteg_ert_rtw
.
3.打开Android Studio并选择文件>新>导入项目.
4.在“选择要导入的Eclipse或Gradle项目”对话框中,导航到项目文件夹。
5.选择与项目同名的第二级项目文件夹。例如,在androidCustomUIInteg_ert_rtw
项目文件夹中,选择androidCustomUIInteg
文件夹中。
6.点击好吧.
7.在“Android SDK管理器”对话框中,单击使用Android Studio的SDK.
8.在androidCustomUIInteg
项目,在左窗格中选择安卓>项目,然后导航到src \ \ java \ com.example.androidCustomUIInteg主要\ androidCustomUIInteg
文件。
9.在androidCustomUIInteg.java
文件,在代码的末尾,将此代码添加到倒数第二个右括号之前。
公共无效startModel(){if (!BgThread.isAlive()) {BgThread.start();}}公共接口MyCustomObjectListener{公共无效ShowImage(字节[]数据);公共字节[]GetImage();公共字节[]GetAlgo();公共字节[]GetText();public float[] GetPosition();} MyCustomObjectListener listener = null;公共无效setCustomObjectListener(MyCustomObjectListener侦听器){这个。听者=听者;}公共无效ShowImage(byte[] data){if(listener != null) listener.ShowImage(data);}公共字节[]GetImage(){if(listener != null)返回listener.GetImage(); else return null; } public byte[] GetAlgo(){ if(listener != null) return listener.GetAlgo(); else return null; } public byte[] GetText(){ if(listener != null) return listener.GetText(); else return null; } public float[] GetPosition(){ if(listener != null) return listener.GetPosition(); else return null; }
10.在MATLAB中,通过在MATLAB命令窗口中输入此命令来更改当前文件夹。
cd (fullfile (matlabshare万博1manbetxd.supportpkg.getSupportPackageRoot,“工具箱”,“目标”,“万博1manbetxsupportpackages”,“android”,“androidexamples”,“CustomUI”))
11.右键单击ImageEffects.java
存档并选择复制.
12.在Android Studio中androidCustomUIInteg
项目,在左窗格中选择安卓>项目,然后导航到src \ \ java \ com.example.androidCustomUIInteg主要
.然后,粘贴ImageEffects.java
文件。
13.在MATLAB中,通过在MATLAB命令窗口中输入此命令来更改当前文件夹。
cd (fullfile (matlabshare万博1manbetxd.supportpkg.getSupportPackageRoot,“工具箱”,“目标”,“万博1manbetxsupportpackages”,“android”,“androidexamples”,“CustomUI”))
14.右键单击imageeffects.xml
存档并选择复制.
15.在Android Studio中androidCustomUIInteg
项目,选择安卓>项目,然后导航到src \ \ res \主要布局
.然后,粘贴imageeffects.xml
文件。
16.在安卓>项目,导航到src \ \ AndroidManifest.xml主要
归档并删除这些代码行。
“android.intent.action.MAIN”/>
. filter
17.将这些代码行添加到活动
标签。
<活动android: name =".ImageEffects”android:主题=“@style / Theme.AppCompat.Light.DarkActionBar”>“android.intent.action.MAIN”/>
18.要将应用程序部署到您的Android设备上,请从Android Studio IDE工具栏下方的项目名称下拉菜单中选择编辑配置
.
19.在“运行/调试配置”对话框中,单击安装选项部分中,选择APK来自应用程序包
从部署下拉。
20.点击应用,然后好吧.
21.从Android Studio IDE工具栏下方的设备名称下拉菜单中,选择您的设备。
22.点击运行将应用程序部署到您的Android设备上并运行它。应用程序自动启动。
23.在Android设备上,从设备图库中选择一个图像。
24.您可以对选定的映像执行这些操作。
从左向右翻转
插入文本
调整对比
形象包装
旋转90
旋转270
图像的补充
其他可以尝试的事情
使用本例中的工作流,尝试实现不同的算法来创建您自己的定制用户界面。