http://www.itvoir.com/portal/
http://www.itvoir.com/portal/boxx/knowledgebase.asp?iid=1738&Cat=23
Muskegon’s quality of life and of the transportation system of roads, an airport and deep-water port has been recognized by a society’s development and performance of the laptop battery to locate here.
For example, many companies and projects that seek new fuels for transportation that the use of biomass (ethanol) or practice redesign of oil. Instead, DOE is looking for people who work in the synthesis of liquid fuels from carbon dioxide, sunlight and other ingredients, through photosynthesis. This not only reduces the need for raw hp dv7 battery materials like corn and switchgrass, but also reduce the amount of carbon emitted by the process of their conversion into fuel.
The announcement earlier this month by the association includes a project located outside of Tokyo in the city of Tsukuba with Mazda and Norwegian Think Global, which connects Storage Grid, EV recharging infrastructure and solar hp dv8000 battery energy.
However, hp f4809a 3GS has some interesting features iPhone, the missing droid. For example, the iPhone is an innovative and useful application of cut, copy and paste, push notifications, an improved call log, is that details such as time and duration of a call, do a Spotlight search to find applications, and shows theme ( e-mail and / from the lines), music and more shake to mix, to make voice, Nike + support, and support for MMS and tethering.
The coal nanotubes combines very strongly in the paper, the need of the pastes avoiding which reduce the interpretation and substantially production costs, Cui and his remark of the colleagues increase. The ThinkPad Z60m Battery could also bend and curl without losing his capacity of a price lead “and he can be rolled in adaptable computers easily to drive the devices,” he stimulates. The equipment has noted in his newspaper that his technology is easily escalable for the production in row, and that the ink to guinea fowl could be in with brushes be welcome from.
The locals often the Wi-Fi networks, the booklet will receive online, but AT & T mobile Internet connection is essential for proper web browsing, e-mail, instant messaging and video streaming.
With millions 5$ in DOD, who supports behind in 2003 economically, it was the Ardica intention to receive the battery weight for a soldier of 30 Pfd. for a mission of 72 hours below to 10 Pfd. Fuel cells were the solution direct and de facto for that the society hopes to publish the cell of fuel or Kraftstoffzellhybride technology in one year or this way.
Ener1 and Nissan are working together, but Ener1 was once a competitor of Nissan and NEC formed a joint venture to mass produce lithium-ion batteries for use in large scale cars (see form for the new Nissan and NEC Advanced Battery Company).
As smartphones further paved their place in the enterprises, Apple, RIM Blackberry, Sony Ericsson, Nokia, Motorola and Google Android are eying for the spotlight. In the last quarter, Gartner said that Smartphone sales had surpassed 41 million units, a 12.8 percent increase compared to the same period last year.
Today, Smartphones have become a compulsory gadget for corporate users. They are not only revolutionizing the mobile handset market, but also changing the way we use PCs. The reason behind the success of the Smartphones is increased interest in social networking with Facebook and Twitter, which demand high speed internet and connectivity features.
In 2009, all the major mobile vendors update its range to increase their revenue and market share. Here, the feature discusses the biggest stories in the Smartphone industry.
1. Google Android platform and Google Phone
Google Android is an open source mobile operating system running on the Linux kernel launched back in 2007. The platform targets mobile devices in large, but now it seems that various PC vendors are working on Android based netbooks and tablets. Recently, it is reported that the Android OS claimed 27% share in the market, whereas iPhone OS reported 55% share in the Smartphone market in US for November month.
Various Smartphones based on the platform is already available in the market like HTC G1, HTC Droid Eris, Motorola Droid, Samsung Galaxy, GW620 Eve, etc. Meanwhile, Google has been working on Android based Smartphone, called “Nexus One”, which will be available in January and will pose challenge Apple’s iPhone and RIM’s Blackberry.
2. Apple updates its iPhone
In June, Apple launched the iPhone 3GS, with a boosted processor, better camera, more storage space, and a digital compass. The new Smartphone is more evolutionary up gradation than the revolutionary improvement to the hardware. The new iPhone 3GS has a number of new features which will certainly impress the corporate world like hardware encryption and support for ActiveSync policies. The new device fixed various anomalies of its predecessors and incorporated features like copy and paste, universal search, voice memos, and remote wiping.
3. Microsoft Windows mobile 6.5 OS
Microsoft launched a minor upgrade of its Windows Mobile 6.1 operating system in October for next generation of Smartphones, called Windows Mobile 6.5. The new software features a new UI and a richer browsing experience having new services like My Phone, which allows to synchronization of text messages, photos, video, contacts and more to the Web; and Windows Marketplace for Mobile.
Meanwhile, the company has been working on its new platform called Windows Mobile 7, codenamed “Photon”, which is a major upgrade planned for release in June 2010.
4. PC vendors join the Smartphone race
After the recent success of Smartphones and the take part in the pie, major PC vendors like Dell, Acer, HP, etc join the race with their handsets. In November, HP had announced its new iPAQ Glisten, a feature-rich 3G world Smartphone that meets the increasing demands of modern mobile professionals. In the same month, Dell Computers launched its Android-based Dell Mini 3 smartphone. Acer had introduced neoTouch, which is a new addition to its growing line of Windows Mobile 6.5 handsets, based on 1 GHz Snapdragon CPU.
5. Mobile App Market
According to latest research, mobile applications market will reach $9 billion by 2011. Apple has dominated the space with over 2 billion download and therefore other vendors are also entering in the field. However, the new apps will pose increased difficulty for developers.
Mobile and compact devices become more and more popular in our society. Each of us faces with them every day. Certainly each of us has mobile phone, hand-held computers or other hi-tech devices.
All of these devices have different mobile platforms. There are such known platforms as Windows MobileM, iPhone, BlackBerry, Symbian OS, Android, Maemo, OpenMoko etc. All of them have different history and advantages and failings.
Introduction
Such platforms as Windows Mobile, BlackBerry, iPhone are «closed» enough and limited by either their own devices (BlackBerry, iPhone) or development complexity. Among other problems of above mentioned platforms there is limited API. Even Java platform for mobile devices has some failings such as great number of limitations; very different APIs; device dependent code. Symbian and Windows Mobile platforms are better from this point as far as they support wider range of devices and their APIs give more options.
Common problem here is also that there are a lot of platforms. Talking about OpenSource and Cross-Platform solutions we should say that they are still developing at the moment and are not widespread yet.
In this article we’ll pay our attention to the Windows Mobile platform.
Microsoft Company released its first platform for inbuilt devices at the end of the 90th. In 2002 Windows CE.NET platform appeared. And at that time Pocket PC based on Windows CE 3.0 platform and higher were released. Further development of wireless communication technologies managed to combine telephone and personal computer. Thus Pocket PC 2002 Phone Edition appeared which supported the standards of GSM, GPRS, Bluetooth and wireless HS network access. In the same time another device concept was developing that was much similar to the above mentioned but was closer to the telephone then to personal computer. This device was named SmartPhone 2002. Fundamental difference between Smartphone and Pocket PC is that Pocket PC has touch screen while Smartphone has only control buttons. They also had different application scopes and supported different standards and technologies.
Windows Mobile platform more belongs to smartphones, communicators and small personal devices. Windows CE and Windows Embedded platforms are commonly used in different industrial equipment.
Now we have Windows Mobile 5 and Windows Mobile 6 generations and Windows Mobile 7 will be released soon. Modern devices based on Windows Mobile Pocket PC; have 500-600 MHz processors and 64-128 MB RAM that is not little for such devices.
1. Development Tools
There are a few models of development of applications for Windows Mobile:
Win32 API MFC .NET Compact Framework.
Microsoft Co gives developers all necessary tools for development of applications for PDA, Pocket PC; and Smartphone.
Here are some advices about different code type choosing.
Use Native Code for achieving the burst performance, direct work with hardware, and also for minimization of system resource requirements. Use Managed Code for development of GUI-oriented applications which main requirements are development and market deployment terms. Managed Code is also good for the easy work with web-services. Use Server-Side Code for work with different devices through a single code base, and also if wide stable communication channel with a device is present.
Below are the reviews of present development tools for PDAs, Pocket PCs and Smartphones.
eMbedded Visual C++ 4.0
Microsoft eMbedded Visual C++ 4.0 development environment is meant to create applications for devices with Windows CE .NET 4.2 operating system and also (with package of updates SP3) for PDA and Smartphones on the Windows Mobile 2003 Second Edition platform. The development environment eMbedded Visual C++ 4.0 is good for creation of native code for mobile and inbuilt devices with Windows CE .NET 4.2 OS. It allows developer to perform Just-In-Time Debugging for diagnostics of unhandled exceptions, Attach-to the process for the extended debugging of processes, and also interaction with an emulator.
Visual Studio .NET and SDP functions
SDP (Smart Device Programming) functions of the integrated environment of development Visual Studio .NET 2003 (2005, 2008) allow to create applications, that uses possibilities of Microsoft .NET Compact Framework platform. Thus a developer can create the distributed mobile data-processing systems, workings both in scenarios with connection and without permanent connection. Vast class library of .NET Compact Framework platform makes application development much quicker than with traditional development tools.
Visual Studio .NET lets create applications for the Pocket PC 2002 devices and (with proper SDKs) Pocket PC 2003, 2005 and Smartphone 2003, 2005, applying the same tools as those used for the development of applications for desktop PCs. Library .NET Compact Framework is installed together with Visual Studio .NET. This library is specially developed for devices with the limited resources. Developers can also use new languages C# and Visual Basic .NET for applications for mobile and inbuilt devices. They are good in workings with web-services and ADO.NET technologies.
Control elements of ASP .NET Mobile Controls extend SDP functions and .NET Compact Framework platform. They give opportunities to use possibilities of .NET Compact Framework and Visual Studio .NET for development of mobile web-applications due to the data delivery to various mobile devices by means of ASP.NET technology. This approach allows to create single mobile web-application in the Visual Studio .NET environment, that will automatically perform data rendering for displaying on various devices: mobile phones, smartphones, PDA, Pocket PC. The integrated development environment makes it possible to create mobile web-applications simply by dragging control elements on forms.
ASP.NET System sets no components on a client device. For adaptation of formatting under concrete browsers server logic is used. It generates information in the formats of Wireless Markup Language (WML), HTML, and Compact HTML (cHTML).
Microsoft SQL Server
Microsoft SQL Server Compact Edition (SQL Server CE) is a compact DBMS for rapid development of applications that extend possibilities of work with enterprise data due to the mobile devices using. SQL Server CE is a tool facilitating development of mobile applications due to support of SQL syntax and usage of application and API interface model that is compatible with SQL Server.
SQL Server CE provides the basic set of relational database functions, in particular optimized query handler; support of transactions and heterogeneous types of data – with unpretentious requirements to the system resources. Remote access to the data and replication by confluence provide reliable delivery of information from the SQL Server bases, possibility of autonomous work with by information and subsequent synchronization with the server. SQL Server CE is good for the systems with mobile devices and wireless networks.
SQL Server CE DBMS is developed for integration with .NET Compact Framework by means of Visual Studio .NET. It simplifies development of applications for work with databases on mobile and built devices. New data supplier of SQL Server CE for code management in the Common Language Runtime environment helps to develop distensible applications with possibilities of autonomous work with information in scenarios without permanent connection.
Microsoft .NET SqlClient gives API for work of both .NET Framework and .NET Compact Framework applications. For the common Windows systems SqlClient Microsoft with SQL Server are used, and SqlServerCe for Microsoft SQL Server Compact Edition databases for Compact Framework.
Name space of SqlClient is in both versions. So we can interact:
Using .NET Compact Framework SqlClient to have an access to SQL Server from device on Desktop. Using .NET Compact Framework SqlServerCe to have an access to SQL Server Compact Edition directly on a device.
Work with databases on a device is similar to the work on Desktop. To access to SQLServer on Desktop system SQL uses TCP/IP connection thus in this case it is possible not to have SQL Server Compact Edition installed on a device.
All of the mentioned models are implemented on the desktop systems. So the experience of their application can be carried for development of the programs for Windows Mobile. Using Win32 API we rapidly get compact code, and also can use it for development of drivers and system component. Using MFC we have extensions of API functions, and also designer for development of interface. And using Compact Framework we have at our disposal well developed interface, automatic garbage collection, support of XML and other options. Also there is even more truncated version — Micro Framework, where there are less SDK functions.
After SDK for MS Visual Studio installation new configurations of assembling appear as well as new functions for assembling under these platforms. Suit also contains Emularor for software development and testing without physical connection between device and computer.
As far as many devices that are based on Windows Mobile have ARM processor it is also possible to compile units using other compilers: AVR32, ARM (RealView), GNUARM, IAR Systems.
2. Building Windows Mobile Applications for Windows Mobile devices using MS Visual Studio .NET
Visual Studio development environment together with Compact Framework enable to develop applications using a vast graphic interface, databases, archiving and encrypting tools, USB, Serial, Bluetooth, and also wireless network connections and telephony. All of these is provided by SDK as well as libraries and heading files from Platform Builder.
2.1 User Interface
Due to the presence of good designer in VS and SDK we can easily develop GUI for mobile applications just the same as for Desktop applications. The only difference is in sets of graphic components for Desktop systems and for Windows Mobile. There is also difference between components of Smartphone and Pocket PC versions caused by that Pocket PC has a touch screen and SmartPhone has not. Therefore development of interface for SmartPhone is more complex. One should take it into account when developing software for both platforms.
Here we should also mention that software built for Pocket PC won’t start on the SmartPhone platform while the opposite situation is possible – till the moment when some special Smartphone function is called.
It is naturally that many graphic components as well as majority of functions from full-size Framework were taken away from Windows Mobile SDK to reduce the size of the SDK on the device side. Only the most needful elements were left. But the productivity and volumes of memory are increasing so the number of function included in SDK becomes greater. So the difference between Compact Framework 1.0 and 2.0 is enormous. Version 1.0 was very limited.
In general the development of GUI with ?ompact Framework on ?# is similar to the development of the common Win32 application on C#.
It is also possible to develop a graphic interface using assembling of the 3D rendering-engines. They are such as GAPI (Game API), OPENGL ES (Embedded System), OPENVG (Vector Graphics), and other projects. Certainly it is rather labor intensive process as far as it is very important to write an optimal code because of the relatively low productivity of mobile devices.
2.2 Communications
To date mobile devices have a wide range of communicational options. They have an access to the wireless high-speed network using 802.11 WiFi Connection standard. They also use IrDa, Bluetooth, and USB host/client functionality. While the usage of Irda is gradually getting less protocols and standards of Bluetooth, WiFi, Edge, GSM, and also USB are used quit often.
Microsoft Company provides such APIs:
ActiveSync API provides functionality for work with services of synchronization, file filters, etc. Bluetooth API provides functionality for wireless access to mobile and peripheral devices. Connection Manager API serves for the automation of connection process, network connection management. Devices are using Connection Manager to establish connection and also to inform about the supposed connection (for example Internet). Object Exchange (OBEX) API provides functionality for work with effective, compact binary protocol just suitable for devices with the limited possibilities. Remote API (RAPI) provides functions for management and remote call of methods on the device side. Such functions are available: access to the register, files, databases and different configurations of device from the Desktop-system. The most important option is Remote Procedure Call when we simply call the method «CeRapiInvoke()» on the Desktop side, transmit the name of DLL on the device side and the name of function in this DLL and then just call this method. Pocket Outlook Object Model API provides functions for work with the objects of Pocket Outlook. It provides interfaces for synchronization and access to the objects: Task, Calendar, Contacts. Telephony API (TAPI) includes: Assisted API Extended API Phone API SIM Manager API Short Messages Service (SMS) API Telephony Service Provider (TSP) API Wireless Application Protocol (WAP) API.
Also mobile devices have possibility to work with Serial (USB) ports. There are a few COM-ports in many devices. Usually the first 3-5 of them are reserved for IrDa, Bluetooth, SerialPort and others. Other ports are available to for user. Some devices have USB-Host functionality in other words they are USB On-The-Go (OTG) devices which can serve both as USB Client and USB Host. For this purpose device should have necessary Hardware and Software (Device Driver).
Device Driver is a driver which is an intermediate layer between the driver of HOST and level of applications. Such driver provides «Stream Interface Driver» and must contain such functions as:
XXX_Init XXX_Open XXX_Close XXX_Write XXX_Read XXX_IOControl
Here “XXX” is replaced with «prefix» (for example «COM», «DSK»).
This prefix registers in the registry when a driver registers in the system. More detailed information about Device Driver Interface can be obtained from MSDN.
Also a developer can use such APIs not concerning communicational ones:
Device Configuration API File and Application Management API Game API Home Screen API HTML Control API MIDI API Shell API Speech Recognizer API Vibrate API Voice Recorder Control API. 2.3 P/Invoke and Native Interop
As far as Compact Framework contains basic functions and methods from complete
Framework we have such functionality as:
XML Serialization Cryptography Security Reflection Interop Services et al.
Certainly Platform Invoke calls are accessible. For this purpose – as well as in complete Framework – we use functions and attributes from namespace System.Runtime.InteropServices and DllImport attribute for description of functions which will be called from non-managed code.
However the functionality of these methods is limited. So Marshal class has PtrToStructure, GetComInterfaceForObject, Copy() and Read() functions but, for example, there is no such function as GetDelegateForFunctionPointer() in it. So it is impossible to make Marshaling just with Delegate. The GetFunctionPointerForDelegate function is available only. If we want to transmit a pointer to the function from Managed code we should get its FunctionPointer and only after that transmit it to the unmanaged code for subsequent call of it from there. Also we can not transmit some objects because Compact Framework can not count SizeOf() for some objects. Therefore frequently we have to transmit data of Blitable types only and arrays of these types (Int, byte, char, but not bool), and transmit and receive classes and structures by means of IntPtr. Certainly it is explained by aspiration to increase the performance. It is therefore recommended to use primary types for Marshaling and «GCHandle» class for storing an object in the process memory and to make this memory «visible» for unmanaged code
Certainly the performance of P/Invoke calls from C# application in C++ DLL is almost twice less than the performance of method calls between C++ DLLs. However the performance of devices grows and it becomes possible to use such calls.
2.4 Debugging
MS Visual Studio enables to make debugging of applications under
Windows Mobile just the same as for Desktop applications. We have Emulator, Device Emulator Manager and other to functionality such as Breakpoints, Threads, Watches panel etc.
However to make Debug using Native and Managed code simultaneously is impossible. Therefore it is possible to start either C++ projects or Managed ones. It’s also so for «Attach to process». There is a possibility of attaching to the processes on the device side (or emulator side). ActiveSync is required to provide communication between a device and the system, it is installed with SDK. An emulator also can be connected to the computer by means of ActiveSync. We obtain almost complete emulation of Windows Mobile devices. Here are both SmartPhone and Pocket PC (or Pocket PC Phone Edition) emulators. However only one Windows Mobile device can be connected to the computer at one time moment. Therefore Debug on two devices simultaneously which for example interact in some way is rather difficult. Certainly we talk only about Debug of applications developed by us but not about applications and services of the system. For such debugging we need the complete built of the system created by means of Platform Builder (in the last versions of Platform Builder it’s included in Visual Studio). We can also create our own SDK for Visual Studio and Windows CE platform.
An emulator also enables to emulate connection with the GSM network and GPS support. It makes possible to test and develop large spectrum of applications without having a physical device in hands.
Talking about Debug with IDA we should mention that version 5.1 already has the possibility to perform Debug by means of this interactive disassembler with the use of their plugin which is installed on a device.
With SDK appearance such option as «Deploy» appears in Visual Studio environment. Now there is «Deploy» item in project context menu additionally to “Build”, “Clean”, “Debug”. After you choose this item DLL or EXE file built by current configuration is transmitted to the device. Also new column appears in Configuration Manager where not only «Build» in some configuration option is available but also «Deploy». Deployment of .NET projects transmits not only the unit but also those builds that are depended on it (Dependencies).
3. Deployment and installation
Development of applications for Windows Mobile supposes also their assembling and creation of installation package. For this purpose there is such concept as ?abinet (.cab) file in Windows Mobile. It is a common archive but it is a installation package also (a sort of MSI package). It is assembled by means of Cab Wizard (cabwiz.exe) from MS VisualStudio (or from a command line). This utility creates processor dependent «.cab» file. WinCEApplicationManager transmits and starts CAB on a device, so user can install the application using instructions appearing on device screen. It is also possible to create the project of MSI Installation which includes CAB file by means of Visual Studio. This built package will be started on user computer and then transmit ?AB installation on a device to continue installation process.
There is special Uninstall Manager on the device side. One should attach configuration INI-file to CAB file. This INI file includes settings to manage installation process such as path, shortcut name to create, minimal OS version to install the application and others written in special syntax. It is also possible to include your own DLL into CAB-file to widen installation options. This DLL contains such functions as «Installer_AfterInstall», «Installer_BeforeInstall», «Installer_AfterUnInstall», «Installer_BeforeUnInstall», code in these functions will be executed on the device side in the certain moments of installation or uninstallation process.
When developing CAB installation it is possible to attach files, different resources, built units, add information to the registry. They are designated as «Project Output. That’s why there is no need to reset anything after CAB-file creation: it will collect all included projects and files and assemble in an archive.
4. Security Model for Windows Mobile 5 and Windows Mobile 6
Devices based on Windows Mobile receive, send and analyze potentially important information which should be protected from unsafe applications. To protect device the starting of unknown applications is disabled, the access to some API is restricted and some registry parts changing is forbidden. Units can be marked as Trusted and Untrusted and system uses this information to prevent starting of unauthorized applications and limit their access to the system. Also the access to the system by means of RAPI (Remote API) through ActiveSync can be restricted. Security Certificates Security Rights are used for the executable units (EXE, DLL) and for CAB-files.
Protection Against Threats and Risks
The followings options help to protect devices:
Strict password protection. PIN code protection. Devices corrupt deleted information to prevent access to it (WM 6). Devices corrupt deleted information on memory cards to prevent access to it (WM 6). Storages encryption and Advanced Encryption Standard for SSL (WM 6). Own certificates usage. Detecting a device via Bluetooth can be protected (WM 6 Smartphone). 2 layer system of application starting (One-tier and Two-tier access). No support of macros, therefore viruses can make much harm.
The start of applications is based on Permissions. Windows Mobile devices use such models:
Privileged Normal Blocked
Privileged applications have the widest access. They can access any API, write in the protected areas of registry and have the complete access to the system.
Most applications have Normal model. They do not have access to the trusted API and do not have the complete control of the system.
Application can not be started at all if it has “Blocked” status. It means that it’s not signed with the proper certificate or user forbade the start by the proper warning of the system.
Analogical situation is with Cab-files. The executable units with Normal status can start Privileged DLL but then they will work as Normal. However Privileged executable units can not start the units having Normal status.
Written by Eugene Kordin, Apriorit specialist.
Learn more about development process of Apriorit here.
Apriorit is an Ukrainian software development company.
Apriorit develops its own products as well as provide offshore development and QA services in the areas of advanced system programming, driver development, software for devices.
One of the key values of Apriorit’s specialists is knowledge generation and sharing of experience.
Learn more about Apriorit and its experience at Apriorit Official site
Aquilonis Windows Mobile developers provide different solutions such as Sync Framework for data synchronization between remote server and Windows Mobile PPC phone and Telephony Framework for Windows Mobile Phones. We are experienced in faster execution of such applications with Microsoft technologies as standalone mobile software, PIM, applications for Smartphone and many others. Our programmers and system analysts will assist you in planning and development of any solution based on Windows Mobile platform.
With the growing need of each business, it requires proper infrastructure including hardware and software for Communication especially when you have more employees and associates in the field carrying mobile device with them. In order to make right information available at the right place, you need software that can run seamlessly across all mobile handsets in order to connect people all the way.
Windows Mobile software development by Aquilonis:
* Windows Mobile Application for data synchronization
* Windows Mobile Telephony or Messaging application
* Custom Windows Mobile drivers development
* Embedded software development for iPhone, Smartphone and Pocket PC
* Migration Mobile applications across any Platforms including Pocket PC, Windows Mobile, Palm OS, Blackberry, Symbian, iPhone, Android etc.
* Windows Mobile applications integration with databases servers
We also provide software implementation for such mobile platforms as Symbian OS 6.x to 9.x, J2ME, Win CE (Pocket PC, Windows Mobile) and Linux & Unix based server solutions using such programming languages for Mobile devices as C#, C++, Java.
Microsoft terms Windows Mobile as smart operating system for mobile devices. This operating system consists of basic applications for such mobile devices as Smartphones, Touchscreen Pocket PC, Handheld computer for automobile and barcode scanners etc. Some of the last versions of this OS are: Windows Mobile 2003, Windows Mobile 2003/SE, Windows Mobile 5.0, Windows Mobile 6 and Windows Mobile 6.1 and the new release is planned in 2010
Aquilonis offers cutting-edge mobile software products and solutions on platforms like Windows Mobile, Blackberry, iPhone, Symbian, Android and J2ME. We continue to redefine brilliance in Mobile Application Development by offering specialized frameworks for Windows Mobile Smartphone, Mobile computing for Application Developers. We also offer products on Windows Mobile such as Pocket System Manager and a cross platform management suite for the above mentioned platforms by taking into account the growing need of innovation in mobile computing through our extensive user behavior study and research.
For More Information, Please visit our web site Aquilonis Technologies Ltd.
An Author of this article Michal John is working for free Business Analysis. If you are looking for some state-of-the art products running on your mobile handset and useful for your day to day usage be it technical or functional then you are at the right place to finding all Windows Mobile Phone. Please visit our web site for get more information http://www.aquilonis.com
Aquilonis Windows Mobile developers provide different solutions such as Sync Framework for data synchronization between remote server and Windows Mobile PPC phone and Telephony Framework for Windows Mobile Phones. We are experienced in faster execution of such applications with Microsoft technologies as standalone mobile software, PIM , applications for Smartphone and many others. Our programmers and system analysts will assist you in planning and development of any solution based on Windows Mobile platform.
With the growing need of each business, it requires proper infrastructure including hardware and software for Communication especially when you have more employees and associates in the field carrying mobile device with them. In order to make right information available at the right place, you need software that can run seamlessly across all mobile handsets in order to connect people all the way.
Windows Mobile software development by Aquilonis:
* Windows Mobile Application for data synchronization
* Windows Mobile Telephony or Messaging application
* Custom Windows Mobile drivers development
* Embedded software development for iPhone, Smartphone and Pocket PC
* Migration Mobile applications across any Platforms including Pocket PC, Windows Mobile, Palm OS, Blackberry, Symbian, iPhone, Android etc.
* Windows Mobile applications integration with databases servers
We also provide software implementation for such mobile platforms as Symbian OS 6.x to 9.x, J2ME, Win CE (Pocket PC, Windows Mobile) and Linux & Unix based server solutions using such programming languages for Mobile devices as C#, C++, Java.
Microsoft terms Windows Mobile as smart operating system for mobile devices. This operating system consists of basic applications for such mobile devices as Smartphones, Touchscreen Pocket PC, Handheld computer for automobile and barcode scanners etc. Some of the last versions of this OS are: Windows Mobile 2003, Windows Mobile 2003/SE, Windows Mobile 5.0, Windows Mobile 6 and Windows Mobile 6.1 and the new release is planned in 2010.
Aquilonis offers cutting-edge mobile software products and solutions on platforms like Windows Mobile, Blackberry, iPhone, Symbian, Android and J2ME. We continue to redefine brilliance in Mobile Application Development by offering specialized frameworks for Windows Mobile Smartphone, Mobile computing for Application Developers. We also offer products on Windows Mobile such as Pocket System Manager and a cross platform management suite for the above mentioned platforms by taking into account the growing need of innovation in mobile computing through our extensive user behavior study and research.
For More Information, Please visit our web site Aquilonis Technologies Ltd.
An Author of this article Michal John is working for free Business Analysis. If you are looking for some state-of-the art products running on your mobile handset and useful for your day to day usage be it technical or functional then you are at the right place to finding all Windows Mobile Phone. Please visit our web site for get more information http://www.aquilonis.com
Android Application Development âa new waveâ in the mobile market is predicted to be a crowning point in the mobile world. Android Application Development helps you to develop innovative and dynamic applications for mobile users.
Now a days, mobile users want more functions and features in their mobile phones. The mobile developers want to meet the user demands by designing and building powerful mobile applications. Android Application Development is the best suitable option for them as Android is a powerful and instinctive platform to develop mobile applications. It contains a real power to completely change the look and feel, as well as the functions of a mobile device.
Using Android, the developers can create powerful and innovative mobile applications very easily and quickly. Android is a mobile software platform as well as operating system designed on the Linux Kernel. It is open source software, which is developed by Google and the Open Handset Alliance.
As it is open source, the developers can do OS level customization at a minimal cost. Android provides support for Java to develop mobile applications. Therefore, the mobile application developers can create third party applications using Java and Android Framework.
Android offers various features to create inventive and modern mobile applications:
GSM, EDGE, CDMA, Bluetooth, WI-Fi, EV-DO, and UMTS technologies to send and receive data across mobile networks. Comprehensive libraries for 2D and 3D graphics. A wide range of libraries for image, video, and audio files, which includes MPEG4, H.263, H.264, AMR, AMR-WB, MP3, AAC, JPG, BMP, GIF, PNG, WAV, and MIDI formats. Features of Video camera, touchscreens, GPS, accelerometer, and magnetometer. Interprocess communication (IPC) message passing P2P using Google Talk. SQLite for data storage
Android includes a SDK that provides a wide range of libraries and tools for Android Application Development. The SDK provides a complete set of tools to design the UI for an application and to develop and debug application code.
The SDK includes multiple versions of Android platform (For example, Android 1.1, and Android 1.5) that you can use for Android Application Development. For each version, the SDK provides a fully compliant Android library and system image.
Android SDK includes some core applications:
An e-mail client compatible with Gmail An SMS program A Personal Information Management (PIM) program including a calendar and contact list A Google Map Application A web browser A music player A picture viewer The Android Marketplace client to download third-party application The Amazon MP3 store client to purchase DRM free music
Android Application Development is based on four basic components:
Activities: A UI component that corresponds to display screens. Each activity displays one screen to the user. When the activity is not running, the operating system can kill it to save memory space. Broadcast Receiver: Is a reaction to an event. For example, phone ringing. Services: The tasks that run in the background. For example, an MP3 players running in the background while the user has gone to use other application on mobile device. Content Provider: Shares data with other activities and services.
Android Application Development is a grooming business among software development companies now a days. The developers have leveraging skills and expertise in Android Application Development. It has opened up new path for the incredible growth of Outsourcing Android services and expertise. The companies involved in business of Outsourcing Android services and expertise are providing cost-effective and feature-rich solutions to its client.
If you too wish to develop innovative and dynamic applications with Android Applications ,Android Application DevelopmentContact Rapidsoft Technologies for more details
Written by:
Igor Darkov, Software Developer of Device Team, Apriorit Inc.
In this article I’ve described:
How to develop simple Java service for the Android Devices; How to communicate with a service from the other processes and a remote PC; How to install and start the service remotely from the PC. 1. Java Service Development for the Android Devices
Services are long running background processes provided by Android. They could be used for background tasks execution. Tasks can be different: background calculations, backup procedures, internet communications, etc. Services can be started on the system requests and they can communicate with other processes using the Android IPC channels technology. The Android system can control the service lifecycle depending on the client requests, memory and CPU usage. Note that the service has lower priority than any process which is visible for the user.
Let’s develop the simple example service. It will show scheduled and requested notifications to user. Service should be managed using the service request, communicated from the simple Android Activity and from the PC.
First we need to install and prepare environment:
Download and install latest Android SDK from the official web site (http://developer.android.com); Download and install Eclipse IDE (http://www.eclipse.org/downloads/); Also we’ll need to install Android Development Tools (ADT) plug-in for Eclipse.
After the environment is prepared we can create Eclipse Android project. It will include sources, resources, generated files and the Android manifest.
1.1 Service class development
First of all we need to implement service class. It should be inherited from the android.app.Service (http://developer.android.com/reference/android/app/Service.html) base class. Each service class must have the corresponding <service> declaration in its package’s manifest. Manifest declaration will be described later. Services, like the other application objects, run in the main thread of their hosting process. If you need to do some intensive work, you should do it in another thread.
In the service class we should implement abstract method onBind. Also we override some other methods:
onCreate(). It is called by the system when the service is created at the first time. Usually this method is used to initialize service resources. In our case the binder, task and timer objects are created. Also notification is send to the user and to the system log: public void onCreate() { super.onCreate(); Log.d(LOG_TAG, “Creating service”); showNotification(”Creating NotifyService”); binder = new NotifyServiceBinder(handler, notificator); task = new NotifyTask(handler, notificator); timer = new Timer(); } onStart(Intent intent, int startId). It is called by the system every time a client explicitly starts the service by calling startService(Intent), providing the arguments it requires and the unique integer token representing the start request. We can launch background threads, schedule tasks and perform other startup operations. public void onStart(Intent intent, int startId) { super.onStart(intent, startId); Log.d(LOG_TAG, “Starting service”); showNotification(”Starting NotifyService”); timer.scheduleAtFixedRate(task, Calendar.getInstance().getTime(), 30000); } onDestroy(). It is called by the system to notify a Service that it is no longer used and is being removed. Here we should perform all operations before service is stopped. In our case we will stop all scheduled timer tasks. public void onDestroy() { super.onDestroy(); Log.d(LOG_TAG, “Stopping service”); showNotification(”Stopping NotifyService”); timer.cancel(); } onBind(Intent intent). It will return the communication channel to the service. IBinder is the special base interface for a remotable object, the core part of a lightweight remote procedure call mechanism. This mechanism is designed for the high performance of in-process and cross-process calls. This interface describes the abstract protocol for interacting with a remotable object. The IBinder implementation will be described below. public IBinder onBind(Intent intent) { Log.d(LOG_TAG, “Binding service”); return binder; }
To send system log output we can use static methods of the android.util.Log class (http://developer.android.com/reference/android/util/Log.html). To browse system logs on PC you can use ADB utility command: adb logcat.
The notification feature is implemented in our service as the special runnable object. It could be used from the other threads and processes. The service class has method showNotification, which can display message to user using the Toast.makeText call. The runnable object also uses it:
public class NotificationRunnable implements Runnable { private String message = null; public void run() { if (null != message) { showNotification(message); } } public void setMessage(String message) { this.message = message; } }
Code will be executed in the service thread. To execute runnable method we can use the special object android.os.Handler. There are two main uses for the Handler: to schedule messages and runnables to be executed as some point in the future; and to place an action to be performed on a different thread than your own. Each Handler instance is associated with a single thread and that thread’s message queue. To show notification we should set message and call post() method of the Handler’s object.
1.2 IPC Service
Each application runs in its own process. Sometimes you need to pass objects between processes and call some service methods. These operations can be performed using IPC. On the Android platform, one process can not normally access the memory of another process. So they have to decompose their objects into primitives that can be understood by the operating system , and “marshall” the object across that boundary for developer.
The AIDL IPC mechanism is used in Android devices. It is interface-based, similar to COM or Corba, but is lighter . It uses a proxy class to pass values between the client and the implementation.
AIDL (Android Interface Definition Language) is an IDL language used to generate code that enables two processes on an Android-powered device to communicate using IPC. If you have the code in one process (for example, in Activity) that needs to call methods of the object in another process (for example, Service), you can use AIDL to generate code to marshall the parameters.
Service interface example showed below supports only one sendNotification call:
interface INotifyService { void sendNotification(String message); }
The IBinder interface for a remotable object is used by clients to perform IPC. Client can communicate with the service by calling Context’s bindService(). The IBinder implementation could be retrieved from the onBind method. The INotifyService interface implementation is based on the android.os.Binder class (http://developer.android.com/reference/android/os/Binder.html):
public class NotifyServiceBinder extends Binder implements INotifyService { private Handler handler = null; private NotificationRunnable notificator = null; public NotifyServiceBinder(Handler handler, NotificationRunnable notificator) { this.handler = handler; this.notificator = notificator; } public void sendNotification(String message) { if (null != notificator) { notificator.setMessage(message); handler.post(notificator); } } public IBinder asBinder() { return this; } }
As it was described above, the notifications could be send using the Handler object’s post() method call. The NotificaionRunnable object is passed as the method’s parameter.
On the client side we can request IBinder object and work with it as with the INotifyService interface. To connect to the service the android.content.ServiceConnection interface implementation can be used. Two methods should be defined: onServiceConnected, onServiceDisconnected:
ServiceConnection conn = null; … conn = new ServiceConnection() { public void onServiceConnected(ComponentName name, IBinder service) { Log.d(”NotifyTest”, “onServiceConnected”); INotifyService s = (INotifyService) service; try { s.sendNotification(”Hello”); } catch (RemoteException ex) { Log.d(”NotifyTest”, “Cannot send notification”, ex); } } public void onServiceDisconnected(ComponentName name) { } };
The bindService method can be called from the client Activity context to connect to the service:
Context.bindService(new Intent(this, NotifyService.class), conn, Context.BIND_AUTO_CREATE);
The unbindService method can be called from the client Activity context to disconnect from the service:
Context.unbindService(conn); 1.3 Remote service control
Broadcasts are the way applications and system components can communicate. Also we can use broadcasts to control service from the PC. The messages are sent as Intents, and the system handles dispatching them, including starting receivers.
Intents can be broadcasted to BroadcastReceivers, allowing messaging between applications. By registering a BroadcastReceiver in application’s AndroidManifest.xml (using <receiver> tag) you can have your application’s receiver class started and called whenever someone sends you a broadcast. Activity Manager uses the IntentFilters, applications register to figure out which program should be used for a given broadcast.
Let’s develop the receiver that will start and stop notify service on request. The base class android.content.BroadcastReceiver should be used for these purposes (http://developer.android.com/reference/android/content/BroadcastReceiver.html):
public class ServiceBroadcastReceiver extends BroadcastReceiver { … private static String START_ACTION = “NotifyServiceStart”; private static String STOP_ACTION = “NotifyServiceStop”; … public void onReceive(Context context, Intent intent) { … String action = intent.getAction(); if (START_ACTION.equalsIgnoreCase(action)) { context.startService(new Intent(context, NotifyService.class)); } else if (STOP_ACTION.equalsIgnoreCase(action)) { context.stopService(new Intent(context, NotifyService.class)); } } }
To send broadcast from the client application we use the Context.sendBroadcast call. I will describe how to use receiver and send broadcasts from the PC in chapter 2.
1.4 Android Manifest
Every application must have an AndroidManifest.xml file in its root directory. The manifest contains essential information about the application to the Android system, the system must have this information before it can run any of the application’s code. The core components of an application (its activities, services, and broadcast receivers) are activated by intents. An intent is a bundle of information (an Intent object) describing a desired action — including the data to be acted upon, the category of component that should perform the action, and other pertinent instructions. Android locates an appropriate component to respond to the intent, starts the new instance of the component if one is needed, and passes it to the Intent object.
We should describe 2 components for our service:
NotifyService class is described in the <service> tag. It will not start on intent. So the intent filtering is not needed. ServiceBroadcastReceived class is described in the <receiver> tag. For the broadcast receiver the intent filter is used to select system events: <application android:icon=”@drawable/icon” android:label=”@string/app_name”> … <service android:enabled=”true” android:name=”.NotifyService” android:exported=”true”> </service> <receiver android:name=”ServiceBroadcastReceiver”> <intent-filter> <action android:name=”NotifyServiceStart”></action> <action android:name=”NotifyServiceStop”></action> </intent-filter> </receiver> … 2. Java service remote installation and start 2.1 Service installation
Services like the other applications for the Android platform can be installed from the special package with the .apk extension. Android package contains all required binary files and the manifest.
Before installing the service from the PC we should enable the USB Debugging option in the device Settings-Applications-Development menu and then connect device to PC via the USB.
On the PC side we will use the ADB utility which is available in the Android SDK tools directory. The ADB utility supports several optional command-line arguments that provide powerful features, such as copying files to and from the device. The shell command-line argument lets you connect to the phone itself and issue rudimentary shell commands.
We will use several commands:
Remote shell command execution: adb shell <command> <arguments> File send operation: adb push <local path> <remote path> Package installation operation: adb install <package>.apk
I’ll describe the package installation process in details. It consists of several steps which are performed by the ADB utility install command:
First of all the .apk package file should be copied to the device. The ADB utility connects to the device and has limited “shell” user privileges. So almost all file system directories are write-protected for it. The /data/local/tmp directory is used as the temporary storage for package files. To copy package to the device use the command: adb push NotifyService.apk /data/local/tmp Package installation. ADB utility uses special shell command to perform this operation. The “pm” (Package Manager?) utility is present on the Android devices. It supports several command line parameters which are described in the Appendix I. To install the package by yourself execute the remote shell command: adb shell pm install /data/local/tmp/NotifyService.apk Cleanup. After the package is installed, ADB removes the temporary file stored in /data/local/tmp folder using the “rm” utility: adb shell rm /data/local/tmp/NotifyService.apk. To uninstall package use the “pm” utility: adb shell pm uninstall <package> 2.2 Remote service control
To be able to start and stop the NotifyService from the PC we can use the “am” (Activity Manager?) utility which is present on the Android device. The command line parameters are described in the Appendix II. The “am” utility can send system broadcast intents. Our service has the broadcast receiver which will be launched by the system request.
To start NotifyService we can execute remote shell command:
adb shell am broadcast –a NotifyServiceStart
To stop the NotifyService we can execute remote shell command:
adb shell am broadcast –a NotifyServiceStop
Note, that the NotifyServiceStart and NotifyServiceStop intents were described in the manifest file inside the <receiver> … <intent-filter> tag. Other requests will not start the receiver.
Appendix I. PM Usage (from Android console) pm [list|path|install|uninstall] pm list packages [-f] pm list permission-groups pm list permissions [-g] [-f] [-d] [-u] [GROUP] pm path PACKAGE pm install [-l] [-r] PATH pm uninstall [-k] PACKAGE The list packages command prints all packages. Use the -f option to see their associated file. The list permission-groups command prints all known permission groups. The list permissions command prints all known permissions, optionally only those in GROUP. Use the -g option to organize by group. Use the -f option to print all information. Use the -s option for a short summary. Use the -d option to only list dangerous permissions. Use the -u option to list only the permissions users will see. The path command prints the path to the .apk of a package. The install command installs a package to the system. Use the -l option to install the package with FORWARD_LOCK. Use the -r option to reinstall an exisiting app, keeping its data. The uninstall command removes a package from the system. Use the -k option to keep the data and cache directories around after the package removal. Appendix II. AM Usage (from Android console) am [start|broadcast|instrument] am start -D INTENT am broadcast INTENT am instrument [-r] [-e <ARG_NAME> <ARG_VALUE>] [-p <PROF_FILE>] [-w] <COMPONENT> INTENT is described with: [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>] [-c <CATEGORY> [-c <CATEGORY>] …] [-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...] [--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...] [-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...] [-n <COMPONENT>] [-f <FLAGS>] [<URI>] Resources used: Android Installation Guide.
http://developer.android.com/sdk/1.5_r2/installing.html
Android Developer reference.
http://developer.android.com/reference/classes.html
Jesse Burns. Developing Secure Mobile Applications for Android.
https://www.isecpartners.com/files/iSEC_Securing_Android_Apps.pdf
Designing a Remote Interface Using AIDL
http://developer.android.com/guide/developing/tools/aidl.html
Apriorit is an Ukrainian software development company.
Apriorit develops its own products as well as provide offshore development and QA services in the areas of advanced system programming, driver development, software for devices.
One of the key values of Apriorit’s specialists is knowledge generation and sharing of experience.
Learn more about Apriorit and its experience at Apriorit Official site
Android -A software stack for mobile devices that includes an operating system, middleware and key applications. Based on Open Source solutions (in particular, Linux kernel) it provides an easy integration with other Google services (maps, shopping, search).
The Android SDK includes a comprehensive set of development tools such as debugger, libraries, a handset emulator (based on QEMU), documentation, sample code, and tutorials.
With great built-in features of the Android SDK provides immense flexibility and opportunity to develop diverse smart mobile applications, providing the opportunity to cash in for not only technology companies but also individual entrepreneurs from various industries and aspects, be it pharmaceuticals, sales force automation, entertainment, games, location based services of or any sort of utility applications.
The Android core libraries provide the functionality needed to build some amazingly rich mobile applications, and the Android development tools make running, debugging, and testing your applications a snap. Android enable developers to create compelling mobile applications that take full advantage of all a handset has to offer such as making calls, sending text messages, or using the camera, allowing developers to create richer and more cohesive experiences for users.
Android is open source that liberally extends to incorporate new cutting edge technologies as they emerge. The platform will continue to evolve as the developer community working together to build innovative mobile applications.
Since Android has made Global recognition in the market, we have our Android application Development team which is well equipped to understand and use different toolkit and cater to the growing demands of Android application Development. We delegate the capabilities of the Android application Development and provide fast, high quality and a cost-effective solution to all our customers willing to add essence to it.
Cathy Brown is a well known writer for Android Application Development for an offshore software development company, offers Outsource Android Development, Android Software Development, Android Developers India. For more information visit http://www.rapidsofttechnologies.com

Categories
Tag Cloud
Blog RSS
Comments RSS

Void « Default
Life
Earth
Wind
Water
Fire
Light 