Developers can feel the shift in momentum. “I used to tell people I wrote software for Android, and they’d look at me like I had three heads,” said Michael Novak, who handles Android development at Medialets, a mobile advertising software company, and helps organize the monthly New York Android Software Developers Meetup. “That wasn’t even a year ago. Now everyone knows what it is. The popularity has exploded.”
Read more ...
Thursday, October 28, 2010
Thursday, October 14, 2010
Friday, October 1, 2010
Android Market expands ..
Hello,
We're writing to inform you about some changes to Android Market that require your attention.
Effective today, developers from 20 additional countries (Argentina, Australia, Belgium, Brazil, Canada, Denmark, Finland, Hong Kong, Ireland, Israel, Mexico, New Zealand, Norway, Portugal, Russia, Singapore, South Korea, Sweden, Switzerland and Taiwan) can now sell paid apps on Android Market. Over the next 2 weeks, users from 18 new countries (Argentina, Brazil, Belgium, Czech Republic, Denmark, Finland, Hong Kong, India, Ireland, Israel, Mexico, Norway, Poland, Portugal, Russia, Singapore, Sweden, and Taiwan) will be able to purchase paid apps from Android Market.
Please see the related post at Android Developer Blog here:
http://android-developers.blogspot.com/
We encourage you to visit the Android Market developer console at http://market.android.com/publish to make the necessary adjustments.
Thanks, and we look forward to continue working with you on Android Market.
Sincerely,
The Android Market Team
Google, Inc.
1600 Amphitheatre Parkway
Mountain View, CA 94043
We're writing to inform you about some changes to Android Market that require your attention.
Effective today, developers from 20 additional countries (Argentina, Australia, Belgium, Brazil, Canada, Denmark, Finland, Hong Kong, Ireland, Israel, Mexico, New Zealand, Norway, Portugal, Russia, Singapore, South Korea, Sweden, Switzerland and Taiwan) can now sell paid apps on Android Market. Over the next 2 weeks, users from 18 new countries (Argentina, Brazil, Belgium, Czech Republic, Denmark, Finland, Hong Kong, India, Ireland, Israel, Mexico, Norway, Poland, Portugal, Russia, Singapore, Sweden, and Taiwan) will be able to purchase paid apps from Android Market.
Please see the related post at Android Developer Blog here:
http://android-developers.blogspot.com/
We encourage you to visit the Android Market developer console at http://market.android.com/publish to make the necessary adjustments.
Thanks, and we look forward to continue working with you on Android Market.
Sincerely,
The Android Market Team
Google, Inc.
1600 Amphitheatre Parkway
Mountain View, CA 94043
Monday, August 23, 2010
Making Buttons Click!!!
Here is the basic approach:
1. First create a reference to a button in the view xml file (main.xml),
using a <button> tag, e.g., <Button android:id:"@+id/plus" .. />
2. Then use findViewbyId to obtain the id from the xml file (in the id attribute) to the program, e.g.
Button bPlus=(Button)findViewById(R.id.plus)
3. Next set the Button class OnClickListener. If you have set your Activity to implement the OnClickListener interface, then you set it to itself (this). E.g.
bPlus.setOnClickListener(this)
4. To implement the listener, you put a switch to select the id of the button clicked, e.g.
public void onClick(View v){
switch (v.getID()){
case R.id.plus:
//do something
break;
...
}
1. First create a reference to a button in the view xml file (main.xml),
using a <button> tag, e.g., <Button android:id:"@+id/plus" .. />
2. Then use findViewbyId to obtain the id from the xml file (in the id attribute) to the program, e.g.
Button bPlus=(Button)findViewById(R.id.plus)
3. Next set the Button class OnClickListener. If you have set your Activity to implement the OnClickListener interface, then you set it to itself (this). E.g.
bPlus.setOnClickListener(this)
4. To implement the listener, you put a switch to select the id of the button clicked, e.g.
public void onClick(View v){
switch (v.getID()){
case R.id.plus:
//do something
break;
...
}
Wednesday, August 11, 2010
Monday, July 12, 2010
Android App Inventor by Google
Google has released a visual application designer called App Inventor for developing Android-based apps that require no programming. The App Inventor is based on Java OpenBlocks, a graphical programming system, developed in MIT. OpenBlocks, itself is closedly related to StarLogo, StarLogo TNG, and Scratch. The project leader is Harold Abelson of MIT, who is also the author of "Structure and Interpretation of Computer Programs" with Gerald Sussman.
The App Inventor is web-based and connects to the Android device via USB port. The application appears live on the device as changes are being made on App Inventor.
More at the App Inventor Website.
The App Inventor is web-based and connects to the Android device via USB port. The application appears live on the device as changes are being made on App Inventor.
More at the App Inventor Website.
Wednesday, July 7, 2010
Hands on: ePad images (2)
(1) Image capture showing the memory available, onboard has 256M. (2) Shell command showing the cpu info. The CPU for the unit is ARM 926EJ-S which is a 32-bit RISC chip. The J denotes Jazelle for Java acceleration (direct execution of Java bytecode), E for DSP extensions. The ARM9 series is used in alot of consumer devices. (3) Shell command showing the mounted disk, it has 1Gb of memory. It has an micro-sd card extension that enables 2-32 Gb micro cards.
Hands on: ePad images (1)
Sunday, May 9, 2010
Wednesday, May 5, 2010
Creating Interfaces in XML
To save time and trouble, use the droiddraw.org online program or download it. It is an open source program. With it you can drag and drop widgets.
The code generated:
The code generated:
<?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout android:id="@+id/widget0" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" > <Button android:id="@+id/widget28" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#ffccffcc" android:text="Press Me" android:textStyle="bold|italic" android:layout_x="0px" android:layout_y="126px" > </Button> <TextView android:id="@+id/widget30" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#ff000000" android:text="My First View" android:layout_x="112px" android:layout_y="95px" > </TextView> </AbsoluteLayout>
HOTT MD700 Tablet
- 7'' TFT, 800*480 pixel hi-definition Touch screen
- HDMI(1080P) Output
- WIFI, USB(OTG), SD card slot
- E-book function
- WIN CE SYSTEM (future Android!!)
- Video format:AVI,RM/RMVB,FLV,DAT,VOB,
WMV, MPG, MPEG-1, MPEG-11, MP4, MKV - Audio format: MP3, WMA, AAC, FLAC, WAV, OGG, APE
- Image Format: BMP,JPEG,PNG,GIF
Source: HOTT
Contact:
Shenzhen,China Factory
HONGFUTAI E-TECH(SHENZHEN) CO., LIMITED
ADD: Block6,Zone3,XinXing Industrial Park, XinHe Village,FuHai Avenue,FuYong Town, BaoAn District, ShenZhen ,China.
Postal Code:518103
TEL: +86-755-83123812 EXT:8088; 8802
FAX: +86-755-8312489
Great Wall GPad and GBook
Great Wall (Beijing) announced the released of the 7in GPAD and 10in GBOOK on 28 April 2010. However despite its name, it actually runs Windows CE!!
GPAD Specs (top left):
- CPU: Telechips 8901 720MHZ ARM 11
- 256MB DDR2 RAM
- 4Gb flash, expandable
- 1-32 Micro SD slot, 1400 mA Li-polymer battery, 1080 HDMI interface, GPS, Wifi, external 3G module
GBOOK specs (bottom left):
- CPU Core 2 Duo U230,CS35 Chipset
- 2G DDR RAM
- Intel GMA45000MHD integrated graphics
- 2.5 HDD
- 10/100M LAN, Wifi, Bluetooth
Source: shanzhaiben.com
Content Providers and SQLite
The content provider abstraction allows you to retrieve data using REST-like syntax. For example, to retrieve book 69 from the book database, create a URI like:
content://com.android.book.BookProvider/books/23
Content-provider abstraction is required only if you want to share data (files, SQL data, etc) externally or between applications.
SQLite is built into the Android runtime, so Android applications can use SQLite databases.
If you are using the SQLite database only internally, you need a class that extends SQLiteOpenHelper, then create an instance and ask it to getReadableDatabase() or getWriteableDatabase().
db=(new myDBClass(this)).getWritableDatabase();
Use db.execSQL(...) to execute SQL statements such as insert, update and delete that does not return values, or db.insert(), db.delete(), db.update() can be used. The syntax is not JDBC but uses a simpler API.
Use db.rawQuery(..) if the select query is fixed, otherwise db.query(..), which returns a cursor. Another way is to use SQLiteQueryBuilder interface to encapsulate the call details.
content://com.android.book.BookProvider/books/23
Content-provider abstraction is required only if you want to share data (files, SQL data, etc) externally or between applications.
SQLite is built into the Android runtime, so Android applications can use SQLite databases.
If you are using the SQLite database only internally, you need a class that extends SQLiteOpenHelper, then create an instance and ask it to getReadableDatabase() or getWriteableDatabase().
db=(new myDBClass(this)).getWritableDatabase();
Use db.execSQL(...) to execute SQL statements such as insert, update and delete that does not return values, or db.insert(), db.delete(), db.update() can be used. The syntax is not JDBC but uses a simpler API.
Use db.rawQuery(..) if the select query is fixed, otherwise db.query(..), which returns a cursor. Another way is to use SQLiteQueryBuilder interface to encapsulate the call details.
Manually accessing SQLite databases on Android
Start the Android emulator or connect a device.
To see available devices, run: tools\android list avd
If emulator not started, using the name fround above, run: tools\emulator [avdname]
To see if devices connected run: tools/adb.exe devices
Open the adb shell: tools\adb.exe shell
Once the shell is started you have access to a Linux ash shell, with a limited commands. At the shell type, to show the list of files: ls -l
The of databases are in /data/data directory, execute: ls -R /data/data/*/databases
SQLite can be invoked: sqlite3 [database_name]
To quit SQLite, type: .exit
To copy the database to desktop PC, use : adb pull [database_name] [local path name]
Use adb push [local] [remote] to copy back the file
To see available devices, run: tools\android list avd
If emulator not started, using the name fround above, run: tools\emulator [avdname]
To see if devices connected run: tools/adb.exe devices
Open the adb shell: tools\adb.exe shell
Once the shell is started you have access to a Linux ash shell, with a limited commands. At the shell type, to show the list of files: ls -l
The of databases are in /data/data directory, execute: ls -R /data/data/*/databases
SQLite can be invoked: sqlite3 [database_name]
To quit SQLite, type: .exit
To copy the database to desktop PC, use : adb pull [database_name] [local path name]
Use adb push [local] [remote] to copy back the file
Tuesday, May 4, 2010
More on Android resources ...
Instead of specifying actual values as a resource (e.g. string, colour, etc), it can be referred by an indirection reference string. This is useful, e.g in internationalization, etc.
The format for specifying references resources in the XML file is:
@[package:]type/name
@[package:]+type/name
?[namespace:]type/name
If you are using the Android default package then [package:] can be omitted.
The '@' is for specifying references to the resource, i.e. get the actual value by looking it up as specified by the type and name,e.g.:
android:textColor="@color/opaque_red"
The actual value for opaque_red would have been specified in res/values/colors.xml.
The "+" is for auto-generation of resource value for the resource, generally used for generation the resource identification number, much like SQL auto-increment.
Without the "+" the resource value must have been specified beforehand, i.e in res/values/colors.xml
The "?" allows lookup using the name of the attribute of the resource, e.g.:
android:textColor="?android:textDisabledColor"
The format for specifying references resources in the XML file is:
@[package:]type/name
@[package:]+type/name
?[namespace:]type/name
If you are using the Android default package then [package:] can be omitted.
The '@' is for specifying references to the resource, i.e. get the actual value by looking it up as specified by the type and name,e.g.:
android:textColor="@color/opaque_red"
The actual value for opaque_red would have been specified in res/values/colors.xml.
The "+" is for auto-generation of resource value for the resource, generally used for generation the resource identification number, much like SQL auto-increment.
Without the "+" the resource value must have been specified beforehand, i.e in res/values/colors.xml
The "?" allows lookup using the name of the attribute of the resource, e.g.:
android:textColor="?android:textDisabledColor"
Monday, May 3, 2010
XML layout and R class
The user interface elements are declared in an XML file, these are compiled automatically (if you have setup your IDE correctly) into a R (for resource, i guess) class. Through R your Android program can access them.
So if your widgets and containers are specified in myMain.xml, then in your OnCreate() method of the Activity, then you use setContentView(R.layout.myMain).
If you want to access the elements in the XMl file, the element must have an android:id tag filled. To access the identified widget use findViewById by passing the numeric id found in the R.id.something.
XML fragment:
The fragment above declares a button with text "Press" for the specified size. To access the button, in this case, use findViewById(R.id.button1).
Eg.
Button btn=(Button) findViewById(R.id.button1);
btn.setOnClickListener(this);
...
...
So if your widgets and containers are specified in myMain.xml, then in your OnCreate() method of the Activity, then you use setContentView(R.layout.myMain).
If you want to access the elements in the XMl file, the element must have an android:id tag filled. To access the identified widget use findViewById by passing the numeric id found in the R.id.something.
XML fragment:
<ButtonFor the above to work the root element of the XML must declare the Android namespace.
android:id="@+id/button1"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:text="Press"
/>
The fragment above declares a button with text "Press" for the specified size. To access the button, in this case, use findViewById(R.id.button1).
Eg.
Button btn=(Button) findViewById(R.id.button1);
btn.setOnClickListener(this);
...
...
Android : Basic Classes and Concepts
View: Views are user interface elements, i.e. buttons, lists, etc. In Android user interface is specified declaratively in XML.
Activity: Activities encapsulate user interaction with various View elements, in this case a presentation screen, but view-less Activity is possible. Activities can be started by Intent, one Activity can start another Activity. The main program is an Activity.
ContentProvider: Abstracts data as service so that content can be shared and accessed in REST-based manner using URI locators, rather like http requests. This allows uniform means of accessing data without knowledge of structure and implementation. Android provides Sqlite for database access.
Intent: Intent can be thought of as a message broadcast, service or activity request; an "intention" for some action. Intent allows loose coupling of action requestor and action handler.
Service: background process.
Activity: Activities encapsulate user interaction with various View elements, in this case a presentation screen, but view-less Activity is possible. Activities can be started by Intent, one Activity can start another Activity. The main program is an Activity.
ContentProvider: Abstracts data as service so that content can be shared and accessed in REST-based manner using URI locators, rather like http requests. This allows uniform means of accessing data without knowledge of structure and implementation. Android provides Sqlite for database access.
Intent: Intent can be thought of as a message broadcast, service or activity request; an "intention" for some action. Intent allows loose coupling of action requestor and action handler.
Service: background process.
More .. Android Pads/Tablet
Source: chinitech
Tuesday, April 27, 2010
AndroidPad for 100US
The Chinese in Shenzhen have introduced a very attractive price point (100+US) Android-based tablet. Device specs include:
- CPU: ARM-based CPU 600MHz
- Display: 7” TFT screen, 800 x 480
- Connectivity: Wi-Fi
- Storage: 2GB Flash, expandable by SD slots
- OS: Android 1.6
See http://shanzai.com/index.php/bandit-gadgets/31/951.
Wednesday, April 21, 2010
First Android App using Netbeans

This is a simple text and button app. An Android app uses XML for widgets and layout. This is communicated to Java via an automatically create R class when it is being built.
Running the app the first time in Netbeans will invoke the Android Virtual Device. However, it will take some time for it (avd) to startup, and the netbeans will give up and fail to run the app. You can start the AVD manually first, or just simply re-run the app from Netbeans.
Android for Netbeans: Step by Step
This blog has a screen by screen steps on how to setup for Netbeans. See http://rm1768.blogspot.com/2010/01/your-hello-world-android-program-in.html
Tuesday, April 20, 2010
Alternative Android development tool
Another alternative to development for Android (and iPhone) is the Titanium appcelerator. There is a free and open source version. I have not tried it, they claim native mobile, desktop and tablet apps. It uses a combination of HTML and Javascript but does not need a browser on android , rather, it accesses part of the browser directly, in particular, it accesses the rendering part of the browser (the part that draws the webpage). The browser renderer (used in Chrome, and iPhone) is WebKit. So titanium calls Webkit to display the interface without directly invoking any browser. Since WebKit understands javascript (and its libraries eg JQuery), and HTML, essentially you are programming using both languages.
Android for Netbeans - a short guide
1. Download android sdk
Run SDK Setup.exe to select versions. If you have problems, click on Settings to force it to use http instead of https. If force doesn't work, retype url.
2. Download Netbeans 6.8, and install. 6.5 no longer supported by nbandroid
3. Start Netbeans
3. Go to android sdk/tools directory
Run SDK Setup.exe to select versions. If you have problems, click on Settings to force it to use http instead of https. If force doesn't work, retype url.
2. Download Netbeans 6.8, and install. 6.5 no longer supported by nbandroid
3. Start Netbeans
- Click tools/plugin/settings
- Add Update Centers: nbandroid set URL:http://kenai.com/downloads/nbandroid/updates.xml
- Go to Available Plugins, look for Android and install it.
- Click tools/Java Platform
- Add Platform, select appropriate android directory.
3. Go to android sdk/tools directory
- run: android list targets
- See what targets are available, use in next command
- run: android create avd -n '
name' -t 'id' - where
'name' is a name that you choose and 'id' is the id for avd found in list targets command.
Subscribe to:
Posts (Atom)