Categories
Google Glass Apps Technological

First Android App – Part 5

My First Android App

 

Android Studio New Main Layout First Android App Tutorial by Marcio Valenzuela Santiapps.com
Android Studio New Main Layout First Android App Tutorial

Android is based on Java much like iOS is based on ObjectiveC.  If you are coming from an iOS background, itll be a bit jarring at first.  Even though ObjC “comes from” C, C formats are a bit different.  So I thought Id start with that first.

ObjC:

[myObject methodForDoingThis:someParameter];

is a method call which refers to this declared method:

-(void)methodForDoingThis: (id)someParameter{

//1. Take the passed in parameter

//2. Do something to with that parameter value

//3. Call some other method…

//4. Or if this were a method that returned an object instead of void

//4. Return a new object value

}

C:

myObject.methodForDoingThis(someParameter);

is a method call which refers to this declared method:

public methodForDoingThis void (id someParameter) {

//1.-4. Same as above

}

So this might throw you off a bit.  Add to that the fact that their IDE, be it Eclipse or AndroidStudio (or others), or rather their project files are a little less UI-friendly.  What I mean is that where in Xcode you have editable code files in Objective C and either a storyboard or NIBs to deal with UI stuff, in Android IDEs you have an AndroidManifest.xml, various layout.xml files and AndroidActivity.java files as well as a few other ones.

Ok, let’s get started with this Hello World App.

First Android App

First let’s create a New Project in Android Studio:

Android Studio New Project First Android App Tutorial by Marcio Valenzuela Santiapps.com
First Android App Tutorial

Here you can give it an Application Name in natural language, this means with spaces or what not.  This is the human readable name.  Then give it a Module Name which is recommended to not have spaces or strange characters other than alphanumerical characters.  Finally create a package name which is in reverse domain notation (com.something.app).  That something can you be company name or just your name.

In the above example we are actually creating an Android Glass project for Google Glass.  The idea is the same, but for this Android App, select API 15 as all three, Minimum, Target && Compile.  Leave the Theme as is and click on Next.

You will be asked about launch icons and just click Next.

Android Studio New Project Launcher Icons First Android App Tutorial by Marcio Valenzuela Santiapps.com
Android Studio New Project Launcher Icons First Android App Tutorial

You will get another screen about Activities, just leave Blank Activity.

Android Studio New Project Blank Activiy First Android App Tutorial by Marcio Valenzuela Santiapps.com
Android Studio New Project Blank Activiy First Android App Tutorial

Finally you might get this window:

Android Studio New Project Fragment Layout First Android App Tutorial by Marcio Valenzuela Santiapps.com
Android Studio New Project Fragment Layout First Android App Tutorial

Here make sure to make that one change, just to make things easier.  We must also remove the MainActivity.java fragment method later.

Once this is done, remember to go ahead to the MainActivity.java class and open it.  We are going to remove one method in here:

public static class PlaceholderFragment extends Fragment {

public PlaceholderFragment() {

}

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

View rootView = inflater.inflate(R.layout.fragment_main, container, false);

return rootView;

}

}

Finally you should see a screen much like this:

Android Studio New Main Layout First Android App Tutorial by Marcio Valenzuela Santiapps.com
Android Studio New Main Layout First Android App Tutorial

Let’s review these 10 top pointers:

1. Your Java Classes or Android Activities

2. Layout files in xml format

3. Value files for storing global settings of sorts

4. AndroidManifest is a sort of Central Registry

5. Top level build.gradle file

6. Low level build.gradle file

7. Tab bar for displayed files

8. Sync Gradle file button

9. Run button

10.Green = A-Ok button!

You can run the app now, it won’t do much, but its an app J.

  1. MainActivity is selected and displayed in the editor window.  This contains your default, boilerplate/template created MainActivity Class required for any app.
  1. The layout folder contains your activity_main.xml file.  If you look inside that file you will see an xml file with some parameters and a TextView element.  You will also see a graphical representation of it off to the far right.
  1. The values folder contains more xml files.  Most importantly, the strings.xml which contains global references to string values.  These are used throughout the app to assign string values where needed.
  1. The AndroidManifest.xml file contains some general settings elements for your app such as the package name, launcher icon, activity tags which contain your declared activities and in this case, if the activity has an intent, which is like an action, it must also be specified here.  In our case we will add a Voice Trigger intent filter if there isn’t one already.
  1. Build.gradle files are not to be messed around with much.  This is a new M.O. used by Android Studio to organize files in a workspace.  You must keep in mind here that there is a Top level and Low level build.gradle file so make sure you know which one you are being told to put things in.
  1. The tabs display whatever files you have double clicked on the File Window on the left.
  1. The Sync Gradle button is that green-blue circle with a solid circle inside and a green arrow pointing down.  Go Figure!  Its basically a sort of I’ve-made-some-changes-to-the-AndroidManifest-and/or-other-project-wide-parameters-which-require-project-workspace-reindexing (phew) button!
  1. The Run button is of course the one used to build and launch the app in the emulator or device.
  1. The Green=AOk button tells you all file and project inconsistencies have been resolved and that the project will build and run.  Sometimes you have resolved coding issues and this box is still red.  Just tap on the Sync Gradle button mentioned before and Just Like That, Its Magic…AOk!

