Tag: Programming

Programming Stuff

Android Studio Dark Theme (Darcula)

After seeing those cool demos of Android Studio showing the neat-looking dark theme, the default theme that Android Studio downloads with can be a little disappointing.

If you haven’t seen it, here’s Android Studio set to the Darcula theme.

Android Studio Darcula Theme

To get the Darcula theme, first open the Android Studio Settings dialog

  1. Select File on the Android Studio menu
  2. Then select Settings

Once on the Settings screen just…

  1. Highlight Appearence
  2. Click on the Theme dropdown and select Darcula
  3. Click OK

Setting Darcula Theme

You’ll be prompted to restart Android Studio. Allow the restart and there you have it. The great look of Android Studio in Darcula.

Adapted from Jim’s Pluralsight course Android for .NET Developers: Getting Started

AndroidDotNetSeries_GettingStarted_Logo

Programming Stuff

Android for .NET Developer Series: Getting Started

There’s no question that smartphones and tablets have become the computers of choice for most users. Android has been the leading smartphone for some time and now Android leads in tablets as well.

According to Google, nearly 900 million Android devices have been activated. This presents an incredible opportunity for both individual developers and organizations to create software with a reach and impact beyond anything previously possible.

Android development is, of course, very different from the web-based and/or desktop app development most of us have been doing for years. But this difference doesn’t mean we can’t take part in such a great opportunity.

People will often point to Android’s use of Java rather than .NET being the biggest challenge in becoming an Android developer. I disagree. If that were the case, environments like Mono that enable the use of C# and .NET libraries on Android would enable us all to immediately become Android developers. But in my experience, developers with a .NET background who use Mono don’t become effective Android developers any faster than those who take the plunge and use Java. Why is that?

The challenge in creating Android apps is not the programming language, class libraries, or runtime. The challenge in creating Android apps is that it’s an entirely different way of thinking and an entirely different approach to application development.

To be successful on such a different platform, developers need to adopt and ultimately embrace the way-of-thinking of the Android platform.

The new series from Pluralsight, Android for .NET Developers, strives to do exactly that. We focus on guiding developers to fully embrace the tools, language, libraries and, most importantly, mindset of Android development by building on your skills as a .NET developer. Although this series assumes a .NET background, the series is appropriate for anyone with existing programming experience who wants to start working with Android.

In the first course in the series, Android for .NET Developers: Getting Started, we walk through the process of setting up your environment, using the Android development tools, and deploying apps to both real devices and emulators. We talk briefly about the long-standing development environment, Eclipse, but focus throughout the series on the new development environment, Android Studio, announced by Google just a few days ago.

The first course in the series is now available with a new course from the series being released every few weeks. The series is made up of the following courses.

Android for .NET Developers: Getting Started

Android for .NET Developers: Building an Android App

Android for .NET Developers: Android data management

Android for .NET Developers: Adopting the Android mindset

Android for .NET Developers: Embracing the Android platform

I hope you’ll join me in this experience of leveraging your existing skills to empower you to take part in the opportunity offered by the success of Android. At the end of this series, I’m confident that you will have adopted the Android mindset and will be embracing the Android platform.

Android for ,NET Developer Series: Getting Started

Programming Stuff

Android Meetup May 2013 – Android Camera Integration

Thank you to everyone who attended the Central Florida Android Developers Group last night. Special thanks to Echo for hosting the event.

I had the opportunity to talk about how to easily integrate photo capture capability into one’s app by leveraging the built-in Android camera app and Intents.

Last night’s presentation was an excerpt from the first module of my Android Photo and Video Programming course.

You can download the code from last nights discussion. The download includes the Photo capabilities we discussed and also includes Video capability, which we didn’t have time to discuss. Please feel free to post any questions you might have.

For more information on this and other Android-related topics, checkout Jim’s Android courses at Pluralsight.

PSAndroid_216x155

Programming Stuff

Can’t find Developer Options on Android 4.2

Ok so this has to be among the silliest UI “innovations” I’ve encountered.

After updating my phone, Samsung Galaxy Nexus, to Android 4.2.2, I could no longer find the Developer Options menu. And here’s why … Google seems to have decided to no longer make that menu visible by default.

