This essay has been submitted by a student. This is not an example of the work written by our professional essay writers.
This project is mobile based project, where we can develop the number of featured applications and assimilate in the device. Android is software stack for mobile devices that include an operating system, key applications and middleware. Android is a software platform for mobile devices that should be based on the Linux operating system and open receiver association and developed by Google. It allows developed java libraries, but do not support programs developed in native code. Developers could create applications for the platform using the Android SDK. Applications are written using the Java programming language and run on Dalvik virtual machine, a custom virtual machine designed for embedded use, which runs on top of a Linux kernel.
Here this project helps in researching and developing Different types of applications on android like Translator, Restaurant Finder, Next Action, Smart shopper.
The introduction of the android platform on 5th Nov 2007 was announced with the beginning of the open handset alliance, a collection of 34 software, hardware and telecom companies dedicated to advancing open standards for mobile devices. When released in 2008, for the most part of the android platform will be made available in the apache free software and open source licence.
Android: Android is a software stack for Mobile devices developed by Google. It consists of operating system based on Linux, key applications, and middleware.
API: Application Programming Interface is an interface implemented by software program and which enables it to cooperate with other software, and a code library that allows reprocesses the existing code. Vendors of different software and hardware platforms often release APIs to enable developers to work together with other products. Google Application Programming Interfaces for Android are an example for that and consent to creating application for that operating system.
Class: the project concept is based on Object oriented programming that encompasses data and together with its functionality. Classes contain properties, which can able to execute actions. Without Class software is nothing.
Code: Source code of application; when creating applications, the developers writes the code. It is user- readable and writable, out compiler should be used to make machine readable, which means to make it functional.
UI: User Interface; it is the place to interact between human and machine occurs. And which enables users to interact with software. It could effect on operation and control of the machine.
IDE: Integrated Development Environment, every application that combines text editor, other essential tools and debugger to active developer to write applications. This project Eclipse IDE was used.
Java: A high-level programming language developed by Sun Microsystems extensively used across the world. In this project java is used to develop the applications on the Android.
1.1 Google Android
Android Sdk: Google provides Android software development kit to assist developers in composing android applications. it consist of application programming interface(APIs), that activate simple interaction with devices hardware(like GPS, compass, touch screen, buttons etc..) and operating system. It also includes a plug in for Eclipse IDE that perform simple debugging and simulation of written applications. At that time final report, the latest version was the android 2.1 SDK and the latest Eclipse plug in version was 0.9.6. Still, due to the timing constraints (the latest version was released before three weeks deadline of my project), the project was written by previous release: android SDK 2.0 r5 and ADT eclipse plug-in version 0.9.4.
ADT plug-in: Android Development Tools (ADT) is a plug-in, which is developed for Eclipse IDE that is deliberate to provide great, incorporated environment in which to put up android applications.
Developing Eclipse with ADT is extremely suggested and which is best ever way to get started of Android applications. ADT plug-in will give an unbelievable improvement in developing Android applications.
Eclipse IDE: Eclipse IDE is an open source, robust, full featured, commercial quality, industry platform for the development of highly integrated tools and rich client applications
Eclipse IDE is comprehensively used in organization and highly customisable, especially with the use of plug-ins (being the one developed for android).
Google Code: For the application developers, Google code is the main service. It can make project management for software products by given that a common depot for requirements, design documents etc.
2.0 Project Description
2.1 project Objectives
3.1 Gathering Information
Android is a software stack for a mobile device that includes an operating system, key applications and the middle ware, and it runs on Linux kernel utilizes the dalvik virtual machine to run the application. It utilizes the java for the development of programming in applications. Android is the first open source and fully customized mobile platform that allows the third party vendors to develop the applications by providing the API. It is relatively new product. Most of the applications are already available in other platforms like Symbian, Palm, Blackberry and iphone etc., But Android is special that means android is truly open source development platform. We can run it on their devices for free. This can opens up enormous prospective for handset makers to save money.
Recently android has become truly open source with entire source code being released publically and developers can allowed to code any part of the platform. Before the developers were only able to program in java i.e. can able to perform the applications for the platform.
Android is not just blueprint for the faraway future, but a complete platform that can give mobile operators, handset manufacturers, and developers they have to build innovative devices, services and software. We can easily organize handsets and services using the android platform.
Android is a young and advanced mobile platform, the author was unable to find the android project that would be useful to this applications, which are not published in books and journals. Android projects are easy to distribute electronically with the help of internet, so all the applications come from the referenced site and some of them come from the Google API example Demos. Except this API example demos all other are come with only the source code and there is no documentation at all for these applications. We need to research the Application and perform various steps to research, to interface the new concepts and also testing the applications weather it is working correctly and analyzing the code for future development of other projects with new ideas and good technical resources for implementing a new software applications in the mobile platform because, as the android is an open source we can reuse the software for developing the various applications.
For this project, we are developing some applications. This different applications are very useful and user friendly. The basic concepts of these applications are working with the Google Service providers.
The Applications are
Translator is an Android based project which is fully functional language translator. This is a mobile application on which a person can translate on the go. This application is made keeping in mind the problem faced by travellers who come from different nation and contain problem conversing in local languages. It is the interpreting of the meaning of a text and the ensuing production of a corresponding text, similarly called a "translation," that communicates the same message in different language. The text to be translated, it means "source text," and the language that it is to be translated into, it means the "target language"; the final product is occasionally called the "target text". Translation must take into account constraints that include context, the rules of grammar of the two different languages, their writing conventions, and their idioms. A common misconstruction is that there exists a simple word-for-word correspondence between any two different languages, and that translation is an easy mechanical process; such a word-for-word translation, however, cannot take into account context, conventions, grammar and idioms. Translation is fraught with the potential for "spilling over" of idioms and usages from one language into the other different language, since both languages coexist within the translator's mind. Such spilling-over simply produces linguistic hybrids such as "Poglish" (Polish-English), "Franglais" (French-English) "Portuñol" (Portuguese-Spanish) and "Spanglish" (Spanish-English)
2) Restaurant Finder:
Restaurant finder is an Android based application which is to find the Restaurant near by him. Initial features for this is by using the GPS it can find the restaurants nearby our locations or we can take our own choice of restaurant by selecting the favourite dish. Restaurant finder application gives the complete details of the Restaurant where it is located and also the available dishes in it.
3) Smart Shopper:
Smart Shopper is an Android based project, it can provide shopping list for those who want to save money, not spend it. Initial feature considered for Smart Shopper are Location Management, Add your favourite shops to mobile phone with shop location co-ordinates, Each Shop can contain list of items that can be purchased, User can select items that are part of the shopping locations and add them to the list, Your shopping list opens automatically when you are in one of your favourite shops. This functionality is implemented through Android GPS service, you can scroll through long shopping lists by tilting your phone; you can remove marked items by shaking your phone. These are implemented through sensor based services in Android like accelerometer; the application should have good Polish and appeal: Try to implement Skinnable and themeable techniques. Something like basic interface to a deluxe interface for cutting-edge functionality that is fully customizable through add-ons, Indispensability: You will need it every week when you go shopping, and during the week when you notice something you want to add to the shopping list.
4) Next action:
Next action is Android application to keep track of your to-do list on mobile phone. This application should basically have the following features Contexts are categories in the mobile phone. 'Work', 'meeting' is all examples of categories. Task is the unit of work. The application to be designed and implemented should be able to Create, edit, and delete Contexts. User should be able to Create/edit/delete tasks in context or inbox, and they should be able to nest contexts, i.e. having contexts in other contexts. Additionally, a user can purge completed tasks. Creating of nested task and importing import tasks from internet using web services or optional requirements for this project.
3.2 Project Methodologies
This Software Methodologies plays vital role in the project, for any software development project it is necessary to gather all the requirements before designing the software, and need to follow the project methodologies. Before implementation of something in software development, have to follow a structured software development lifecycle. As conditions vary, and different lifecycles have been developed and explained over the years to contain different needs for different projects. In this segment, some methodologies are presented and followed by a short discussion on why they are fitting for this project.
Waterfall model is most well known and older and it is basic comparing to all other models. The basic criteria for the waterfall model development divided into different stages and these stages are
Testing, are followed by sequentially.
This model is suitable for many projects that should based on software. Where delivering the projects by the giving deadline is crucial success factor. If the project doesn`t have all of significant features. Schedule-to-design model is best suitable for critical situation. To summarise this project will use
Waterfall model is base for development methodology.
Overlapping stages to enable working on different stages.
3.3 Android Technical Information:
Android releases on Linux Platform version 2.6,which provides various services such as high security, process, memory managements, for core system.
Kernel (Heart of Linux operating system) acts an intermediate layer foe th software and the hard ware for abstraction.
The top most layer of the architecture is "Applications" which includes core applications such as home, contacts, etc. Including an Email-client, calander etc.These all applications are developed based on the object oriented programming using Java Programming Language.
As android is an open source development platform, it offers to built the rich and creative applications. The Android developers have an advantage that they can take a chance of using the services provided, accessing the hardware device, running background services, etc.
The architecture is designed to reuse the applications components so that the service provided by these applications can be shared by other.
This applications frameworks includes a set of four components
An Activity is a flash screen that is presents a user interface and this can be a sub class of another activity which is derived from the super class Activity (android.app.Activity)
The process of changing from one activity to another activity is called intent. It can be used to launch an Activity with startActivity method.
The content provider provides the data to other applications, which is present in the SQL lite database, file system. It stores and retrieves the data from the file system and this data is used by different services.
Broadcast Receiver receives the data provide by the content provider and reacts to broadcast alerts, for an example it gives an alert when the battery is low, gives an alert when the SMS has arrived.
Android contains a set of C/C++ libraries used by a variety of components of the android system. Some of the core libraries are System C library, Media libraries, Surface manager, LibWebCore, SQLite, Free type etc...
Android provides a Dalvik Virtual Machine as well as the core libraries. The applications run it own instance of Dalvik Virtual Machines. The dalvik Virtual Machine is based on Linux Kernel functionality like the threading, low level memory management. Each single applications runs on its own instance on one single Dalvik Virtual machine and execute them into the ".dex" file extension format.
As mentioned earlier it is a software stack for the development of mobile applications. The Architecture of this platform is shown below .
This diagram is taken from
3.4 Android BackGround Information
Android application are written based on the java programming language
There are three different methods for activating of each Activity components like intents.
Activity is activated by passing an intent object to context.startActivity() or Activity.startActivityForResult(). In order to retrive the response call the getIntent() method. An activity starts the another activity for the result by calling the startActivityForResult() method.
A service is being started by calling Context.startService().Android calls an intent service by onStart() method by passing intent object.In oorder to bridge the connection between the target service and the calling component,and the taget service recives an intent object by defiing the onBind() method.
Broad cast is initiated by an application like passing an object to method Context.sendBroadcast(), Context.OrderedBroadcast().By calling the onReceive() intent is being deliver to broadcast receivers.
Processes & Threads:
At the time of starting of an android application, defiantly the Linux process will starts with one single thread of process and all the components run in that process.
The process of an android application is done through the manifest file. The components like <application>, <activity>,< service>,<receiver> have a <process> attribute that specifies the component where the component should run in the ext process. The manifest file can handles the process of an application. So if there is any process to add to the application, add the attributes in the manifest file.
Even though an android application starts with a single process, there will be some back ground thread process are spawn to work. By this back ground thread process the user interface must respond quickly to the user action.
Android provides convince class to manage threads, threads are created by standard Java Thread objects.
Remote Procedure Calls:
Android platform has lightweight mechanism called RPC (Remote procedure Calls). A method is called locally and it is executed globally or remotely, with result is return back to the calling thread.
Component Life Cycle:
Application components of an android have lifecycle. At the beginning of the instantiation, an android process responds to intents to an end when process of e instance is in destroying state. This component life cycle discuss of the activities, services, broadcast receivers during there life times.
Activity Life Cycle:
An activity life cycle has tree states of process
running(): Running state is active when the process is on the foreground of the splash screen. This is the Activity that focuses to the end user.
pause(): It is active if any process is lost of visible state or running state then this pause method is active ins state. That means if the user cannot visible the fore round process or else the fore ground process is stopped then nothing but the pause state is active mode. A paused state is alive until and unless the fore ground process starts in running state ,it can be killed by the system when the time of low memory situations.
stopped() :Stopped activity is active when the thread destroys the process or the system can drop the process from the memory states by calling finish() method or simply killing the process by calling onDestroy() method.
Processes and lifecycles:
An android platform maintains an application process for a long period, but it eventually remove the older process when the memory runs low, by killing the lowest priority process first and the highest priority process at last. The hierarchy of priority process is listed below with the order
An empty process
Foreground process is that which the user is currently doing with the Activity. If the Process is said to be a foreground process, it is in running state of an activity which user is currently working with activity.
Example if the user open different activates in the mobile, all activates are in fore ground process, because the service is running and all the activities are in working state.
Visible process is that which the user can see the activity. Visible process doesn't have any foreground components but still visible.
Example: If the user is playing the game in the mobile, suddenly one of his friend calls him then, the calling dialog is in visible on the gaming activity, now the gaming activity is in the visible state and calling dialog is in foreground state.
A service process is that which is in running a service started with the ServiceStart() method.
Background process is process which is not visible to the user and this background process is active background. It holds an activity which is not visible to the user .This can be killed at any point by reclaiming the usable memory to the visible process. These background processes are kept in LRU (Last Recently Used) because there are so many background processes available.
Example: If the user is taking a call by keeping hold of the first call, then the first call is running and active in background state. Another example is running the watch even if the mobile is turnoff for while.
An empty process is a process which is not holding any activity currently. The purpose of using this process is to improve the cache at start-up time, for the other component to run for the next time. This process is also be killed by the system in order to balance the system resources.
Resources & Assets:
In an android application the integral part is resources, these are eternal components that includes in the android applications.
The android application contains a resource (res/) directory. The resource is used to store the external data which is easily accessible from the application by using R.class which is compiled from the R.java .
Assets is also an external component includes an android applications, contains a assets (assets/) directory. Anything in the assets file is maintained as raw file format, which is in not readable format, Assets manager is used to read the raw file as a stream byte.
The desktop operating system provides a common file system, that is used to store the data .Android provides a flexible way to expose the private data to other application using content providers. A content provider is an optional component that focuses read/write to the application data. In order to modify the request data, content providers implements a standard syntax.
The android contains the SQLite for creating and using the database system. The SQLite database has methods for creating and managing queries. In order to create the SQLite data base call the database SQLiteDatabase.create() method ,it expose a data management functions that store complex collections of wrapped data for useful objects. All the database in an android including SQLite are stored on the device in the folder package
Content providers retrieve and store the data and make it useful to all the applications. Content providers are the only way to share the data for all applications.
Security and Permissions:
Android platform is a multi process system, in which all the applications runs in its own process. The security between applications and the enforced system is at Linux facilities.
The standard applications of android has no permission, it impact the user experience or any data visible in the device.
The <use permission > attribute is included in the manifest file in order to use the external permissions .
Â Â package="com.android.app.myapp" >
Â Â <uses-permission
At the time of installing an android applications permission are granted by the package base on the checks declaring the permission and interaction with the user. The permission failure will give result in a "Security Exception" thrown back to the applications. The sendBroadcast(Intent) method uses permission as a data is delivered to each receiver. The permission provided by he android is at Manifest.permission.
The user interface is built on View and ViewGroup objects in an android applications
In an Android platform View object is an basic category of User Interface.
View class is the base class for the "widget" which offers UI objects, like text fields and buttons. The ViewGroup class is the base class for the layouts, which offers different layouts models like relative layout, linear layout, grid layout etc..
View Hierarchy on the Android Platform:
The View Hierarchy of View and ViewGroup on the Android platform as shown in the below diagram
The diagram is choose from http://developer.android.com/guide/topics/ui/index.html
In order to bind the hierarchy to the Activity , call the setContentView() for rendering. The ViewGroup is the root node is responsible for requesting the view nodes to render them selves.
The common way to express and define the layout hierarchy is using xml file.XML is a extensible mark up language ,each field in the xml file is either a ViewGroup or View object.ViewGroup Objects are branches of the tree and View objects are the nodes sub nodes of that VewGroup branches.
Common layout object used in this project are
Frame layout is simple and basic layout comparing to all layout objects. This frame layout is blank space on the Activity.
Linear layout is the layout in which the attribute can be declared in order to view the
Elements linearly either in vertical or horizontal depending on the orientation for User interfaces
The following code is the example to define the attributes in the layout xml file.
<?xml version="1.0" encoding="utf-8"?>
Â Â android:orientation="vertical"
Â Â android:layout_width="wrap_content"
Â Â android:layout_height="wrap_content">
Relative layout is the layout in which the attribute or node of one particular object is related to the other object, So one node depends on another node. The example for this is shown in the below diagram.
Here in the above example the Text box/Edit text is related with the activity screen as well as with the buttons. By changing the position of the buttons will also change the position of the text box in the screen.
Table layout is the layout in which the attributes are defined to design the user interface tabular form like rows and columns. The containers in table Layout do not display the view of border lines for the rows, columns and the cells. The table contains many rows and columns, and the row contains many cells. Table can leave all the cells empty where as cells cannot extend the columns.
Table Row is the sub node of table layout. Each an every row has zeroed or more cells, each of them can be defined by any other View object. The cells of the table rows are composed of different and variety of View objects
The below is the example screen shot for table layout
Grid view comes under the ViewGroup ,it displays an item in s 2 dimensinoal, scrollable format. Using the LayoutAdapter the grid items inserted automatically in the layout.
A widget is ViewObject used for the User interface. Android provides full fledged and implemented widgets like text fields, buttons, and checkboxes. Android provides some advanced user friendly widgets like date picker, zoom controls, clock for these advanced widgets, develop our own customized and action objects.
5.Analysis and Design
5.2 Design Process
5.2.1 UML (Application Flow)
The unfiled modelling language is graphical and standard language for specifying, constructing, visualizing, and documenting the artefacts of a software-intensive system, as well as for industry modelling and other non-software systems. UML characterize a set of the best engineering practices that have verified successful in the modelling of great and complex systems. The UML offers a standard approach to note down a system's blueprints, including theoretical things such as business processes and system functions as well as physical things such as programming database schemas, language statements, and reusable software
The UML is extremely essential parts of developing object oriented software and the software development process.Â The UML uses principally graphical notations to state the design of software projects.Â Using the UML helps explore potential designs, project team converse, and validate the architectural design of the software.
Goal of UML:
The goals in the design of the UML as follows:
Offer users with a ready-to-use, significant visual modelling language so they can develop and swap consequential models.
Be autonomous of exacting programming languages and development processes.
Provide specialization and extensibility mechanisms to expand the core concepts.
Offer a formal basis for accepting the modelling language.
Support the growth of the OO tools market.
incorporate best practices
Sustain higher-level development concepts such as frameworks, collaborations, components and patterns.
As the intentional worth of software increases for different companies, the company looks for techniques to computerize the creation of software and to get better feature and shrink cost and time-to-market. These techniques incorporate element knowledge, patterns visual programming and frameworks. Businesses also look for techniques to direct the convolution of systems as they boost in scale and scope. In particular, they identify the need to explain persistent structural problems, such as concurrency, material sharing, security, reproduction, fault tolerance and load evaluation. In addition, the development for the World Wide Web (WWW), while building some things easier, has exacerbated these structural problems. The Unified Modelling Language (UML) was designed to react to these requirements.
How UML Helps In Project:
Team of developers is designing a big application, this should be used by an activity, and it is not sufficient to put simultaneously a collection of code modules. The code modules should be planned in a way that is secure, flexible, and scalable. In adding together to this, the application should be capable to carry out complex processes during success conditions.
The make-up of an application is frequently called as its architecture, and the architecture should be distinct in an approach which allows the repairs programme to simply find bugs and repair them. For the reason that many bugs don't demonstrate until stretched after the develop process, the programmer must be bright to fix them rapidly.
It has turn out to be additional evident to software developers today that their programs should work absolutely in many compliments. Business functionality is just one of the lots of areas that request must address if the developers desire it to be useful. The constitution of an application is also cooperative because it allows the code to be reused. During the preparation time, it is quite simple to structure a program based on a group of modules which are self restricted. Still, the project should eventually create a large documentation of models, and every representation should supply as a demonstration for a performance that is stored within a particular depot of code module.
Developer must require an exact functionality; they can take the module from the depot. For the period of the coding process, the developer can rapidly take the code and put it within the function. The Unified Modelling Language (UML) is an application that can be extremely helpful in a situation similar to this. It is very commanding, and it is perfect for industries that want to stock up information which is related to diagrams, or blueprints and models. It is great use to engineers, architects, and software developers. There are a many ways that this programming language be able to improve the excellence of your projects.
Fixing bugs should turn out to be time intense and hard. Once you are complete with one project, this is very probable that you will desire to go on to a different one. Having to move back and find complex bugs in an older project is time consuming, and it decreases the efficiency of your team. As a replacement of focusing on your new project, we are spending time hoaxing up old ones. UML is great and powerful because it can make your team well-organized, and if you have to go fix a bug on a previous project, it can be done with simplicity. UML is also capable in allowing developers to communicate efficiently if they are running from different location.
Types of UML Diagrams:
The fundamental principle of UML is that no one diagram can detain the different elements of an organization in its entirety. Therefore, UML is prepared up of different diagrams that could be used to model a system at dissimilar points of time in the software life cycle of a system. The types of UML diagrams are:
Use Case Diagram
Use Case Diagram:
A use case is locating of scenarios that recitation an interaction between a system and a user.Â A use case diagram displays the relationship between actors and use cases.Â The two main mechanism of a use case diagram are actor and use case.
An actor is represents a user or another different system that will cooperate with the system you are modelling.Â A use case is an outdoor view of the system that represents some action the user might perform in order to complete a task.
Use of Use case Diagram:
For every project use case will be used. They are supportive in revealing needs and preparing the project. During the initial stage of a project most use cases must be clear, but as the project continues more may become visible.
Class diagrams are extensively used to explain the types of objects in a system and their affairs.Â Class diagrams representation class structure and contents using devise elements such as packages, classes, and objects.Â Class diagrams explain the three different perspectives when scheming system, specification, conceptual, and execution. These perspectives become apparent as the diagram is formed and help set the design.Â This example is intended as a beginning to the UML and class diagrams.Â
Classes are made up of three things they are: a name, attributes, and operations.Â Below is an example of a class.
Use of Class Diagram:
Class diagrams are used in almost every Object Oriented software designs. Use them to explain the programme of the system and their interaction to each other.
The sequence diagram is used mainly to demonstrate the connections among objects in the chronological order that those exchanges occur. To a large extent like the class diagram, developers normally think sequence diagrams were meant fully for them. However, an organization`s company staff could locate sequence diagrams useful to converse how the industry currently works by presentation how different business things interact. In addition documenting an organization's current relationships, a business-level sequence diagram could be used as a requirements document to communicate requirements for a prospect system execution. During the requirements time of a project, analysts could get use cases to the next level by given that a more official level of modification. When that occurs, use cases are frequently sophisticated into one or different sequence diagrams.
An organization's technical staff can recover sequence diagrams of use in documenting how a potential system will behave. For the period of the design phase, architects and developers can use the diagram to power out the system's object connections, thus fleshing out overall system design.
One of the most important uses of sequence diagrams is in the switch from requirements expressed as use cases to the subsequently and more official level of modification. Use cases are frequently sophisticated into one or different sequence diagrams. In addition to their use in scheming new different systems, sequence diagrams can be used to manuscript how objects in an active (call it "legacy") system presently cooperate. This documentation is very useful when transitioning a system to another person or organization.
Activity diagrams explain the workflow performance of a system.Â Activity diagrams are parallel to state diagram because activities are the state of action.Â The diagrams illustrate the state of activities by presentation the sequence of activities performed.Â Activity diagrams can show activities that are provisional or similar.
Use of Activity Diagram:
Activity diagrams will be used in combination with other modelling techniques such as state diagrams and interaction diagrams.Â The major reason to use activity diagrams is to model the workflow at the back the system being designed.Â Activity Diagrams are also useful for: analyzing a use case by recounting what performance requires taking place and when they must occur;Â relating a complicated sequential algorithm; and modelling applications with equivalent processes.