Recently in android Category

Android Developer Phone 1 and iPhone 3G

Image by closari via Flickr

I was doing some research on writing device drivers for android. I accidently hit a page about capacitive display screens. iPhone and G1 sport a capacitve screen, whereas HTC touch, O2, diamond etc  have a resistive screen. Resistive screens are in play since a long time and they have powered the smartphones for a long time.

This is what wikipedia has to say about capicitive screens.

A capacitive touchscreen panel is coated with a material, typically indium tin oxide, that conducts a continuous electrical current across the sensor.[2][3] The sensor therefore exhibits a precisely controlled field of stored electrons in both the horizontal and vertical axes - it achieves capacitance. The human body is also an electrical device which has stored electrons and therefore also exhibits capacitance. Capacitive sensors work based on proximity, and do not have to be directly touched to be triggered. It is a durable technology that is used in a wide range of applications including point-of-sale systems, industrial controls, and public information kiosks. It has a higher clarity than Resistive technology, but it only responds to finger contact and will not work with a gloved hand or pen stylus. Capacitive touch screens can also support Multitouch. A good example of this is Apple Inc.'s iPhone and iPod touch.

This is its take on resistive screens.

A resistive touchscreen panel is composed of several layers. The most important are two thin metallic electrically conductive and resistive layers separated by thin space. When some object touches this kind of touch panel, the layers are connected at a certain point; the panel then electrically acts similar to two voltage dividers with connected outputs. This causes a change in the electrical current which is registered as a touch event and sent to the controller for processing.

Resistive touchscreen panels are generally the most affordable technology but offer only 75% clarity (premium films and glass finishes allow transmissivity to approach 85%) and the layer can be damaged by sharp objects. Resistive touchscreen panels are not affected by outside elements such as dust or water and are the type most commonly used today. The Nintendo DS is an example of a product that uses resistive touchscreen technology.


The articles on web had some interesting take on usage of these screens. Resistive screens are far less expensive than capacitive screens. But the most important single factor supporting the continued use of resistive screens is the huge opportunity in the Asian market and its need for screens that support handwriting recognition input with a stylus. A capacitive screen or QWERTY keyboard just won't suffice in markets like China, given the nature of its alphabet.

Thus, capacitive will find itself into high end phones, whereas resistive will be people's choice for phone screen.


Reblog this post [with Zemanta]

Playing around with android

| No Comments | No TrackBacks
For testing out space suits and whatnot.

Image via Wikipedia

I have been androiding since last 2 days. I started from scratch, understood the documentation, went through tutorials, read sample code here and there, and did some exercises. Finally, after a whole day, i was able to build something productive on top of it. Blame my creativity, whatever i wished to build for it, was coincidently turning out to be enhancement of already present feature. Contacts, Calls, messaging etc. All this lead to some more efforts towards building the android operatng system from scratch. Following were the steps
  1. Get repo scripts from google
  2. Get checkout of the trunk
  3. Copy buildspec.mk to root. It ususally resides in one of the internal folders.
After this, i decided to compile the simulator. I launched make, and after 15-20 odd minutes, make returned some errors. These errors were due to INT_MAX being used in some of the cpp files. I am on Ubuntu interpid (8.10). This has gcc version 4.3.x. For optimization purposes, headers have been cleaned out. Thus, android folks forgot to put #include into one of the files where they were using INT_MAX. I fired make again.

 After some time, it compained giving double definition of template swap. This came in one of the stl files. I had to comment to move further.

All was built peacefully, and finally the simulator started building. At this point linker errors related to wxheaders-2.6 appeared. Somehow, the program was unable to link to gtk headers properly.I spent good 1 hour trying to fix it by installing different versions. After pondering upon variouos options, i thought it would be best to drop the simulator and instead compile an arm image for the emulator. I did changes in buildspec.mk by specifying correct target, and fired make again.

This time it complained not finding the definition of swap (the same template that i had commented earlier due to double definition). I uncommented it, and put make again.

After around 45 mins of screen scrolls, it had put system, ramdisk, kernel, and userdata images in proper folders.

I ran following command  

ashish@zeus:~ out/host/linux-x86/bin/emulator -system out/target/product/generic/ -kernel prebuilt/android-arm/kernel/kernel-qemu -data out/target/product/generic/userdata.img

This brought up the emulator on screen running the bundled apps. I changed a couple of strings in Contacts application, and build the images again by make. This time it was very fast and after firing up the emulator again, i could see the change s being reflected there.

Next few days would be building some core features and perhaps building some more apis.



android_screen.jpg.



Reblog this post [with Zemanta]

About this Archive

This page is an archive of recent entries in the android category.

framework is the next category.

Find recent content on the main index or look in the archives to find all content.

Pages

Powered by Movable Type 4.23-en