Developing An Android Language and Chat App
I have dove in and out of android Studio but I have not made any large scale project with it, it started with trying to make a native plug-in to be used in Unity. then I have decided to get a better understanding of how android studio works and what I need to learn about it, and some differences between using Java and Kotlin.
It was to use an online database using Firebase for the chat function and User database of the app and an SQLite for the internal Language database
There were two methods to log in one was using OPT verification also an email login method, there was the ability to use Google, Linkedin, and Facebook to login but I decided not to implement those, and would implement them further down the line as it was easy to do after understanding how to do the login setup/
The system used the Firebase Realtime Database and Cloud database depending on what I was using.
The login used safeguards like empty string and not a varified email format so that it would not send a request to the database to search for an email format or empty inquiry and would give the user feedback on what the issue was as well.
- Feedback is very important when developing an application so the user would have an easier time understanding what is happening and it is a part of any application to do well because that could cause an application to fail and would be a bad experience for the user overall.
This section was the Chat prototype it had the general UI elements like date and Message status.
The top status was a drop-down menu. there was an ability to send a translation request so that the other person would be able to translate it for you in a special message layout as it was a language and chat app.
- A profile Activity was made a good note is to handle the sending of images be it from profile or messages and how to deal with it as it sends the image to the database so you should disclose that to the user.
There was The ability to add and update words, and with the saved words you could have a quiz section similar to flashcards or whatever format you chose it to be. and they would be added depending on the toggle under the translation section.
I was attempting to have the ability to add Sentences and grammar but the UI was a placeholder UI, but it would save and load to the database.
- Note: Saving an image to SQLite you would need to convert it into a blob.
I wanted to have an image displayed in each language, that was the reason for adding images to the database, I could have taken a reference to the URI of the image but I wanted to contain it within the application incase of deletion and I could compress the image my self as well.
I have also created a system that handles duplication to the database it will give you some feedback be it that it already exists or empty parameters as it would cause issues with the database perhaps, and would be difficult to remember for the user.
Furthermore for the sentences section if you have a word that was saved in your words library/ Dictionary it would be highlight and if you click the word it will give you the translation of it.
And this ties into saving words, so instead of copying the text to your dictionary if you are messaging someone within the app you could highlight the word and save it to your dictionary as pop up to save to the correct language, and if it is a word or sentence depending on what you have selected.
I also wanted to be able to save words to the application from anywhere outside the application I have found the method to do it and tested it in another project but it is a feature that should be implemented.
I wanted the grammar UI to have a specific structure, but I realized that wouldn't be a great idea (from a programmers point of view speaking ) because other languages have different grammar structures which are generally fine, but then how do you know what languages are going to be used, for example in Japanse you can omit the pronoun from the beginning or it is grammatically correct to switch the order of the sentence around and that would be an issue to program various different grammar structure for each language and I would need to detect what language it was, etc.
the workaround was to have a bubble drop down to indicate if it was a noun, verb, etc, which was going to look different from the word activity.
I also worked on different types of notifications, and their various methods to achieve this some would use a third-party service to handle, and coding it your self using an API.
- Tip: Test often, and handle exceptions and scenarios you could not think of before testers as a catch-all or default response, as you don't want your application to cash for unexpected behavior or reason, which will be a bad idea if you want to release it to google store as there is a criteria to be met for it to be placed on the store.