Archiv for ‘Android’


published: February 26th, 2010

Polish and Release Early Release Often

CAUTION: Meandering editorial follows…

I’ve been trying for a week to write a post about the recent demo/Android talk I did (along with Mike Koss and Alberto Fonseca) with the Google Technical Users Group in Seattle (huge thanks to Mike Koss for setting this up!) earlier this month.  There’s a comment I made in this talk that has been hounding me ever since.  Since then I’ve wanted to expand on it and make it clear what my position is.  At about 1:08 into the video, I made it sound like getting something out the door is more important than making sure it’s polished.  I strongly believe in the release early and release often mentality.  I have been on far to many projects that have belabored releasing because of some assumed polish that needed to be done.  Whether it was that one more magical feature, or that one more must fix bug, there was always something holding back the release date.  I certainly respect those companies that have the resources and skills to pull the “make sure it’s polished” standard…one of these companies is of course Apple.  They have an awesome sense for design and what customers want, and they have the resources to develop in house and behind closed doors….I don’t…I don’t even have the resources to hire a decent graphic designer or QA person, and if I spent all my time worrying if a certain icon looked pleasing or if that one bug was a show stopper, I’d never, ever get anything out the door.  So as a single developer trying to make the simplest product, I gotta just put it out there and see how it does.  Maybe it’ll suck?  Or, maybe for whatever reason it won’t gain traction.  But wallowing in “does it have enough polish” land doesn’t answer anything, so I choose to get it out the door, and the Android platform allows me to quickly do this.

Maybe I’ll stumble upon that one app that is an overnight success and is so nicely polished that everyone wants to pay me 99 cents for it, but I’m not betting on it…and that statement doesn’t make me feel any less talented then the person who does make that overnight success app.  That person was just luckier to came across (for whatever reason) that one idea that they stuck with and where able to pull off!  And I hugely congratulate them on their success!

Hope you enjoy the little talk we had at Startpad….here’s the link if the embed doesn’t work

published: February 25th, 2010

MediaDroid YouTube demo video

Well here’s my very first YouTube video…it’s a demo of MediaDroid. Certainly not perfect, but I think it gets the job done and I’m stick’n with it!

Here’s the link in case the embed doesn’t work

published: February 5th, 2010

Overlay a bitmap on another

As I’ve been alluding to in my Twitter feed, I’m on the cusp of deploying a new version of MediaDroid, huge re-write to image gallery, but hopefully I’ll get a post about that out later.  Anyway, the previous way I was marking the images to be included in the albums was to have a combo view with a check box and a thumbnail of the image.  Although this works, it takes up a lot of screen real estate and isn’t terribly efficient.  The next version of the image gallery I wrote extended the Android ImageView class and although this solution isn’t much more efficient (the solution for that is in my newest version), it certainly increases the number of images viewed at a time.

(more…)

published: November 3rd, 2009

Is GPS on? If not prompt user to turn it on.

Here’s a quick code snippet to determine if the GPS is on, and if it isn’t go to the Setting screen allowing the user to turn it on.  Android does not allow a 3rd party app to automatically turn the GPS on/off as of 1.5, a “feature” discussed extensively on the Android Developers Forum.

(more…)

published: November 2nd, 2009

Searching for phone numbers with Android

I’ve been playing around with searching for contacts on the Android platform and thought I’d pass along a couple things I’ve learned.

One thing I’ve found out is that some of the classes from the books I’ve been using as reference have been deprecated.  Apparently, instead of using People.NUMBER, which has been deprecated for future support of multiple accounts, I should use the ContactsContact set of interfaces to get the contacts name and number.  Guess I’ll be upgrading to the Android 2.0 sdk sooner then I thought.  Although according to this forum thread the previous interfaces used to specify contact column, such as People, are still supported and will access contact information from the “primary” account.

Another cool thing I figured out was how to have the phone pad soft keyboard attached to an EditText widget.

device.png

It’s one of those, it was so easy I’m ashamed I didn’t know it, but then again, the SDK is large enough to where it’s hard to know ALL of it.  Anyway, all you need to do is define the “inputType” attribute value for the EditText widget which captures the phone number.

   	<EditText android:id="@+id/phone_nbr"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:inputType="phone"
		android:singleLine="true" />

