Abstract: SyncBoard: Synchronizing Virtual Keyboards among Multiple Smart Devices

My research project is to develop an application called “SyncBoard” that can be installed on Android devices to synchronize virtual keyboards among multiple smart devices. This application is aimed to solve a real life scenario: when people buy a new smart device, they find the default keyboard input very hard to use because the well-personalized keyboard input prompt that learned from their typing habits is gone by changing to the new device. The default keyboard input is based on an average calculation of people’s typing habits, but everyone has his or her own habits that cannot be covered by the default keyboard input. As a result, users feel that their new keyboards are inconvenient, and genuinely want their old keyboard input prompt on their new devices. So, in this summer project, I am creating an app to solve the problem of the inability to transfer memory of keyboard input from one device to another. By resolving this problem, users can type faster and easier on their new devices because they do not need to train their keyboards to be individualized again.

system architecture

There are tons of apps on Google Play now focusing on “fancier” keyboard layout: different themes, more emoji faces and supporting more languages. Also, lots of apps are focusing on transferring data, like photos and documents, from one Android device to another. However, no one is targeting transferring the memory of keyboard input from one device to another. As a result, my app is unique and unprecedented.


In my app, I am focusing entirely on transferring the old, individualized keyboard input prompt that has been memorized to the new smart device’s input prompt system and changing it according to the memorized one. As shown in Figure 1, the app first gets in the old device’s keyboard behavior data and backs up behavior data using the behavior meter inside the app.Second, the app uploads data saved in the behavior meter into a cloud that can safely store the data. This cloud includes two parts, which are the behavior synchronizer and the database. The behavior synchronizer is used to merge data collected from different devices by the same user uploaded by behavior meters. When a user wants his or her new keyboard input has memories from multiple devices, he or she can download the app on all of the devices and upload keyboard inputs from every device to the cloud. Then, the behavior synchronizer in the cloud merges uploaded keyboard input and save a final behavior data to the database. Third, the behavior manager replaces the user’s keyboard input with the merged one downloaded from the cloud. In this way, the user can have a more personalized keyboard input.


In regard to coursework, I have taken the basic introduction classes to programming (CSCI 141, 241), and followed by discrete mathematics (CSCI 243) that underlies computer science. I am taking Computer Organization (CSCI 304) this semester and will finish it before I begin the research this summer. In addition, I am taking a Coursera course online called Creative, Serious and Playful Science of Apps. This course teaches me how to develop apps in Java on Android, and the skillset is closely related to this research project. For programming language, I have experience with Python, Java and C. I have a strong background in Mathematics: I have taken all the math classes required for majoring in computer science, namely: Math 111(Calculus I), 112 (Calculus II) and 211 (Linear Algebra), and I also took Math 212 (Multivariable Calculus), and 302 (Differential Equations). I have my support from my academic advisor and research advisor Gang Zhou, who listened to my idea carefully and helped me to build the system architecture for my app. During this research, I am able to use the computer lab, and the Internet to search in the IEEE digital library, the ACM digital library and various conferences websites for professional publications that are related to my research.  However, some of these websites need to be paid to get into specific database and thus I do not have access to all of them now. In this summer research, I am going to develop my app based on the system architecture as shown in Figure 1, and the outcome of my research is a fully developed app that is targeted to solve the problem of inability to transfer the keyboard input from one device to another, and the app will be posted on Google Play for people to download. By doing this research, I will be able to have deeper insights on how to develop an Android app, how to do scientific research and also how to turn an idea into an actual product that can practically be used. All of those experiences are invaluable for me and I will certainly be a better thinker and programmer after doing this research.