BFF Photo. Gestures & Rotation demo

September 22, 2009

Use gestures to browse photos, rotate phone to change view, upload existing photos and videos. Try version 1.5.

Search Android Market for BFF Photo.

If you like the app, please rate it in the market.

Feedback, questions, issues, suggestions?
http://www.facebook.com/BFFPhoto

Launching DroidDrop, the Android drop.io client

September 18, 2009

Droid Drop Screenshot Use drop.io to privately share your files & notes in drops.

Use DroidDrop to:

- Create & View Drops
- Add Notes, Links, and Photos
- It’s easy to start with the demo drop
- View & update in the demo and then create your own drops

I submitted DroidDrop to ADC2 (Android Developer’s Challengge 2)  on 8/31.  I expected to add a few more features  before  publishing it to the market.  I was able to add some polish and 1 new feature (uploading photos directly from the gallery.)

I was starting to work on adding even more features when I realized it was a good time to stop and get some  feedback.  So, please try out DroidDrop and let me know what you think. Some of my ideas for new features are at the end of this post.

These 2 tweets were timely in helping me think about the release date.

  1. RT @albertwenger Making Versus Planning … http://tumblr.com/xbk34pkz3
  2. RT @ericries IFTF: don’t pave until you see where people walk; needs to apply to IT and internal tools #workunbound

Feedback and ideas wanted! Error reports, too.
Contact via email or twitter
http://twitter.com/droiddrop

You can see a previous video demo here.
http://talkingandroid.com/2009/09/01/droiddrop-preview-drop-io-on-android/

I would expect to add:

  • video upload
  • audio upload
  • showing drops in reverse chronological order
  • performance improvements

DroidDrop Preview (drop.io on android)

September 1, 2009

THIS IS NOW LIVE. Search the market for “droiddrop”

Demo of app in development.
Use drop.io to access & share files, photos, & notes in “drops”

I plan to release a beta version to the market soon.  Let me know what you would like in that release.

Follow updates at http://twitter.com/DroidDrop

Use DroidDrop to:
* Create Drops
* View Drops
* Add Notes, Links, and Photos to Drops
* Get files from Drops

I am also working on a complete rewrite of BFF Photo.

BFF Photo: Full Demo on Android G1

August 21, 2009

BFF Photo is an application to:

  • View your Facebook Photos on your Phone
  • View your friend’s photos
  • Take pictures and videos using the app and upload to Facebook

Find it by searching for “bff” on the Android Market.

Login to Facebook from the app to authorize on Facebook.  Requires Internet connection.

On the technical side, I mention that I am using Intents for both camera and video capture.  More on that in a future post.

Please contact with issues or technical questions.

BFF Photo for Facebook on Android Market

August 19, 2009

Photos are one of the most used features on Facebook.

BFF Photo is an application to:

  • View your Facebook Photos on your Phone
  • View your friend’s photos
  • Take pictures and videos using the app and upload to Facebook

Find it by searching for “bff” on the Android Market.

Like any other Facebook Application,  BFF Photo needs to be authorized.  Login to Facebook from the app to do that.

To upload videos and photos,  set the Facebook Publish permission.  That is done in the app after  Login and from the Android Menu.  You can  set a permission to stay connected to Facebook. That means you will not need to login again.

To Login and retrieve or upload photos, you will need an Internet connection.

Next:  A video showing taking a picture and shooting a video.  Stay tuned.

Developing Facebook Apps for Android

August 19, 2009

“BFF Photo for Facebook”  is now on the Android Market.

It is an Android app for viewing the photos you and your friends have posted to Facebook.  You can also upload new photos and videos.

Please give it a try. Find it in the market by searching “bff”.  If you like it, rate it and comment on the Android market. Post technical questions here.

To interact with Facebook, I am using their new “Simplified Desktop Authorization Flow.

For API calls, I am using a Java Facebook Client library I developed for talking to the Facebook REST server. I’ll be writing more about it. I intend to clean up the library and ultimately make it open source.

I am using Android Intents to take a photo and capture a video.

Video Demo Coming Soon!

Android App for Facebook Photos and Videos

August 4, 2009
  • Browse Facebook Albums
  • View Photos
  • Upload new Photos and Videos.

Full app will be available soon.

On technical side, this uses a small Java library for Facebook calls including multiPart mime for uploading photos and videos.

Android App Live: Query Browser for SimpleDB

July 8, 2009

The name of the app is “Query Browser for SimpleDB.”   Find it by searching the Android Marketplace for SimpleDB

  • Access Amazon’s SimpleDB web service
  • Build queries for SimpleDB
  • Create queries verbally using Android Speech technology
  • Save queries