Now, when the phone_nbr EditText box is entered, the phone pad comes up for data entry instead of the default Android soft keyboard.

There’s still many aspects of the Contacts API I haven’t investigated yet, but hopefully with the new apps I have the opportunity to work on, I’ll have lots of time to learn more about them.

published: October 27th, 2009

Note To Me re-branded as Message Drop

I’ve finally got Message Drop to a point where I feel it deserves a release.  Message Drop is a re-branding of Note To Me with a built in email client and a couple new features.  I’ll be getting screen shots up soon on the Message Drop page along with some more information, but just wanted to put the word.

There’s a trial version available, but if you find it useful I’d greatly appreciate it if you’d help my development effort and purchase the 1.99 version.  By the way, if you purchased Note To Me already, I’d be more then happy to refund your money if you email me an address that I can send the refund to.  I promise not to use your email for spamming!

I would greatly appreciate any comments you may have about Message Drop, Cheers!

published: October 22nd, 2009

AlertDialog for Android

Are you utilizing the full potential of AlertDialog?  I had no idea it was so versatile until I starting playing around with it recently.  I knew you could use it for a yes/no dialog for your mobile application, but I didn’t know it could also be an About dialog.  The API makes it really easy, although it doesn’t seem like the setPositiveButton() method is in the Android documentation.  The code snippet below cuts it down to the bare minimum.  It appears that a null can be passed instead of an empty OnClickListener and the action simply closes the window…which is the desired effect.

AlertDialog.Builder ad = new AlertDialog.Builder( this );
ad.setTitle( "About My Mobile Application" );
ad.setMessage( "This text explains My Mobile Application, thanks for " +
                       "purchasing it from the Android Market!" );
ad.setPositiveButton( "OK", null );
ad.show();

I’ve recently cleaned up a bunch of my code with this simple Dialog. And next I may have to look into the FrameLayout feature mentioned in the Android documentation.

published: October 21st, 2009

Android Freelancer looking for work

With the successful completion of my latest contracting gig, I find myself with the opportunity to investigate freelance work.  I’ve decided to take a couple of weeks to see if I can move into freelance development for the Android framework instead of looking for a full time position.  I have no idea if this will work and in the end I may have to start pushing my resume again, but I’m willing to try.  Don’t get me wrong, if the right opportunity for a full time position cames along, I’m certainly interested.

So, if you or someone you know needs a Android developer, I’d love to hear from you.  Email me at michael@mgmblog.com and I can send you my resume and let you know the initial rates I’m looking for.

Also, if you are currently freelancing (for either the Android or iPhone market) I’d be grateful to hear what has worked for you when it comes to looking for gigs or working with your clients.

published: October 17th, 2009

Some Mobile Links You May Have Missed

Here’s some links I still have laying around in my RSS reader I still need to get to, hopefully you may find some of them useful.

Development

5-Minute CSS Mobile Makeover from Perishable Press

I’m hoping there is some general WebKit info in Building iPhone Apps with HTML, CSS, and JavaScript by Jonathan Stark

General Mobile Information

Haven’t had a chance to read Developing Games for Android from Gamasutra, looks like some good information about the business side of game development on the Android platform.

Justin Pratt does an awesome job breaking down the numbers in his article Earning a Living as an Independent Mobile Software Developer

Core Values: The silicon Behind Android from Engadget

Bonus

OK, not about mobile development specifically, but it’s easy to get discouraged during development…

How to Defeat Burnout and Stay Motivated  from Zen Habits

published: October 11th, 2009

Email via Android Intent code snippet

I’m moving away from using the Android email client in Note To Me, but wanted to share the snippet to launch the client.  And who knows, maybe I’ll add it back in if people want it as an option.

        Button sendBtn = (Button) findViewById(R.id.send_btn_id);
        sendBtn.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v)
            {
            	Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
            	emailIntent.setType("text/html");
            	emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,
                  new String[]{ sendToAddress } );

            	emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject );
            	emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, msg );

            	hideKeyboard();

            	NoteToMe.this.startActivity(emailIntent);
            	NoteToMe.this.finish();
            }
        });