Rename files to lowercase

As you probably now, your application’s images that are in the drawable directory must be named in lowercase.

Unfortunately this is not true for the iPhone applications. A big portion of my job is to develop Android apps using resources from existing iPhone apps. In order to be quick and efficient, I wrote this bash script that renames all your files in your current directory to lowercase, creates a new folder named 2x (which contains the large images) and removes the @2x extension.

for i in `find .`; do mv -v $i `echo $i | tr '[A-Z]' '[a-z]'`; done
mkdir 2x
mv *2x.png 2x/
cd 2x/
for i in `find .`; do mv -v $i `echo $i | tr -d '@2x'`; done

Please have a backup before using it!


MK802, just great!

Watching Google IO live streaming from that little android thing, priceless!

Android MK802 just great.

I really love that it is not just another cheap sloppy android machine, the developers actually did great job integrating Android 4.0 into it.


Android Development Course @ coLab!

Hello there!
In collaboration with coLab, we organized a Android Development Course!

You can check for details here.

Get your ticket now, there are some discounted “Early Bird“ tickets available!

coLab in collaboration with, 
and AllinOneTraining.grpresents “Android Development 101″ a four week intensive training course offering the skills necessary for professional development of Android applications.

Android  is the leading platform for smartphone and tablet products around the world.  This  course introduces you to development for the Android OS, allowing you to create applications that can run on millions on mobile devices.

This course begins on June 4 and will comprise 2 x 3hr sessions per week for 4 weeks. Participants will have access to online material and video content as well as written notes and practical exercises.

Seats are limited so get your tickets now.

There are discounted “Early Bird“ tickets available.

All attendees get a free copy of “Programming Android, Java Programming for the New Generation of Mobile Devices, By Zigurd Mednieks, Laird Dornin, G. Blake Meike, Masumi Nakamura as well as a disount coupon for all O’Reilly books.

Course Objectives

Upon completion of this course based on a real development sample project, students will be able to:

  • Professionally use software development process in Android applications.
  • Professionally use APIs in Android SDK to develop applications.
  • Understanding about Mobile programming on other platforms (Windows Mobile, iPhone, Blackberry).
  • Understand about concept of a Design Pattern and how to apply it in Android application
  • Achieve essential soft skills for workplace: communication skill, presentation skill, work etiquette.


  • Already have programming experience in any language or Java development experience is preferable.

Training methodolody

  • Each training session is a combination of lectures and hands-on lab exercises to provide the optimum learning experience.
  • A development sample project is assigned from the start of training course.
  • Trainees are provided necessary soft skill courses for professional working .
  • Actively trainees are required to investigate, refer to the references, documents before class.
Course outline

1. Basic software engineering

  • Requirement
  • Design using UML: High Level Design, Detail Design, Test Plan & Test Cases.
  • Implementation: Prepare for Implementation, Coding & Unit Test, Integrate & Integration Test.
  • Testing: Testing Process, Testing Phases, Blackbox Testing Techniques Overview.

2. Android Application Development

  • Android Overview ( platform architecture, versions, installation guide, …) and create application, application storage.
  • Android activity (Activity, Passing Data Between Views).
  • Android UI (Layout, Control, Intent, Event Listeners, Menu, List View, List Adapter).
  • Call Web Service & data operation with SQLite database.
  • Using Thread in Android, Data Storage.
  • Map and Location Based Services, Market Store.
  • Design Pattern.
  • Overview about Mobile programming on other platforms (Windows Mobile, iPhone, Blackberry).

3. Soft skills

  • Communication skill, Presentation skill, Interview skill, Work etiquette.

4. Project assignment

  • Group discussion & Project report.

konstantinos polychronisAbout the TrainerKonstantinos Polychronis
[LinkedIn Profile]
Founder & Chief Software Engineer at
Head of Mobile at

Konstantinos is a graduate of the Network Systems and Data Communications of TEI of Messolonghi, department of Nafpaktos. With a long history in development, Konstantinos started programming in QBasic, Visual Basic, mIRC Scripting and then occupied himself with Windows Mobile development on his first PDA. His first professional contact with
mobile device programming was at Intracom, while his first contact with Android was in 2007 for his diploma project. Konstantinos founded the Greek Android Community ( and built his first Android applications while was working at ByteMobile as Android software engineer.

Konstantinos also worked at BeeTech and ADDs and by the end of 2010, had his own mobile software development company which he still runs now. Since the summer of 2011 he as also joined BugSense, a real time bug tracking service startup.

Konstantinos has presented at conferences and meetings such as DroidCon 2011(London), the 12th Infocom Conference,
Athens Digital Week ’09 & ’10, Fosscomm ’09 & ’10 and has been applications judge at HTC’s Greek Android Developers challenge and has appeared in various media and websites with regard to his expertise.


Copy the content of an input stream to an output stream

How to copy the content of an input stream to an output stream

* Copy the content of the input stream into the output stream, using a temporary
* byte array buffer whose size is defined by {@link #IO_BUFFER_SIZE}.
* @param in The input stream to copy from.
* @param out The output stream to copy to.
* @throws IOException If any error occurs during the copy.
private static final int IO_BUFFER_SIZE = 4 * 1024;

private static void copy(InputStream in, OutputStream out) throws IOException {
   byte[] b = new byte[IO_BUFFER_SIZE];
   int read;
   while ((read = != -1) {
      out.write(b, 0, read);