We can argue over why they made such a change ( my guess is to make the developer options less accessible to non-devs ) … but whatever the reason, it’s a pain.

So how to get it back ? (you’re not gonna believe this) …

  1. Open your settings menu
  2. Scroll down and select “About phone”
  3. Locate the entry labeled “Build number’ (probably near the bottom)
  4. Tap repeatedly (I believe its 7 times) on the “Build number” entry  (I’m not making this up)
  5. As you do you’ll eventually see a message something like “You are now X steps from being a developer” … continue to tap until the “Developer Options” menu become visible.

And now you have your “Developer Options” menu back … it’ll appear on the Settings menu (screen just prior to reaching the screen with the “Build number” value)

Kind’a crazy … ain’t it

Checkout other Android Developer related information from Jim in his courses from Pluralsight.

PSAndroid_216x155

Programming Stuff

Android & iOS Native App Development with HTML5, JavaScript, and CSS

I spend most of my time creating Android apps using Java and the Android SDK. That’s a development style that fits my experience and interests.

There are lots of developers out there who have great skills in web-based technologies like HTML, JavaScript and CSS; many of those developers are looking to start creating mobile apps. The good news is that there’s a now a solution for just those developers.

Fellow Pluralsight author, Shawn Wildermuth just created a course for just those folks: Practical PhoneGap. It doesn’t completely replace traditional mobile app development but does work well in a number of situations. Here’s the description from the Pluralsight website…

App development is crucial to succeeding in most jobs these days. Even if you aren’t building apps directly, you’ll likely be involved in the app development process. In this course, we’ll show you how you can use existing HTML, JavaScript and CSS skills and assets to build mobile apps using their simple model. We’ll also show you when you wouldn’t want to use PhoneGap and where it fits into most developers bag of tricks

I encourage you to check out Practical PhoneGap.

Programming Stuff

Android Photo & Video Programming

I am super-psyched about my latest Pluralsight course now being live and available: Android Photo and Video Programming

I’m so excited about this course going live and to make it even better, the Pluralsight blog even quotes me on my excitement about this course.

With Smartphones, access to the camera is so pervasive. Don’t miss out on providing the richest possible user experience by not including camera behavior in your apps.

More posts about Android camera behavior and this latest course to come

Programming Stuff

Android Photo & Video Programming Course Almost Ready

For the past month I’ve been working on my next Pluralsight course: Android Photo & Video Programming. … I just finished recording the video for the last module.

Still have some more work to do editing the videos, preparing the course assessments, etc. but the hard work is done.

I have to say, this has been one of the most fun courses to write I’ve done. There’s something cool about taking control of the camera, rendering the live preview directly within one’s app View hierarchy and snapping a picture or recording a video.

Something I had thought was going to be a minor point that I ultimately found really interesting was controlling zoom.

The basic zoom-in/zoom-out stuff was just the beginning. Controlling the out-of-band smooth zoom and managing the callbacks that occur during the zoom process were really fun.

The course also ended having much more information than I had originally expected. I had originally spec’d the course out for 5 modules but ended up with 7 jam-packed modules – here they are…

  • Getting Started
  • Directly Accessing the Camera
  • Viewing the Camera Preview Display
  • Taking a Picture
  • Camera Control
  • Recording Video
  • Media Store

If all goes as expected, I’ll have everything turned in to Pluralsight early next week and the course will be live a short time later. I’ll be sure to let everyone know when it goes live.

Here’s a list of Jim’s other Pluralsight Courses…

PSAndroid_216x155

Programming Stuff

Avoiding Android App Crashes Caused by Device Orientation Changes

A challenge commonly faced when first developing in Android is the potentially frequent destruction and reconstruction of an Activity. The most common time this occurs is when the user rotates the device between horizontal and portrait orientations.

Many an app that runs fine during testing suddenly crashes when put into a user’s hands simply because the user tilted the device one way or another.

This crashing usually occurs because device orientation changes cause the Android framework to tear down the displayed Activity along within any contained Views, and then to fully reconstruct the Activity/View hierarchy. Any references to the Activity or to the Views within the Activity suddenly become invalid. Similarly any references within the Activity or Views that were set as a result of a user action or similar are now lost.