Layout Files

These determine where and how objects will be laid out onscreen.  Check out activity_main.xml and make sure it has this:

<?xml version=”1.0″ encoding=”utf-8″?>

<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”

xmlns:tools=”http://schemas.android.com/tools”

android:layout_width=”match_parent”

android:layout_height=”match_parent”

android:orientation=”horizontal” >

</LinearLayout>

This simply tells us that we are using a Linear type layout.  And that the width and height should be stretched out to match whatever the parent is.

Now let’s actually add something onscreen by adding this code at the end of the last line but just before the </LinearLayout> closing tag:

<EditText android:id=”@+id/edit_message”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”

android:hint=”@string/edit_message” />

Ok, now we added an editable text field with id = edit_message which wraps its content and has a hint of placeholder text = whatever is in the edit_message string.

So what IS in the edit_message string?  Well, open your values folder and double click to open strings.xml.  You will see something like this:

<?xml version=”1.0″ encoding=”utf-8″?>

<resources>

<string name=”app_name”>My First App</string>

<string name=”edit_message”>Enter a message</string>

<string name=”button_send”>Send</string>

<string name=”action_settings”>Settings</string>

<string name=”title_activity_main”>MainActivity</string>

</resources>

As you can see here we have a string value for app_name, edit_message, button_send & action_settings.  You probably don’t have button_send but you will add it soon if you don’t.  This is a globally accessible xml values file.  Whenever some object looks for a string with an identifier, such as @string/xxx, it will fetch whatever is in that strings.xml file at that identifier location.

Nothing Magical here, just an app_name global identifier, a placeholder hint for the editable text field we added, one for a button and another for an action_settings action tool bar button.

So let’s add the button by going back to activity_main.xml and adding this code after the EditText block but again, before the closing </LinearLayout> tag:

<Button

        android:layout_width=”wrap_content”

        android:layout_height=”wrap_content”

        android:text=”@string/button_send” />

This should be pretty easy to understand.  This time we are adding a button with its text property set to the string value for button_send.  If you don’t have that button_send string in your strings.xml then add it in now.

Compile and run and you should see this:

Android Studio New Main Layout First Android App Tutorial by Marcio Valenzuela Santiapps.com
Android Studio New Main Layout First Android App Tutorial

As you can see they are ONLY as large as they have to be.  Both the EditText and the Button objects are only as large as their content is.

The only problem is that the text in the EditText field is, well, editable, thus it could grow longer or shrink.  We must make a small adjustment to account for this by modifying some properties of the EditText object:

<EditText

android:layout_weight=”1″

android:layout_width=”0dp”

… />

This means only add or edit the fields shown here (the rest, …, stays as is).  The layout_weight property states how much space the EditText field should take up relative to those objects around it.  So basically if EditText is 1 and Button is 1, the total is 2, out of which each will take half.

The final layout should look like this:

<?xml version=”1.0″ encoding=”utf-8″?>

<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”

xmlns:tools=”http://schemas.android.com/tools”

android:layout_width=”match_parent”

android:layout_height=”match_parent”

android:orientation=”horizontal”>

<EditText android:id=”@+id/edit_message”

android:layout_weight=”1″

android:layout_width=”0dp”

android:layout_height=”wrap_content”

android:hint=”@string/edit_message” />

<Button

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”

android:text=”@string/button_send” />

</LinearLayout>

Build & Run and see your app in all its splendor! Remember to check out Part 2 for a little user interaction before we move onto building Google Glass apps!

Categories
Google Glass Apps

Google Glass – Part 2 – Pros & Cons

Google Glass Pros & Cons by Marcio Valenzuela Santiapps.com
Google Glass Pros & Cons

In the first review I covered basically what Glass is and what its not, what it can & can’t do.

Now on to usability!

PROS (IMHO)

  1. The biggest advantage in my opinion, is being able to interact with information without having to look down like a zombie.  Or more importantly, not just the fact that we all look like zombies throughout the day, constantly checking our phones.  Because of course some will argue we are “Glassholes” or look like morons wearing these glasses.  But if you’re a true techie, you don’t care how something looks, you care about what it can do.  Its very comfortable to be able to get my information instantly, without getting distracted from what Im doing.  This goes for driving, talking, playing soccer even typing at a computer.  Its another screen for you to get your 21st century informational fix and more importantly its one you don’t have to grab and point at your face.  This makes Glass, in my opinion, the best wearable device that comes close to Star Trek type gadgets.
  2. Even though Glass apps (both Glassware & native) are currently very limited, as developers we have access to THE Glass team.  This means we are able to really sway which way this thing is going.  There have been quite a few iterations and a lot of functionality has been added and improved on.  Some apps being worked on are:
    1. Aside from single camera shots and continuous video, there is an app for adding long-time picture taking to compromise between the heavy long videos and a possibly mis-taken single photo.
    2. Barcode scanners
    3. Medical reference material
    4. There is a ShopGlass which lets you create shopping lists and take with you at the supermarket
  3. The handsfree & voice concept is ideal.  There are many times where I have found myself incapable of doing something because I needed to hold my phone.  So you come up with ideas of holding it in your mouth or putting it on top of something you are carrying.  Freeing up your hands for other tasks is great!

