if you're using Android N, or just want early access to new features and bug fixes, a preview of the next IRCCloud update is now available on the Play Store. You can opt-in for beta updates here: https://play.google.com/apps/testing/com.irccloud.android

If you have any feedback about the app, feel free to use the "Send Feedback" option in the menu, join us in #android on irc.irccloud.com, or send us an email at [email protected]

Here's what's new:
• New message and notification layouts
• Android N: Multi-window, Direct Reply, Data Saver, and keyboard shortcut hints
• Direct Share
• Keyboard shortcuts for switching channels and marking channels as read
• Android Wear 2.0 support
• LG dual window mode
• ZNC server time extension support
• Improve 24 hour timestamps
• Open web URLs faster using Chrome Custom Tabs
• Share photos, videos, and documents from other apps via drag and drop
• Quick reply dialog will now remain open after sending messages, display sent messages, and update when new notifications arrive
• Fix an issue with tapping the up navigation arrow in various dialogs
• Fix an issue with push notifications registration
• Fix an issue displaying pastebins on Android 2.x
• Stability improvements, crashes and bug fixes


Experimenting with the attendee table in the Calendar app to show which of your friends…

Experimenting with the attendee table in the Calendar app to show which of your friends are also attending a concert, but I'm running into some issues:

• The Yes/Maybe/No section wont appear when the calendar access level is set to CAL_ACCESS_RESPOND as the docs indicate, I had to set it to CAL_ACCESS_OWNER in order to see it
• The Yes/Maybe/No state wont persist after selecting something and pressing the back button, for an event created by my sync adapter. However, if I manually create a new event in the Calendar app, the state will persist
• Pressing the edit button crashes the Calendar app for an event created by my sync adapter (CAL_ACCESS_RESPOND would avoid this, as the edit button would be gone)
• Attendees require an email address. I'm currently just setting this to the Last.fm username, and adding a matching email address to the contacts sync adapter. The "Last.fm" custom type email address doesn't show up in the People app, so this seems ok for now
• Even though the QuickContact box matched the last.fm username email address (as it shows the icon), tapping the QuickContact box pops up a dialog asking if I'd like to add the user to my address book, instead of displaying the QuickContact card

Anybody else working with the new Calendar APIs yet?

#androiddev #android #ics

Android Garden Monitor


One of the coolest things announced at this year’s Google I/O was the Android Open Accessory Kit, which allows Android devices to interact with accessories over USB. As an attendee, I received the Arduino-based ADK DemoKit board, which I’ve used to build an app to monitor my Aerogarden.


Arduino and Breadboard

The garden monitor project was built with the following components:

  • Arduino-based Open Accessory Kit
  • Breadboard
  • LM34DZ temperature sensor
  • HS1101 humidity sensor
  • 0.5″ force sensing resistor
  • Analog servo

The force sensing resistor is mounted below the Aerogarden’s water tank to measure the weight of the water, and the servo is used to open and close the tank door.


Nexus One running the Garden Monitor app


The Arduino firmware reads the values from the temperature, humidity, and force sensors and sends them to the attached Android device over USB using the Open Accessory protocol. It also accepts commands over USB from the Android app to open and close the door.


The Android app reads the sensor data from the Arduino and broadcasts them over the wifi network using xPL so they can be monitored by MisterHouse, which can alert me via email and text-to-speech when the water level is low. When the water level is below 20%, the app signals the Arduino to open the door as a visual indicator that the tank needs to be refilled. After the tank is filled, the app automatically closes the door again. The app also snaps a photo every hour, which I’ve used to create the time lapse video below.


The source code for the Arduino sketch and the Android app are available on github.

Time Lapse

This video was created by combining the hourly snapshots taken by the Nexus One using ffmpeg and then edited in iMovie ’09.

Writing an Android Sync Provider: Part 2

One of the great new user-facing features of Android 2.0 is the is the new Facebook app, which brings your Facebook contacts and statuses into your Android contacts database:

So, how exactly does my Nexus One know that Chris is excited about the upcoming launch of his new mobile apps? The answer is a Contacts sync provider in the Facebook app. Read on to learn how to create your own!

Writing an Android Sync Provider: Part 1

One of the highlights of the Android 2.0 SDK is that you can write custom sync providers to integrate with the system contacts, calendars, etc. The only problem is that there’s very little documentation on how it all fits together. And worse, if you mess up in certain places, the Android system will crash and reboot! Always up for a challenge, I’ve navigated through the sparse documentation, vague mailing list posts, and the Android source code itself to build a sync provider for our Last.fm app. Want to know how to build your own? Read on!