MOBILE APPLICATION DEVELOPMENT IN ANDROID An Industrial Internship Report submitted by SARTHAK SHAH (14BCE0618) in partial fulfillment for the award of the degree of BACHELOR OF TECHNOLOGY in COMPUTER SCIENCE AND ENGINEERING SCHOOL OF COMPUTING SCIENCE AND ENGINEERING JANUARY, 2017 DECLARATION BY THE CANDIDATE I hereby declare that the Industrial Internship report entitled “MOBILE APPLICATION DEVELOPMENT IN ANDROID” submitted by me to Vellore Institute of Technology, Vellore in partial fulfillment of the requirement for the award of the degree of B.Tech in Computer Science and Engineering is a record of bonafide industrial training undertaken by me under the supervision of Ms. Varshaa Chaurasia and Prof. Santhi H. I further declare that the work reported in this report has not been submitted and will not be submitted, either in part or in full, for the award of any other degree or diploma in this institute or any other institute or university. School of Computing Science & Engineering BONAFIDE CERTIFICATE This is to certify that the Industrial Internship report entitled “MOBILE APPLICATION DEVELOPMENT IN ANDROID” submitted by SARTHAK SHAH (14BCE0618) to Vellore Institute of Technology, Vellore in partial fulfillment of the requirement for the award of the degree of B.Tech in Computer Science and Engineering is a record of bonafide Industrial Internship undertaken by him/her under my supervision. The training fulfills the requirements as per the regulations of this Institute and in my opinion meets the necessary standards for submission. The contents of this report have not been submitted and will not be submitted either in part or in full, for the award of any other degree or diploma in this institute or any other institute or university. Prof. SANTHI H SUPERVISOR Assistant Professor (Senior) Date: Internal Examiner (s) External Examiner (s) ACKNOWLEDGEMENT The internship opportunity provided to me by Manal Softech Pvt. Ltd. has given me a chance to explore industrial standards in technology and has helped me in professional android development. I am thankful to the wonderful professionals with whom I have worked, during the time of internship. I consider myself to be very lucky and grateful to be presented with the opportunity. I acknowledge and thank Ms. Varshaa Chaurasia, the Managing Director of the company, who supervised me throughout the internship period, in spite of her busy and hectic schedule. Her guidance has helped me in my personal growth as well as having a new outlook in approaching technology. I also want to acknowledge and thank Prof. Santhi H., Assistant Professor (Senior), SCOPE, VIT University. She is an excellent mentor. Her knowledge of the industry and technology helped me through the internship period. This internship opportunity is a big milestone in my career. I will continue to use the knowledge and experience gained during the time of the internship for my career advancement. Place: Vellore Date: 30/ 01/17 Sarthak Shah TABLE OF CONTENTS CHAPTER TITLE PAGE NO LIST OF TABLES iii LIST OF FIGURES iv 1 SYNOPSIS 1 2 COMPANY DETAILS 2.1 About the Company 2.2 Company Portfolio 2.3 Company Work Culture 2 3 5 3 SKILLSET PRIOR OF TRAINING 3.1 Skills Developed Through College Courses 3.2 Skills Developed Along Side Academic Curriculum 7 9 4 SKILLS DEVLOPED DURING TRAINING 10 5 PROJECT DESCRIPTION AND APPLICATION 5.1 Introduction About Mobile Technologies 5.1.1 Background About Mobile Technologies 5.1.2 Android 5.1.3 Mobile Application 5.2 Android Building Blocks 5.2.1 Activities 5.2.2 Services 5.2.3 Content Providers 5.2.4 Broadcast Receivers 5.2.5 Intent 5.2.6 Using Intent To Launch The Activities 5.3 Introduction To Development Tool Android Studio 5.4 Android UI Design 5.4.1 Introduction Layouts 5.4.2 Different UI Widgets Available in Android 5.4.3 Dialog Box 5.4.4 Toast 5.4.5 Adapters 5.4.6 Notification Managers 5.5 Database SQLite 5.5.1 SQLite Open Helper 5.5.2 Query 5.5.3 Opening And Closing a Database 11 11 11 12 13 13 15 15 15 16 16 17 18 18 20 20 20 20 20 22 22 23 23 5.5.4 Cursor 5.5.5 Content Provider And Sharing Data 23 24 6 SAMPLE APPLICATION 25 7 SELF EVALUATION 29 8 REFERENCES 30 List of Tables Table 1: Android Version iii List of Figures Fig. 1: Activity Transition Fig. 2: Activity Life Cycle Fig. 3: Main Screen Fig. 4: Taking picture Fig. 5: Negate Image Fig. 6: Image Overlay Fig. 7: Image Overlay Fig. 8: Android Application Development Process Fig. 9: Android Studio iv 1. SYNOPSIS This report is an account of my industrial internship in Manal Softech Pvt. Ltd. for a period of 32 days from 2nd Dec 2016 to 2nd Jan 2017. In this report I have highlighted the skills that I had acquired during my college that had helped me for the period of internship. I have also highlighted the skills that I have obtained as an intern at Manal Softech Pvt. Ltd. During my time at Manal Softech I had closely worked with the development team specifically dealing with Android Development. I have learnt various new concepts and techniques required for a good professional app developer such as online web services (AWS) and worked with new Google API’s such as Google Maps, Google Push Notifications etc. My work at Manal Softech was to learn concepts related to Android application development at professional level. I was taught about the various tools and methods to do the same. In the following Chapter a description of Company, Manal and the activities are given. After this, a reflection on my functioning and skills learned during the internship are described. Finally I give a conclusion on the internship experience I had with the company. 1 2.COMPANY DETAILS 2.1 ABOUT THE COMPANY Manal Softech empower a business with their innovative, effective and affordable web development and mobile application solutions that not only amplify a business’s revenues but also expand the business’s web presence with the power of internet and new age internet enabled devices. Its ecommerce web development services offers businesses an opportunity to strengthen their web presence at a price they can afford and the mobile application services offers businesses customer friendly, easy to use applications that make the business remotely accessible and gives the customer’s a faster access to business services. Their outsourced services are white-labelled and transparent . Looking at the ever growing IT expansion, carrying out an on-site IT makeover can result into an expensive deal. Outsourcing has evolved as big boon for large to many small and medium sized enterprises as well due to its cost effective solutions. Manal Softech perfectly understands a business's needs hence have managed to develop a pool of trained IT staff with a facility to outsource their specialized services so that companies can meet their requirements at affordable costs. Their outsourced mobile application and web development solutions at a price tag comfortable by you without compromising on the quality and level of perfection. Manal Softech helps individuals, small business, or corporate companies in developing and launching their product. It is a company that helps its customer in getting their services off the ground from the ideation stage, to developing their MVP, designing their brand and helping them to scale their products from a hundred user to a million. Manal Softech can be approached by anyone having an idea or design of a product. The team at Manal Softech helps in doing the market research for the idea. Develop solutions, models and design for the idea. 2 Once the customer approves of the design and solution put forth by the team at Manal Softech, it goes for the development and launching of the product under the budget of the customer. 2.2 COMPANY PORTFOLIO Manal Softech as a service company has developed many products for individual clients, small business as well as corporates. I have listed a few of them. We build products in highly collaborative and agile manner to deliver the maximum value to our customers. www.leedsdevelopers.com Leeds Enclave is a real estate development firm with strong working knowledge in the areas of real-estate development & construction. The key to group success is regional focus which facilitates our hands on intensive management & an in depth knowledge of property & its local market. The concentrated focus will give valuable insight to the customer needs & also take care of communities needs surrounding each property. Drive, imagination, decisiveness – ours is a well-earned reputation. Leeds Developers is one of the leading land developers based at Indore, the “Silicon Valley of India”. Ever since our establishment, we have worked hard to create a place of respect for ourselves. Our sincere commitment to understanding customer needs and interpreting them in inspiring ways has enabled us to continuously offer living spaces that are truly special. And our unblemished record of delivering on promises and our strict adherence to business ethics has earned us a special place in the field. We believe that every Indian be given an opportunity to own a property or home and we will do our best to help them accomplish the goal. Our Layout is located in developing area which features rapid growth, good surrounding, and frequent transport facilities and at reasonable cost. www.realsafepackersmovers.com Real Safe Packers & Movers value the sentiments of our customers and hence take that extra care while moving and packaging the goods of our customers. Backed by a core team of thorough professionals, who are 3 specialists in the field of packing and moving services, Real Safe Packers & Movers ensure that your goods reach the needs with the most care and safety. Shifting to a new house or office but worried about transporting your valuable goods safely? Real Safe Packers & Movers are one of the most reliable names in moving and packaging services! In the business for many years, our experience and expertise in the field has earned us immense respect and confidence from our clients all over India. Real Safe Packers & Movers ensure the safe delivery of your goods, to any location in India. Real Safe Packers & Movers trained packing moving staff have expertise in specialized handling, packing, and crating techniques and special packing material to ensure safe movement of your goods. Your business is our priority so we guarantee exceptional customer service from start to finish 24/7. If you need to Relocate yourself or want to move some of your assets or all household goods from one destination to the other in Indian was never so easy task. We are here to provide best solutions for every problem related to Packing Moving, Household Shifting, Relocation and Car Transportation. We at Real Safe packers Movers are one of the best Relocating Companies and Moving Companies in Indian since we have professional staff and have branches in all major Indian cities. www.ss-academy.org Our Mission is providing high quality and up-to-date educational services to students, enabling them to become a generation of ethical, knowledgeable, responsible, responsive and productive young people. The school allows students with different learning styles, needs and talents to reach their highest potential. We welcomes students and teachers regardless of their cultural backgrounds is certainly a key element to the school’s distinctive character and empowers students with knowledge, skills and attitudes, allowing them to be both national and global citizens. www.maitreyamarketing.com Maitreya Marketing is one stop destination for all your packaging needs related to materials, machines and Automation. Our wide range of machines includes Semi-Automatic Box Strapping Machines, Carton 4 Sealing Machine, Continuous Band Sealer, form Fill Seal (FFS) Machines ,Shrink Tunnel, Paddle Sealer, Solid ink batch coding Machine Semi and Fully automatic induction Sealer, Automatic label applicator along with packaging materials such as Bopp tap, Heat sealable strapping role, shrink role and pouch, L.D./H.M bags and roll, Air Bubble films, Corrugated box and Sheet Rolls, Stretch Wrapping Films, laminated pouches and rolls and all kind of Packaging Material. Being a quality conscious company, we pay our special efforts to deliver world-class range of Plastic Packaging Material to our esteemed clients. To maintain the same, we have setup an advance in-house quality control department that is outfitted with latest machines and tools. The quality control unit is effectively managed by highly qualified and experienced team of quality inspectors, which stringently monitors that complete production process right from procurement of raw material till the final dispatch of the finish products at the clients end. Under the able enlightening guidance of Mr. Deepesh Patni (MD) who have attained cohesive knowledge of the Bags, Pouches and Rolls manufacturing industry? Their smart decision making and vast industry experience helped us to carve a strong foothold in this competitive market. To list a few more of the services provided by Manal Softech it manages the digital platform of Market Space, Chatorez, ACL grocery and many more. 2.3 COMPANY WORK CULTURE Manal Softech provides a pool of benefits to work with. The team consists of professionals who come with a great level of international exposure owing to their experience. Manal Softech always works with latest technologies available around the world to deliver the highest quality of digital products available in the market. Manal Softech is customer oriented company. End user satisfaction is the main criteria when they develop any product. Working at Manal Softech, we get to interact with the client directly to have a collaborative experience in building and designing of the product. Manal Softech follows rapid prototyping and agile method of development for any service they provide. 5 This ensures that the products are developed as soon as possible and delivery is made at the earliest while also keeping the customer informed at each step of the process. The team at Manal Softech is highly committed and skilled. Working at Manal Softech, we get to use and learn about new technologies, trends every day. It has a flat and open organisational structure, so we have access to all the employees, at all the time. Though there is no fixed working hour, every module or process has a fixed deadline that has to be adhered to while working at Manal Softech. 6 3. SKILLSET PRIOR TO TRAINING 3.1 SKILLS DEVELOPED THROUGH COLLEGE COURSES Skills learnt at VIT University prior to my industrial internship program had helped me a lot during the internship. VIT University has a very diverse, dynamic and complex syllabus that covers the fundamentals of most of the technologies in Computer Science. The curriculum at VIT University ranges from developing programming skills, knowing computer architecture, networks, database management to internet and web programming, pattern classification etc. During my 1st semester at VIT University, I learnt, Computer Programming and Problem Solving using C (CSE 101). This course has helped me throughout my 4 years at college and at the internship. From this course I had learnt about the general structures of any programming language, implementation of programs in C etc. This course was the starting point when I learnt to code and developed an interest towards coding a computer. The fundamental concepts learned in this course has helped me to understand other programming languages faster and adapt to the coding standards of other languages. Software Industries use object oriented programming for any implementation of code. During my time at College, I learnt about object oriented programming in C++ (CSE 219). The course had all the major design constructs and important object oriented concepts covered. I had a proper understanding of the concepts of inheritance, abstraction, encapsulation, data hiding etc. Prior knowledge of object oriented programming, helped me a lot during internship. The lab exercises of this course were designed so that we have a proper understanding of objects, classes and inheritance. Data Structures and algorithm (CSE 220) is another course learned as part of college curriculum that had helped me during the industrial internship. During this course I had learnt about the best ways to store the data while considering efficiency and memory usage. While developing any software application the first and foremost thing is to analyze how to manage the data within the program. 7 What data structures could be used to manage the data? Through this course I had a strong foundation of data structures. This course had covered all the data structures like stacks, queues, de-queue, heap, trees, segment tree and advanced data structures like Red Black trees, AVL trees etc. which enabled to learn further data structures. One of the important skills for software developers is to write efficient code. Finding a solution to a problem could be easy but writing an efficient solution requires skillset. Processing time of the programs can distinguish between a good software/product and a bad one. The course, Algorithm and Design Analysis (CSE202) mainly dealt with different kinds of algorithm and how to approach a problem. Concepts like dynamic programming, greedy algorithm etc. were taught in this course. Another important skill that I learnt in this course was to analyze the running time of any algorithm. Efficient algorithm defined the scalability of the system. If the algorithm runs in polynomial or exponential time, it will be quite slower on larger data. Understanding and building algorithmic knowledge is an important skill I developed, that helps me in writing efficient codes. The course, Operating System (CSE 222), is one of my favorite course learnt during college. This course mainly deals with how the operating system manages resources such as memory, CPU, ROM etc. These skills helped me to write programs more efficiently. Jumping statement, too many memory switch, might seem to be fine, but it greatly affects the efficiency of the program. During this course I was also introduced to Linux tools and commands. Most applications require data to be stored for processing and future use. As part of college curriculum, I did Database Systems (CSE 324). Through this course I learnt about the various uses of Database System like Oracle, MySQL etc. Database is an important concept for any software developer to have. Traditional file management system allows data to be stored, however they are program dependent and lead to a lot of redundancy. In file management, performing concurrency is a very hard task. In this course I had learnt how to create databases, designing of database, and performing operations on database. 8 My understanding of databases proved to be of immense help during internship. 3.2 SKILLS DEVELOPED ALONG SIDE ACADEMICS CURRICULUM I have developed various skills while staying in VIT. Over the years I have learnt SQL, Core Java, Java Swing, XML, Android basic etc. All these skills helped me during the internship. Through these skills I was able to grasp the concepts taught in the internship more easily. 9 4. SKILLS DEVELOPED DURING TRAINING This internship added a lot to my existing knowledge in the field of android development. Many new features and functionalities were implemented throughout the internship which required a thorough study and helped me develop my technical skills. Another skill developed at Solution Avenues was learning to use Git. Git is an open source distributed version control management software. Git helps in tracking the changes made to files and folders, so that we can easily revert to some older version of the file. Learning Git was the most important skill I developed. Version control is important since if the current version or the changed program of the code doesn't work or has errors, using tools like Git we can easily revert back to the older versions of the files or check the lines where we have made the changes, making it easier to track errors. For sharing of code and working with different modules within the team we made use of Github. Github is another web based platform that helps in cloud storage of the offline Git repository. The main advantage of using Git and Github is that, each member of the team had their own local Git repository where they had complete access to change anything they want. But there is only one central repository at Github where all the changes that are required to be made by each member is pushed. We could all update our local repository with the latest updates from all the user, with just a simple pull command. During my internship I started off with eclipse IDE to develop android apps which is truly meant for beginners of Android and in a few days got shifted to Android Studio IDE on which 97% of the apps are developed. It is a highly advanced IDE with numerous features embedded and sometimes it becomes tricky to be able to choose best one for the intended purpose.So, I got a very handy experience on Android Studio and one major advice that I got from my mentor was that you can’t stop exploring Android Studio, the more you explore more expertise you’ll get, and it’s like an endless IDE. As the official developers website of Android Studio has quoted “Android Studio provides the fastest tools for building apps on every type of Android device. World-class code editing, debugging, performance tooling, a flexible build system, and an instant build/deploy system all allow you to focus on building unique and high quality apps.” 10 5. PROJECT DESCRIPTION AND APPLICATION 5.1 Introduction to Mobile Technologies 5.1.1 Background about Mobile Technologies Mobile technology is the technology used for cellular communication. Since the start of this millennium, a standard mobile device has gone from being no more than a simple two-way pager to being a mobile phone, GPS navigation device, an embedded web browser and instant messaging client, and a handheld game console. Many types of mobile operating systems are available for smart phones, including Android, BlackBerry OS, iOS, Symbian, Windows Phone etc. 5.1.2 Android Android is an operating system based on Linux with a Java programming interface. Android is a mobile operating system (OS) developed by Open HeadSet Alliance. Android is the first completely open source mobile OS. Building on the contributions of the open-source Linux community and more than 300 hardware, software, and carrier partners, Android has rapidly become the fastest-growing mobile OS. Table 1: Android Version 11 5.1.3 Mobile Application A mobile application (or mobile app) is a software application designed to run on smart phones, tablet computers and other mobile devices. Mobile apps were originally offered for general productivity and information retrieval, including email, calendar, contacts, and stock market and weather information. 12 5.2 Android Building Blocks Each building block is a different point through which the system can enter your application. Not all components are actual entry points for the user and some depend on each other, but each one exists as its own entity and plays a specific role—each one is a unique building block that helps define your application's overall behaviour. 5.2.1 Activities An activity is an application component that provides a screen with which users can interact in order to do something, such as dial the phone, take a photo, send an email, or view a map. Each activity is given a window in which to draw its user interface. The window typically fills the screen, but may be smaller than the screen and float on top of other windows. An application usually consists of multiple activities that are loosely bound to each other. Typically, one activity in an application is specified as the "main" activity, which is presented to the user when launching the application for the first time. Each activity can then start another activity in order to perform different actions. Each time a new activity starts, the previous activity is stopped, but the system preserves the activity in a stack (the "back stack"). When a new activity starts, it is pushed onto the back stack and takes user focus. The back stack abides to the basic "last in, first out" stack mechanism, so, when the user is done with the current activity and presses the Back button, it is popped from the stack (and destroyed) and the previous activity resumes. When an activity is stopped because a new activity starts, it is notified of this change in state through the activity's lifecycle call-back methods. There are several call-back methods that an activity might receive, due to a change in its state— whether the system is creating it, stopping it, resuming it, or destroying it— and each call-back provides you the opportunity to perform specific work that's appropriate to that state change. For instance, when stopped, your activity should release any large objects, such as network or database connections. When the activity resumes, you can reacquire the necessary resources and resume actions that were interrupted. These state transitions are all part of the activity lifecycle. 13 Fig. 1: Activity Transition Fig. 2: Activity Life Cycle 14 5.2.2 Services A service is an application component that can perform long-running operations in the background, and it does not provide a user interface. Another application component can start a service, and it continues to run in the background even if the user switches to another application. Additionally, a component can bind to a service to interact with it and even perform inter process communication (IPC). For example, a service can handle network transactions, play music, perform file I/O, or interact with a content provider, all from the background. A service is started when an application component (such as an activity) calls startService(). After it's started, a service can run in the background indefinitely, even if the component that started it is destroyed. Usually, a started service performs a single operation and does not return a result to the caller. For example, it can download or upload a file over the network. When the operation is complete, the service should stop itself. A service is bound when an application component binds to it by calling bindService(). A bound service offers a client-server interface that allows components to interact with the service, send requests, receive results, and even do so across processes with inter process communication (IPC). A bound service runs only as long as another application component is bound to it. Multiple components can bind to the service at once, but when all of them unbind, the service is destroyed. 5.2.3 Content Providers A content provider manages a shared set of application data. You can store the data in the file system, a SQLite database, on the web, or any other persistent storage location your application can access. A content provider provides a structured interface to application data. Via a content provider your application can share data with other applications. Android contains a SQLite database which is frequently used in conjunction with a content provider. 5.2.4 Broadcast Receivers Broadcast Receivers simply respond to broadcast messages from other applications or from the system itself. These messages are sometime called events or intents. 15 For example, applications can also initiate broadcasts to let other applications know that some data has been downloaded to the device and is available for them to use, so this is broadcast receiver who will intercept this communication and will initiate appropriate action. 5.2.5 Intent Intents are asynchronous messages which allow the application to request functionality from other Android components, e.g. from services or activities. An application can call a component directly (explicit Intent) or ask the Android system to evaluate registered components based on the intent data (implicit intents). For example the application could implement sharing of data via an intent and all components which allow sharing of data would be available for the user to select. Applications register themselves to an intent via an intent. Filter Intents allow an Android application to start and to interact with components from other Android applications. 5.2.6 Using intent to launch the activities There are separate methods for activating each type of component: You can start an activity (or give it something new to do) by passing Intent to startActivity() or startActivityForResult() . You can start a service (or give new instructions to an ongoing service) by passing an Intent tostartService(). Or you can bind to the service by passing an Intent to bindService(). You can initiate a broadcast by passing an Intent to methods like sendBroadcast(), sendOrderedBroadcast(), or sendStickyBroadcast(). You can perform a query to a content provider by calling query on a ContentResolver. 16 5.3 Introduction to the Development tool “Android Studio” Android Studio is the official integrated development environment (IDE) for Android platform development. Android Studio is freely available under the apache license. Android Studio is designed specifically for Android development. Android application development can be started on either of the following operating systems – Microsoft® Windows® 8/7/Vista/2003 (32 or 64-bit). Mac® OS X® 10.8.5 or higher, up to 10.9 (Mavericks). GNOME or KDE desktop. All the required tools to develop Android applications are open source and can be downloaded from the Web. Following is the list of software’s that is needed before starting Android application programming. Java JDK5 or later version Java Runtime Environment (JRE) 6 Android Studio 17 5.4 Android UI Design 5.4.1 Introducing Layouts Frame Layout Frame layouts are one of the simplest layout types used to organize controls within the user interface of an Android application. They are used less often than some other layouts, simply because they are generally used to display only one view, or views which overlap. The efficiency of a frame layout makes it a good choice for screens containing few view controls (home screens, game screens with a single canvas, and the like). Sometimes other inefficient layout designs can be reduced to a frame layout design that is more efficient, while other times a more specialized layout type is appropriate. Frame layouts are the normal layout of choice when you want to overlap views. Linear Layout Linear layouts are one of the simplest and most common types of layouts used by Android developers to organize controls within their user interfaces. The linear layout works much as its name implies: it organizes controls linearly in either a vertical or horizontal fashion. When the layout’s orientation is set to vertical, all child controls within it are organized in a single column; when the layout’s orientation is set to horizontal, all child controls within it are organized in a single row. Some of the most important attributes you’ll use with linear layouts include: The orientation attribute (required), which can be set to vertical or horizontal. The gravity attribute (optional), which controls how all child controls are aligned and displayed within the linear layout (class: LinearLayout). The layout_weight attribute (optional, applied to each child control) specifies each child control’s relative importance within the parent linear layout (class: LinearLayout.LayoutParams). 18 Relative Layout The relative layout works much as its name implies: it organizes controls relative to one another, or to the parent control itself. It means that child controls, such as ImageView, TextView, and Button controls, can be placed above, below, to the left or right, of one another. Child controls can also be placed in relation to the parent (the relative layout container); including placement of controls aligned to the top, bottom, left or right edges of the layout. Some specific attributes apply to relative layouts-namely the child rules, including: Rules for child control centering within the parent layout, including: center horizontally, center vertically, or both. Rules for child control alignment within the parent layout, including: align with top, bottom, left or right edge of another control. Rules for child control alignment in relation to other child controls, including: align with top, bottom, left or right edge. Rules for child control placement in relation to other child controls, including: placement to the left or right of a specific control, or above or below another control. Table Layout A table layout is exactly what you might expect: a grid of made up of rows and columns, where a cell can display a view control. From a user interface design perspective, a Table Layout is comprised of Table Row controls—one for each row in your table. The contents of a Table Row are simply the view controls that will go in each “cell” of the table grid. Although table layouts can be used to design entire user interfaces, they usually aren’t the best tool for doing so, as they are derived from Linear Layout and not the most efficient of layout controls. However, for data that is already in a format suitable for a table, such as spreadsheet data, table layout may be a reasonable choice. 19 5.4.2 Different UI widgets available in Android Text View Edit Text List View Button CheckBox Radio Button 5.4.3 Dialog Box A dialog is a small window that prompts the user to make a decision or enter additional information. A dialog does not fill the screen and is normally used for modal events that require users to take an action before they can proceed. 5.4.4 Toast A toast provides simple feedback about an operation in a small popup. It only fills the amount of space required for the message and the current activity remains visible and interactive. 5.4.5 Adapters An Adapter acts as a bridge between a ListView and the underlying data for that view. The Adapter provides access to the data items. The Adapter is also responsible for making a View for each item in the data set. Array Adapter Array Adapter is a concrete BaseAdapter that is backed by an array of arbitrary objects. By default this class expects that the provided resource id references a single TextView. If you want to use a more complex layout, use the constructor that also takes a field id. That field id should reference a TextView in the larger layout resource. 5.4.6 Notification Manager A notification is a message you can display to the user outside of your application's normal UI. 20 When you tell the system to issue a notification, it first appears as an icon in the notification area. To see the details of the notification, the user opens the notification drawer. Notification Manager Class is used to notify the user of events that happen. This is how you tell the user that something has happened in the background. Notifications can take different forms: A persistent icon that goes in the status bar and is accessible through the launcher, (when the user selects it, a designated Intent can be launched). Turning on or flashing LEDs on the device. Alerting the user by flashing the backlight, playing a sound, or vibrating. 21 5.5 Database SQLite SQLite is an Open Source database. SQLite supports standard relational database features like SQL syntax, transactions and prepared statements. The database requires limited memory at runtime (approx. 250 Kbytes) which makes it a good candidate from being embedded into other runtimes. SQLite is embedded into every Android device. Using a SQLite database in Android does not require a setup procedure or administration of the database. We only have to define the SQL statements for creating and updating the database. Afterwards the database is automatically managed for us by the Android platform. If our application creates a database, this database is by default saved at directory DATA/data /APP_NAME/ databases /FILENAME. SQLiteDatabase is the base class for working with a SQLite database in Android and provides methods to open, query, update and close the database. SQLiteDatabase provides the insert(), update() and delete() methods. The object ContentValues allows to define key/values. The key represents the table column identifier and the value represents the content for the table record in this column. ContentValues can be used for inserts and updates of database entries. Queries can be created via the rawQuery() and query() methods or via the SQLiteQueryBuilder class. rawQuery() directly accepts an SQL select statement as input. query() provides a structured interface for specifying the SQL query. SQLiteQueryBuilder is a convenience class that helps to build SQL queries. 5.5.1 SQLiteOpenHelper To create and upgrade a database in our Android application we create a subclass of the SQLiteOpenHelper class. In the constructor we call the super() method of SQLiteOpenHelper, specifying the database name and the current database version. 22 In this class we need to override the following methods to create and update our database onCreate() is called by the framework, if the database is accessed but not yet created. onUpgrade() called, if the database version is increased in your application code. This method allows you to update an existing database schema or to drop the existing database and recreate it via the onCreate() method. 5.5.2 Query() The following gives an example of a query() callreturn database.query(DATABASE_TABLE, new String[] { KEY_ROWID, KEY_CATEGORY, KEY_SUMMARY, KEY_DESCRIPTION }, null, null, null, null, null); 5.5.3 Opening and Closing a Database SQLiteDatabase db = this.getWritableDatabase(); //Opening DatabaseConnection ContentValues values = new ContentValues(); values.put(KEY_NAME, contact.getName()); //Contact Name values.put(KEY_PH_NO, contact.getPhoneNumber()); //Contact Phone Number db.insert(TABLE_CONTACTS, null, values); //Inserting Row db.close(); //Closing database connection 5.5.4 Cursor Cursor provides typed get*() methods, e.g. getLong(columnIndex), getString(columnIndex) to access the column data for the current position of the result. The "columnIndex" is the number of the column you are accessing. A Cursor needs to be closed with the close() method call. Insert ContentValues values = new ContentValues(); values.put(MySQLiteHelper.COLUMN_COMMENT, comment); 23 long insertId = database.insert(MySQLiteHelper.TABLE_COMMENTS, null, values); cursor.close(); return newComment; Delete database.delete(MySQLiteHelper.TABLE_COMMENTS,MySQLiteHelper.COLUM N_ID + " = " + id, null); 5.5.5 Content provider and Sharing data A SQLite database is private to the application which creates it. If you want to share data with other applications you can use a content provider. A content provider allows applications to access data. In most cases this data is stored in a SQlite database. While a content provider can be used within an application to access data, it is typically used to share data with other application. As application data is by default private, a content provider is a convenient to share your data with other application based on a structured interface. A content provider must be declared in the AndroidManifest.xml file. 24 6. Sample Application Towards the end of internship I have designed an app in which I tried to cover most of the concepts that I have learnt through the course of the internship. The basic idea was to capture an Image and Display it on ImageView. The user can make Negative of the image, Add simple overlays to the image and Save the image. Below are the screenshots of the app, development process to have a clear understanding of the working flow of the app: - Fig. 3: Main Screen 25 Fig. 4: Taking Picture Fig. 5: Viewing Image 26 Fig. 6: Negate Image Fig 7. Image Overlay 27 Fig. 8: Android Application Development Process Fig. 9: Android Studio 28 7. SELF EVALUATION Android Smartphone are in hype in the 21st century. The scope of android applications is increasing day by day. Its development has become an essential part of today’s programming curriculum. The society has a dearth of ideas. These ideas can be most effectively implemented by developing user-friendly android applications. Through this internship, I got to learn a lot, including, database connectivity using SQLite. Being new to app development, I came to know a lot about developing an android application from scratch. Generally I had never used git or github while developing web applications or softwares, which resulted in greater development time, bug fixing time etc. Learning git was I think one of the most important skill I developed at Solution Avenues. Now I always use version control for writing any text or code. Overall I think it’s the team at Manal Softech who have made my internship experience rewarding. 29 References 1) https://developer.android.com 2) Android Architecture Retrieved from https://tutorialspoint.com 3) stackoverflow.com 4) www.quora.com 30