主要内容

为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块具有这些参数值。

  1. 方法名称- - - - - -GetImage

  2. 数据类型- - - - - -uint8

  3. 数据量(N)- - - - - -480000

  4. 样品时间- - - - - -1

GetAlgo方法,FromApp块具有这些参数值。

  1. 方法名称- - - - - -GetAlgo

  2. 数据类型- - - - - -uint8

  3. 数据量(N)- - - - - -1

  4. 样品时间- - - - - -1

GetText方法,FromApp块具有这些参数值。

  1. 方法名称- - - - - -GetText

  2. 数据类型- - - - - -uint8

  3. 数据量(N)- - - - - -10

  4. 样品时间- - - - - -1

GetPosition方法,FromApp块具有这些参数值。

  1. 方法名称- - - - - -GetPosition

  2. 数据类型- - - - - -

  3. 数据量(N)- - - - - -1

  4. 样品时间- - - - - -1

过程图片

过程图片MATLAB函数块包含模型对输入图像执行的图像处理算法Imin

您可以对输入图像执行这些图像处理操作。

  • 将图像沿垂直轴翻转

  • 在图像中插入字体大小为30的文本

  • 调整图像的对比度

  • 对图像应用几何变换

  • 将图像旋转90度

  • 将图像旋转270度

  • 补充图像

双击过程图片MATLAB函数块打开的函数。您可以编辑此函数的参数以适应您的图像处理需求。

将数据发送到生成的Android应用程序中的方法

ToApp块将处理过的图像数据发送给应用程序。的ToApp块具有这些参数值。

  1. 方法名称- - - - - -ShowImage

  2. 参数数- - - - - -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

  • 图像的补充

其他可以尝试的事情

使用本例中的工作流,尝试实现不同的算法来创建您自己的定制用户界面。

另请参阅