Now on to the CONS:

  1. Again, IMHO, the biggest #FAIL is the small screen.  Its big enough, sure, but it limits what you can do or rather, how well you can do something.  The voice-command menu is the starting point.  OTB Glass comes with about 4 or 5 commands.  You tilt your head up & down to scroll through that menu.  After a few more apps are installed which have voice-command triggers, that starting point list gets kinda long.  This is where voice commands will have to become a much more important channel for communicating with Glass.  Typically we use about 20 apps on our mobile devices every day.  Within those apps we perform about 3 common tasks every day.  That alone is about 60 commands.  That would be a long list.  A visually scrollable list of commands is not going to cut it.  Extending the screen to the size of glass lenses is not going to work either.  The whole idea of Glass is that its THERE but its not in the way.  Otherwise it becomes a hazard.
  2. Battery as with any mobile device is an issue.  It lasts about a day on a  single charge.  But then again it depends on how much you use it.  Not only that but it comes with its own charger.  So now I have to carry around an iPad, iPhone, Mac & Glass plus at least 3 different chargers.  The typical techie carries around at least an phone and a tablet.  Adding a 3rd device is an issue, unless it fully replaces one of those.
  3. Culture.  This is an odd one but important to mention.  Glass is meant to be worn, not hung around your neck like sunglasses.  This means they are to be worn at all times (well except in the shower perhaps & while sleeping {http://www.huffingtonpost.com/2014/01/21/google-glass-sex_n_4637741.html}).  In some places there is this culture issue about respect.  I don’t know about you guys, but when I go into an office or even meet with someone outside, I take off my sunglasses at least while I say hello.  I certainly don’t eat with them at the dinner table.  So what would be considered cool and intriguing in a US-tech-rich scenario, would be plain rude in certain places.  So there may be some generational gap there until us old geezers die off and newer kids grow up without those traditional ways of thinking.

So what do I use it for?  Whats my typical day?

I wake up and unplug them.  Oh because while they charge and if they have internet connectivity, they upload your images and videos to your private google account.  I put them on as part of my getting dressed ritual.  They’re with me while I drive and I can check stocks, weather and scores while I drive.  I get notifications while its sleeping on my face and I can just gesture to see what email just came in.  I usually don’t have it read aloud but I could if I ask it to.  So in that respect, its cool to know that my informational fix is quenched by simply knowing the sender and subject of a recently received email.

I keep them on while in the office but take them off if someone walks into the office.  I keep them on for errands but take them off for lunch.  Then put them back on for the rest of the afternoon.  Usually have them for my kid’s soccer practice for snapping pics.  I take them to solar installations with me to get ideas for the app Im working on.  I usually program with it as well when I develop iOS apps to get ideas for a programming app.  Then when I get home I take them off just because I want to rest.  Unless I decide to try a cooking recipe.

So as you can see, Im not yet a fully fledged Glass Explorer.  But I think its just a matter of time.

Categories
Google Glass Apps Technological

Google Glass & Android Series for Developers & Users

Google Glass & Android Series by Marcio Valenzuela Santiapps.com
Google Glass & Android Series

So I’ve gotten a little carried away with the Glass-Android thing.  My posts are as disorganized as my thoughts, so I thought I’d organize my posts a bit.  Here is the set of posts for Android & Glass Development as of Feb 15th, 2014:

  1. Google Glass Review – Part 1 – 什么 (shen me = what = what Glass is & isn’t)
  2. Google Glass Review – Part 2 – Pros & Cons
  3. Develop apps for Google Glass – Part 3 – Setting up!
  4. Glass Development Mirror API – Part 4 – Where to start after setting up
  5. First Android App – Part 5
  6. First Android App – Part 6
  7. First Google Glass App – Part 7 – Bridge to Glass App GDK Development
  8. First Google Glass App – Part 8 – Hello Glass!

The first 2 parts are more of a Curious George couple of articles telling people what to expect from Glass.  Everyone asks me what they are.  I end up telling people “its just a pair of sunglasses” or “its a computer” and of course they are speechless and I walk away quickly before a long discussion ensues.

The next 2 parts are for developing web service apps for Glass.  Glass can work with web based apps which run on a server and interact with Glass |OR| Glass can have native apps installed into it which it can run on.

The last 4 parts starting with First Android App and finishing with First Google Glass App, is a set of posts for learning how to create native apps for Glass.