A few months ago, I showed Shelves, an application to manage a collection of books on Android powered phones. I am an avid user of Delicious Library on MacOS X and I since no similar application existed at the time for Android, I decided to write my own. Needless to say, Shelves was largely inspired by Delicious Library.
Even though Shelves is not quite ready to be release on the Android Market, I decided to publish the source code under the Apache 2.0 license. The application is already usable and lets you add books by searching Google Books or by scanning their barcode (if you have the application called Barcode Scanner installed), search your collection by keywords or barcodes, import books from a CSV file and delete individual books. The only two features I need to implement before releasing Shelves are the ability to manually add/edit a book and to view a book’s details.
If you are curious, you can see Shelves in action in the following video. You can also visit Shelve’s project page for screenshots showcasing several features.
Note: the colors on the video are different from what you would see on an Android device. I created the assets specifically for mobile devices and the colors appear therefore more saturated on a computer monitor.
You did not make a Maven POM??? ………. Just kidding ;-)
Thanks Romain for making it available, this will make a good showcase application to learn Android development.
See you soon!
Wow, that looks really awesome.
And indeed, it will be a fountain of demo code.
From looking at the video I guess you used a TouchDelegate. Afer our IRC conversation (androidquestioner) I tried for some hours, but gave up on that to wait for a sample and will now re-work my solution with a TouchDelegate.
Hi Mariano,
I am not using TouchDelegate, there’s no reason to in this UI.
Really well done! (as usual :-D )
Concerning Delicious Monster… Do you have published online your library?
I have an old version here: http://www.progx.org/deliciouslibrary/index.html
I should update it :)
2 things:
- you have a LOT of books
- nicely done the “Google a 200%” at the end ;-)
- I want a G1 to do the same with my books
(yes, I did say “2 things”)
You’re running on Cupcake?
Not all my books are shown on this page and Google à 200% is in there only because I wrote the French translation :P
The video is the emulator running Cupcake indeed.
That’s pretty cool. I had a look around the source code (but couldn’t understand most of it). For the layout, you used a merge tag. What does that do? I couldn’t find a documentation on it, is it something like <include = “@layout/somelayout” />?
XML implies a root tag in every document. Unfortunately, in the case of Android, this means you have to have a root View in every XML layout document. This often leads to unnecessary views in the hierarchy. The tag is just a way to skip that root View and add all the Views declared in XML directly into the parent in which the layout is inflated. It’s an optimization :)
Hi! You may remember me from all the times you’ve corrected my mistakes in various blogs and discussion groups!
;-)
I am interested in Shelves, but with support for BookMooch (http://www.bookmooch.com). Have you given any thought to how you’d like folk to extend or reuse Shelves for other “libraries” beyond Delicious Library and Google Books?
BTW, how did you make the wood grain (shelf_panel.png)?
Thanks!
Hi Mark,
I have no plan on supporting online services right now. Shelves can import books form Google Books Search and Amazon (although that part is not open sourced, it’s only on my hard drive because it would violate the Amazon ToS to distribute it.) However, I would love the app to be able to connect to online services to sync the books collection.
The wood grain was made in Photoshop.
I’m looking to create a BookMooch Android app, partly because I’m a fan of BookMooch, and partly because I’m looking to create something worth uploading to the Market — I need to go through that exercise for a chapter in my upcoming Advanced Android book, and none of my dinky samples are worth it. I’d love to use Shelves, or at least parts of it, because its UI is right in line with what I need. And, I’m looking to build this between Feb 22 and March 23 or thereabouts.
Shelves is your baby, and so regardless of its Apache license, I want to conduct my work in a way that makes you happy.
Which of the following models would you prefer for my work?
1. You don’t have any time to fuss with any of this now, so I should fork Shelves for my own app, with the possibility of working to merge changes back into Shelves at some future date.
2. You have a tiny bit of time to fuss with this now, so I should work with you to split ShelvesView out into a separate project, so other applications than Shelves can use the super-slick shelving UI, while Shelves itself can focus on your current back-end integrations.
3. You have time to review patches and such and are interested in support for services like BookMooch, so I should check out your code and work on Shelves proper.
4. You have already filed a restraining order preventing me from posting comments on your blog… ;-)
5. Something else.
Again, it’s really your call — I can always build my app sans Shelves, or build some other app entirely. Just let me know what you feel is appropriate.
Thanks!
Hi Mark,
I would be happy with #3 :) I wanted to release a 1.0 on Market rather sooner than later so you might need to work in a branch, unless I slack off (very plausible :)) which will give you time to do it before ship.
Great! I’ll be back in touch in a week or so! Thanks!
Hello, I’ve made Anobiit on Android Market which help people manage their book on aNobii (a online book shelve), it does have ’shelve view’ as Shelves did :)
Anobiit is not ready for offline usage though.
http://www.cyrket.com/package/com.gasolin.android.anobiit
Doesn’t Anobiit just open a browser though?
Anobiit is another options to manage books without much coding :p
Since Anobiit is limited to online bookshelve, I’d like to learn Shelves code to see if Shelves is possible to swith from google book search to other book search engine, since google book search did not cover much books out of the US :)
I wrote Shelves so that one can add any books search engine. Like I mentioned before, I also have an Amazon engine. When Shelves looks for a book (barcode scan or manual search), it queries all the registers books search engines.
What is the status of this project?
I’m no programmer and can’t figure out the whole source code thang.
Shelves is exactly what I’m looking for as the “Killer App” for my Android.
Any chance I could either get instructions on how one compiles code for Android
Or perhaps a compiled .apk file I can install.
Cheers
here is how i installed it (for future google queries until romain guy publishes the apk)
# download and install android sdk
downloading: http://developer.android.com/sdk/1.5_r2/index.html
installing: http://developer.android.com/sdk/1.5_r2/installing.html
(if you don’t intend doing development, skip the eclipse installation parts)
# checkout shelves code from its subversion repository
$ svn checkout http://shelves.googlecode.com/svn/trunk/Shelves shelves
# change current directory to checked out source code and create a new build.xml (it seems current repo contains an old version
$ cd shelves
$ android update project –target 2 –path .
# build the project
$ ant build –debug
you should see that the project is compiled and a apk file is created in bin directory with a name of .activity.ShelvesActivity-debug.apk
# connect your phone to install the app
$ cd bin
$ adb install .activity.ShelvesActivity-debug.apk
Instead of ant build, cd bin, adb install you can simply type ant reinstall.
Alondra…
this is why i always pick my nose….
I was just wondering when this app is going to be published to the android market. I have been wanting to use this app for some time now. An release date or roadmap would be nice.
Sorry I’m too busy at the moment.
[...] The day after having submitted PackRat to the ADC2, I was idly browsing if I could find out more about other contestants’ submissions1… and came across Shelves. [...]
Hi! This looks really slick. I was using another app on my windows mobile phone, but am looking at the Android. I was wondering, if I add a book to the shelf, can I label or tag is as read or want to read? That would be very helpful. I have bought or read a book twice more than once, so something like that would be really great. I hope you have a chance to make it to the android market soon. Thanks!!
Hi,
Will it be permitted to add our own bookcovers? Manually, I mean…
Would really love an app like this if you could publish it to the Android Marketplace… In the comments of the Youtube Demo of the app – a lot of requests for the name of it…
Hi, it seems the “see it in action” movie is down n the project site.