To access your SimpleDB database you will need to enter your AWS key and Secret.  To clear or change the info choose “Edit Preferences” from the menu.

Query Browser for SimpleDB shows how useful a database in the cloud can be.  Please comment or contact me for info on developing SimpleDB Android projects.

Android SimpleDB App – Voice Demo

June 29, 2009

Adding Voice Query Capability to Android SimpleDB Query App.

Amazon SimpleDB: Ideal for Social and Mobile Applications?

June 29, 2009

Summary: As a developer, look at SimpleDB as an XML document.  Use it for social apps like Facebook and mobile applications.

Amazon SimpleDB stores accessible data in the Amazon cloud.  It is not a traditional relational database.

Alan Williamson makes the case for renaming the service to Amazon Registry to better describe his view of the service. I think this is close, but not quite right.  Google calls its datastore BigTable.  If I was doing the naming for Amazon, I might call SimpleDB “BigDocument.”As a developer, the way I look at SimpleDB is as a set of arbitrarily large XML documents.  The data is hierarchical, easily changed, and does not need to match within each element. Those are all advantages!

SimpleDB implements a hierarchy of Domains, items, and attributes.
I could have a domain called Users.
Users contains items which have an item name and a list of attributes.
Attributes are a set of Name/Value pairs.

For the Users domain, I want to carry a unique id per user, the timestamp that they added the application and the last time they access the app.
That looks something like:

Domain: User
———–Items: Unique Identifier(user_id)
———–Attributes:
———————-user_id
———————-first_access
———————-last_access

When a user takes an action, I would want a different data store.  We can consider a hypothetical game of Rock/paper/scissors to be played between 2 people.
One person has a turn and
1. Chooses an opponent
2. Chooses rock, paper, scissors
The opponent is notified and chooses rock, paper, or scissors and the game winner is decided.

Thus far, when I’ve used SimpleDB, I’ve created a separate Domain for this.  Call it GameTurns.

Domain: GameTurns
———–Items: Unique Identifier (player1+player2+date_time_stamp_
———–Attributes:
———————-Player1_id
———————-Player1 selection (Rock,paper, scissors, none)
———————-Player2_id
———————-Player2 selection (Rock,paper, scissors, none)

When Player1 logs in, I would check the GameTurns Domain for game results or new challenges.
Domain queries take the form:
select output_list
from domain_name
[where expression]
[sort_instructions]
[limit limit]

http://docs.amazonwebservices.com/AmazonSimpleDB/2009-04-15/DeveloperGuide/

When I am using Facebook or another social site, I will have a unique_id that for this query I will call ‘current_user_id’.
So I could try:
select * from GameTurns where Player1_id=’current_user_id’
select * from GameTurns where Player1_id=’current_user_id’ or Player2_id=’current_user_id’

One of the limits of SimpleDB is that there are 100 Domains per account.  That does not seem like a lot.  And there is a general assumption of associating a domain with a table in a database.
But Items within a domain do NOT need to match in format or content.  So my GameDomain could contains items of type User and type GameTurn.

Domain: GameDomain
———–Items: Unique Identifier(user_id)
———–Attributes:
———————-type: (user)
———————-user_id
———————-first_access
———————-last_access
———–Items: Unique Identifier (player1+player2+date_time_stamp_
———–Attributes:
———————-type: (gameturn)
———————-Player1_id
———————-Player1 selection (Rock,paper, scissors, none)
———————-Player2_id
———————-Player2 selection (Rock,paper, scissors, none)

So in this case, rather than having 2 domains, I’ve introduced a new attribute called type for the item.  Type can either be user or gameturn.

Now my query would look like:
select * from GameDomain where type=’gameturn’ and Player1_id=’current_user_id’
select * from GameTurns where  type=’gameturn’ and ( Player1_id=’current_user_id’ or Player2_id=’current_user_id’)

I did not cover the idea that attributes can have multiple values.  That can come in handy for items like products that have user ratings.  There may be no ratings or there may be multiple.  That should be easy to envision within an XML document. AN even easier example is a book with multiple authors.  That’s a typical XML example.

In social applications like Facebook, you can get user profile info based on a user id.  SimpleDB makes a good datastore for user ids.  As with the example, most social applications are based on the concept of users interacting with each other. By  uniquely identifying a transaction based on user ids and timestamps, you can use SimpleDB as an effective lookup for user activity.  User1+User2+timestamp = Unique transaction id.

The same holds true for mobile.  In the case of Android, when SimpleDB returns XML data the adapter concept works well for handling and displaying that data.  (More on that in a separate post).

For mobile applications, SimpleDB can stand on its own.  The client is the device.  SimpleDB is the remote datastore.  There is no need for a web hosting service.


Follow

Get every new post delivered to your Inbox.