There are a number of ways to deal with this issue but one of the easiest is to take advantage of Fragments.

NOTE: You can use the configChanges attribute on your Activity’s manifest entry to prevent the teardown/reconstruction process caused by orientation changes but that has its own headaches.

Fragments won’t automatically resolve this issue because, by default, when the Activity is torn-down in response to an orientation change the Fragment contained within the Activity is also torn down along with any contained Views.

The solution lies in an underused method: Fragment.setRetainInstance.

Calling setRetainInstance with a value of true causes Android to preserve the Fragment across the teardown/reconstruction cycle of an Activity. Along with the Fragment, the Views or other object references contained within the Fragment or Views remain.

With setRetainInstance(true) called on a Fragment instance … when an orientation change occurs, Android…

  1. Holds a reference to the Fragment instance
  2. Tears down the old Activity instance
  3. Creates a new Activity instance
  4. Attaches the preserved Fragment instance to the new Activity instance

With that, the Fragment, contained Views and object references, remain intact.

Something to keep in mind though … because your Fragment instance will be moved between different Activity instances, you should avoid caching a reference to the Activity. Instead call Fragment.getActivity anytime you need to reference the Activity.

Jim talks more about Fragments in his Pluralsight course…

AndroidFragments_400x100

Programming Stuff

Android 4.x jumps from 45% of Android devices to nearly 55% overnight

That’s right if you look at the Android Dashboard Charts for the current period (period ending April 2, 2013 as of this writing) you’ll find that the combination of 4.0, 4.1, & 4.2 devices is 54.3%.

AndroidChart_2013-04-02

If you looked at the chart for the previous period you find that same family of devices had only 45% of all Android devices. How does one account for such a huge jump?

Well – one way is to change the way one counts. 🙂

You’ll find the following note on the Android Dashboard Page:

Note: Beginning in April, 2013, these charts are now built using data collected from each device when the user visits the Google Play Store. Previously, the data was collected when the device simply checked-in to Google servers. We believe the new data more accurately reflects those users who are most engaged in the Android and Google Play ecosystem.

So basically .. they now count devices that actually attach to Google Play rather than counting every single device that just happens to wake up periodically and send a heartbeat to the Google servers.

So the cynic might say that Google is skewing things for their own advantage (I’m not saying they’re unhappy with this new way of counting) but I don’t really think that’s the case here.

Honestly, most of us looking at those charts are interested in seeing what versions of the platform we should target with our apps. Those apps are distributed via Google Play … so, I agree that this is the “right way” to count.

For information on creating apps for Android 4.x, checkout Jim’s Pluralsight Course

Android40WhatsNew_350x100

 

Programming Stuff

Android ADB reports device is “offline”

Device upgrades are so often a good-news-bad-news situation … and so was the case of my device’s upgrade to Android 4.2.2 over the weekend.

I love this latest version of Android – in addition to just generally being a good update, it also has a sweet new camera and, some cool new clock/stopwatch/timer features.

The new camera features are especially cool for me as I’m right in the midst of writing a new Android developer course Android Photo and Video Programming for Pluralsight.

But like so many exciting weekend events, Monday often comes with regret … and so it was today.

I fire up my favorite Android IDE (currently JetBrains IntelliJ IDEA), connect my device, then launch the debugger … and it’s then that I see “waiting for device” … I keep waiting, waiting, waiting.

To check things out, I do an ‘adb kill-server’ followed by an ‘adb devices’ and I see…

List of devices attached
99999C99999D999         offline

That’s something I don’t see too often so I do the standard stuff … reboot my desktop computer, reboot the device. Always the same result … the device reports being offline

The Answer….

I resolved the issue by upgrading to the latest version of the Android SDK Platform-tools – for me, that’s version 16.0.2:

AndroidSDKManager-PlatformTools16.0.2

Just something to remember … you may have to run the SDK Manager more than once to get all of the latest updates.

In my case, I had to…

  • Run the SDK Manager
  • Execute ‘Install packages…’
  • Exit the SDK Manager
  • Restart the SDK Manager
  • Execute ‘Install packages…’

Only then did I get the necessary updates to resolve the offline issue so that I now see the much more familiar (and welcome) device message in ADB.

List of devices attached
99999C99999D999         device