The nextstep is the preprocessing step, which involves applying the Hamming windowfunction for each segment to suppress high frequencies at the boundaries of thesegment.
These frequencies are the result of truncating the signal andadversely affect the recognition accuracy. Then we need to calculate theFourier transform for each input interval. In this paper was used a fastFourier transform (Fast Fourier Transformation). In the process of developing functions it was decided totake as a basis an architectural solution that would separate the graphicinterface from the business logic, and business logic from the data. Thus,among the patterns, the best solution was the MVC pattern, which consists ofthree parts: model, view, controller.Model – is apart that contains the application’s business logic. The model classes aredesigned to model the entities the application is dealing with. The objects ofthe model do not know anything about the user interface, their sole purpose isto store and manage the data.
The viewincludes the display of data received from the Model. However, the view can’tdirectly affect the model. The view has read-only access to the data.Objects ofcontrollers connect objects of representation and models, they contain”application logic”. Controllers respond to various events triggeredby view objects, and manage data flows between model objects and thepresentation layer.Advantage ofthe MVC:Theapplication can become functional until it becomes too complicated tounderstand.
Separation of code into classes simplifies the design andunderstanding of the application as a whole. Similarly, splitting the classesinto model, view, and controller levels simplifies the design and understandingof the application. To store thearray-lists of POST codes, sound signals and others lists, a singlet(singleton) class will be used. Such classes allow the creation of only oneinstance.The instanceof the singlet class exists as long as the application remains in memory, sothat when the list is stored in the singlet object, the data remains available,whatever happens to the activities, fragments, and their life cycles.To displaythe lists, the RecyclerView widget will be used. The RecyclerView widget is anextended and more flexible version of the ListView. It is a container fordisplaying large datasets that can be scrolled efficiently while preserving alimited number of views.
The RecyclerView class is a subclass of the ViewGroup.It displays a list of child View objects, one for each element. It is much moreefficient to create view objects only when they are really needed. TheRecyclerView widget does just that. Instead of creating 100 View views, itcreates an amount sufficient to fill the screen.
And when the View widget goesbeyond the screen, RecyclerView uses it again, thus saving the amount ofmemory.TheRecyclerView widget never creates View objects. It always creates ViewHolderobjects that bring the itemView with them (Figure 9.6).
TheRecyclerView widget does not create the ViewHolder independently. Instead, itmakes a request to the adapter, the controller object that is between theRecyclerView and the data set with the information that RecyclerView shoulddisplay. The adapteris responsible for: · creating the necessaryViewHolder objects; · link ViewHolder to the datafrom the model level.When theRecyclerView widget requires a view object to display, it enters into a dialogwith its adapter. In Figure 9.
7 shows an example of a possible dialog that canbe initiated by the RecyclerView. First, RecyclerView asks for the total numberof objects in the list, for which it calls the adapter’s getItemCount() method.Then, RecyclerView calls the createViewHolder(ViewGroup, int) method on theadapter to create a new ViewHolder object.
Finally,RecyclerView calls onBindViewHolder(ViewHolder, int). RecyclerView passes thismethod a ViewHolder object and a position. The adapter retrieves the model datafor the specified position and associates it with the View View of theViewHolder object. To perform the binding, the adapter fills View according tothe data from the model object.
After this process is complete, theRecyclerView puts the list item on the screen. Note: the createViewHolder(ViewGroup, int) method is called much less often than onBindViewHolder(ViewHolder, int). After enough ViewHolder objects have been created,RecyclerView ceases to call createViewHolder (.
..). Instead, it saves time andmemory by reworking old ViewHolder objects.