Filling in Missing Android Music Art from iTunes

June 14, 2013

I use iSyncr to sync my Samsung Galaxy S3 with my iTunes music on my MacBook pro. I sync through USB.

I use PowerAmp to play my music on my phone. ANd I have found that a lot of the album art is missing.

I was using PowerAmp’s method to fill in missing art: press on a song missing art while it plays until art choices appear. This method is not so great. Does not always find the art I want.

What I want is for the iTunes album art on my MacBook Pro to be the album art used on the phone.

So I connected my phone via USB and opened up Android File Transfer (which you need for file transfer from a Macintosh to a Samsung Galaxy S3, and for any using an Android OS of 4+).

I clicked the Card tab, since I have iSyncr sync my music to my 32 gig SD card instead of my 16 gig phone.

On the card, I opened the syncr folder.

Then I went through every folder, arranged by artist folders containing album folders. The album folders (which contain the music files) were of three types:

* The album folder contained a file called AlbumArt.jpg. That was the album art.
* It contained a file named albumart.pmap. I suspect these albums are the ones that I tried to fill using PowerAmp.
* It contained no albumart files at all.

If the folder did not have AlbumArt.jpg, I did the following steps in iTunes.

I opened my music and clicked the tab to display the artists. (Actually, I did this once.)

Under that artist, I clicked on the album art in iTunes that had no corresponding art on my phone. Then I control-clicked a song in the album and selected Get Info. (You can control-click the art, but then you get a window asking if you want to edit all the songs in the album, so Get Infoing the song skips that step.)

Then I clicked the Artwork tab to show the artwork for that song (and for the album). I then drag-and-dropped (copied) that art to another folder that I created as a temporary folder.

The art shows up in my temporary folder as (album name).jpg. Then I dragged that jpg (I did not have to rename it) into the Android File Transfer window and into the corresponding album folder. If there was a albumart.pmap file there, I deleted it.

Then I went on the phone, and in PowerAmp, again I played a song in the album and opened the art selection by putting my finger on the art until I saw my art choices. I selected In Folder art.

(Note: there were also a couple of folders like the Compilations folder, with album folders in it. In that case, I had to open the Albums tab in iTunes to find the album and songs.)

That’s it. It took a while. But not so bad once I got the hang of it.

Note: A few times,it was tricky to get the album to show the art; in Mallrats, I had to pick the artwork in PowerAmp from a song with Jason Mewes name. Maybe there is a lesson there about being a motormouth. Or rather, make sure I select a song that matches the artist name showing for that entire album.

ANOTHER NOTE: THIS TOOK A LONG TIME! There were over 100 pieces of art, and it took hours to do. This does work, but I would like to have found a faster way. I am unlikely to look for it right now since I have other projects to do.

The modular phone case: Leverage!

June 6, 2013

I was at Red Rock Coffee, Mountain View, doing some tech writing. I noticed that the table next to me was with young Silicon Valley types who all had the same type of case on their iPhones. Their company — http://www.graftconcepts.com — makes the Leverage iPhone case, which has a replaceable backplate. This one had a slot for business cards on the back.

We had a nice chat. They showed me the case, how easily and elegantly it comes on and off. Their modular idea, the replaceable backplate. One of them might have mentioned a battery backplate in the future. I know that I always want more battery life (hence the extended battery on my Samsung Galaxy S3 which I showed them, and I’ll discuss it in another post). 

This is a neat idea, a case that can be more than one type of case. Maybe we’ll see it for the more popular Android phones sometime?

Extracting notes from an unopenable, unconvertible, un-emailable, and undownloadable Pages document on an iPad.

May 31, 2013

I went to BayCon 2013 on Memorial Day weekend and went to lots of panels. I took lots of notes using my iPad and an older Zaggmate keyboard cover. Several days later, I tried to open that document. A popup window told me that “The document can’t be opened.” I also could not email the document or copy it to DropBox (I have Documents 2 Free for DropBox): the document could not be converted to Pages, PDF, or .doc, which it has to be before it can be emailed.

I figured that if I could get that document onto my MacBook Pro, I would find some way to open it and extract the yummy gooey notes within. So I thought, it is about time I used my iCloud. I had an iCloud account, I had just never used it before. Silly, since I use DropBox a lot.

On my MacBook Pro, OS 10.8:

* In System Preferences / iCloud, I clicked Documents & Data. I think I also signed in here, but I also signed in through Safari.
* In Safari (hmm, maybe I should be using Chrome!), I went to iCloud I signed in. (I entered my mac.com email to sign in, since I was not using my iCloud.com email.)
* In Safari, at https://www.icloud.com/#iwork, I clicked on the Pages tab. Guess what. Empty. I need to set up the iPad to sync.

On my iPad (I have an iPad 1, so I am stuck in iOS 5):

* In Settings, and under iCloud, I turned on Documents and Data.
* Under Apps: Pages, I turned on Use iCloud.

On the http://www.icloud.com/#iwork page, all my document icons showed up. But they were not synced yet. It took a LONG time for all my pages documents to sync to iCloud. In fact, some were still syncing, after SEVERAL HOURS!

The document I wanted finally synced. I clicked on it and tried to download it. And I could not. The document had to be converted to Pages, PDF, or .doc before being downloaded. And as before, it could not be converted.

So after some googling (http://www.macworld.com/article/1163291/icloud_iwork_sync.html), I found another way to access the document from my Mac.

On my MacBook Pro, in the Finder:

* I navigated to (my user name)/Library/Mobile Documents/com~apple~Pages/Documents/
* Note: I have my MacBook Pro set up so the Finder shows hidden files, like the Library folder (you could also select go to folder on the Finder menu and find Library). Also, once I clicked on Mobile Documents, the Finder said I was in iCloud. I was!
* In the iCloud-based Mobile Documents folder, I opened com~apple~Pages and then Documents.
* In Documents, I saw a list of my Pages documents that were in iCloud. (By the way, I did NOT perform ANY changes within these iCloud folders, for fear of really messing things up, because Apple does NOT intend for you to access iCloud in this convoluted way.)
* I found the document that contained my BayCon notes! YAY! But I could not copy/paste it onto my Mac; again the conversion problem when I tried to paste.

So I had to crack open the document directly in iCloud.
* I highlighted the document, and from the Action icon, I selected Show Package Contents. Yes, Pages docs are packages with various goodies within.
* In the package contents, I used TextMate to open the index.db file; TextMate seemed a good choice to open a generic file and find text within, but maybe TextEdit would have worked also). index.db was the only file that seemed to contain the text for my notes. (The other files were plists or pngs.) Lots of garbage symbols and useless text in index.db.
* I scrolled down, and found LOTS of my notes. I copied and pasted them into a TextEdit file on my MacBook Pro.
* I repeat: I did NOT change anything on iCloud, such as the index.db file contents!
* TRIUMPH! I have my notes back!

I also selected all in index.db and copy/pasted into another TextEdit file. I’ll try editing out the garbage and see if I get more notes that way, just in case I missed anything. But so far, I think I have recovered nearly all my notes. It is good to be a nerd.

Tip-toe, through the Dropbox…

May 11, 2013

…to the Notes app, through the Notes example, tip-toe, through the Eclipse, with me!

(Excuse me, Tiny Tim.)

I followed the directions at Setting up a Sync API project for the Dropbox Notes example.

https://www.dropbox.com/developers/sync/start/android#project-setup

This post is slightly wordy, considering that the instructions at the above URL are short and clean. I want to give you a feel of walking though the Setting up. It was a very nice stroll, I must say. I only had one little glitch.

I did not install the Android Developer Tools Bundle, because I recently reinstalled my Eclipse and ADT on my MacBook Pro. I added lots of Android SDKs, especially the 4.0 SDKs. I also created a virtual device for Android 4.0.3.

I created a Dropbox app named Davstrom1 in the Dropbox App Console. Davstrom1 does not have any content in it, I just wanted to see how to get keys for api and secret. (I did try naming the app Notes instead of Davstrom1, but Notes was taken. Naturally.) I think I picked my Davstrom1 app to have app folder permission, same as Notes. (Turns out the keys that the Notes example project used were already there, I did not use my own. I was wondering about that.)

I downloaded the Sync API Android SDK as a zip. I put its unzipped folder where I knew I could find and copy its lib folder. (Note to self: I should put that SDK where I have my other Android SDKs so I can find it easier. I’ll do that.)

Getting the Notes example project into my Eclipse/Android was easy. I downloaded the Notes project as a zip, and put that unzipped project where I could easily find it. Then in Eclipse, I navigated to and imported the Notes project just as the instructions said: File -> New -> other -> Android project from existing code, then click the import into your workspace checkbox, and do the import.

I copied and pasted the Dropbox lib contents from the Dropbox SDK into my Notes project lib folder. Then I refreshed the project. Just like the Dropbox instructions told me. Worked fine.

I did not have to paste in the required permissions or the activities and services into AndroidManifest.xml; they were already there.

GLITCH. I ran into a little glitch. Errors in the Notes project about libraries not being supported. So I googled. I found some nice advice to right-click my project and select Android Tools -> Add Support Library. I added the support library that was suggested. The errors went bye-bye. I got that advice at the following URL.

http://stackoverflow.com/questions/8867134/android-sdk-fragment-support

I ran the project in my emulator using a 4.0.3 virtual device. The Notes app came up. I connected to my Dropbox, and I created a simple note. Worked like a charm.

P.S. I have had a Dropbox account for some time. I needed that to run the Notes app, of course. I use my Dropbox to sync my Storyist-written novel and short story between my MacBook and iPad. Lots faster than going through iTunes, and it gives me a nice backup on the web.

Again with the SoundRecorder tutorial.

May 10, 2013

I ran through the SoundRecorder tutorial again, this time at a little Android meetup. This time, I asked advice from a sharp Android dude from Talkray.com. Both he and I thought it was weird for the instructions to say create the SoundRecorder project twice!

http://www.edumobile.org/android/android-development/sound-recorder-in-android-development/

(I’ll say that my troubles mostly, if not completely, stemmed from my not calling the project SoundRecorder: I used another name because, well, I wanted to, and I wanted to learn a bit more than just copying and pasting.)

When generating the app, I said the smallest SDK was 4.0. Just to avoid trouble. And because another Android guy at the meetup said to. Really,

I left the Activity Name at MainActivity. (And Layout Name at activity_main.)

I pasted into res/layout/activity_main.xml what the tutorial said to paste into main.xml. That is because activity_main is my main screen. (This will change from the default of a relative layout with a menu to a linear layout.)

Then I pasted their manifest into the AndroidManifest.xml file. And I got a bug. The line android:label=”@string/title_activity_sound_recorder” gives an error of “no resource found that gives the given name.” To fix this, I needed to create the string in res/values/string.xml. So I added <string name=”title_activity_sound_recorder”>Dave Record</string> to <resources>. It is a good idea to check the strings.xml file for stuff like that, else you might get an icon for your app with no nice title on it, just a not-so-nice blank space.

In MainActivity.java, I also got the infamous “R cannot be resolved to a variable” error. Ugh. But I was going to replace the whole file anyhow, so I decided to worry about that later.

I pasted in the java file. Naturally, I got an error on the top line, since the import for com.example.soundrecorder is NOT valid because I named the project differently. So I hovered over the line for my autofix choices, and I chose changing the package declaration to com.example.davesoundrecord (the silly name I happened to pick and I stubbornly wanted to stick with).

Then I got an error with the line public class SoundRecorder extends Activity: it wanted SoundRecorder defined in its own file. The autofixes were to rename the compilation unit to SoundRecorder, or to rename the type to MainActivity. Since SoundRecorder IS the main activity, I chose door number 2.

Then the line setContentView(R.layout.main) was wrong, naturally, because it needed to use activity_main instead. I fixed that.

And I got the infamous R cannot be resolved to a variable error (I knew it!) for these lines:
setContentView(R.layout.activity_main);
startButton = findViewById(R.id.start);
stopButton = findViewById(R.id.stop);

(By the way, you’ll get an R error if your xml files are screwed up. R maps all the resources, so if anything is broken in XML, you’ll get the R error.)

I was told that I should do command-shift-O in my Java file to auto-generate my import files. So I did. Again I had a choice: I could import android.R (no, no, no, I am told NOT to do that, both online and by the Android meetup guys!). Instead, I imported com.example.soundrecorder.R. BOOM! Errors gone.

I ran it in the emulator. I wondered if it was gonna choke. The emulator came up, but the app did not show. So I closed the app and grabbed a run configuration for 4.0.3 (the virtual device that I happened to have set up beforehand). Took a while, but not too long, and I got a message: “Unfortunately, DaveSoundRecord has stopped.” Argh.

Hey, I remember that I needed to change the name of my activity. In the manifest file, I changed android:name=”.SoundRecorder” to android:name=”.MainActivity”.

I got rid of that com.example.soundrecorder.R import after I fixed the package=”com.example.davesoundrecord” in manifest. The reason I had to import that R file before was that the activity was in a different package than the package specified in androidmanifest.

P.S. I have applied for a tech writing gig at Dropbox. They have a couple of Dropbox Sync API examples to try out, one iOS, one Android. Whether the gig goes through or not, this looks like a good lesson. I mentioned to Dropbox that stepping out an example would be a nice addition to their docs.

Latest way to sync iTunes and Android

May 3, 2013

iSyncr on my Mac and on my Android phone (Samsung Galaxy S3). It runs FAST, and runs well. I like it a lot. (MUCH faster than DoubleTwist was for me.) So far, I have only synced via USB.

I ran into a slight problem getting it to run the first few times. I have Android File Transfer installed to allow my Mac to access my phone on USB: Android 4.0 does not show up in the Mac Finder. I had to stop Android File Transfer from automatically starting when I plugged in my phone with USB.

I followed instructions that iSyncr (JRT Studio) support sent me. This is what I did.

– Go to where you installed “Android File Transfer.app” (I have it under /Applications)
– Ctrl+click –> “Show package contents”
– Go to Contents/Resources
– Rename “Android File Transfer Agent” to e.g. “Android File Transfer Agent_DISABLED”
Then go to /Users/username/Library/Application Support/Google/Android File Transfer and again rename the Agent app. (Make sure you quit the process before doing this).
Done 🙂 No more Auto-start. (I checked if the File Transfer still works and it does.)
Now there appear to be scripts you can run to shut off the auto start. If you prefer the command line, you can google that. I never tried them.
I have my phone’s USB debugging turned on. I think other apps, like SyncMate, might have wanted it turned off. However I am having trouble getting my Mac iCal to sync with my Android calendar, so I have not used that in a while.

Trying online Android tutorials

May 3, 2013

I did a couple of Android tutorials I found online. I got them working, although I had to do some tweaking. I have done lots of online classes, and messed about with Eclipse/Android before, and worked for over a year on RhoMobile’s ANdroid-based IDE, and had an older Eclipse/Android install before that, but I am now using a new installation. I am on a MacBook Pro. My current Eclipse/Android install has the latest Android SDK, some Kindle APIs, and most Android versions back to about 2.2. I have not installed Android NDK yet.

Anyhow, I run into the usual little glitches getting the projects to run. I thought I’d mention that on my blog. It seems that no matter how simple the project, something always happens. (I hate the R.java reference errors, I really hate them.)

A Hello World tutorial

http://theopentutorials.com/tutorials/android/helloworld-application-in-android-4/

It does not get much simpler than Hello World. But I got errors.

In my Android project, I removed its res/menu folder. In its Java file, I removed the public boolean onCreateOptionsMenu class. I was not using that menu in these projects, its auto-generation was screwing me up.

All the examples referred to main.xml; I would get res/layout/(name of my project).xml instead of res/layout/main.xml, and had to adjust the layout xml references accordingly. I’d also get a res/menu/(project name).xlml file. Which I got rid of. I am curious why I am generating the res/menu stuff.

After the res/menu removal and the main.xml fix, Hello World ran. (Or rather, ran again, I have done a lot of Hello Worlds over the years.) I think this problem is on my end.

Creating a simple sound recorder

http://www.edumobile.org/android/android-development/sound-recorder-in-android-development/

I did the removal of the res/menu folder and the onCreateOptionMenu class. Also, in the manifest file for Sound Recorder, I had to remove @string from the line android:label=”activity_sound_recorder” >.

This tutorial asks you to create the project twice. I did not do that. I think that is likely a slight mistake in the instructions.

What I want in an eBook reader

May 29, 2011

Barnes and Nobel just released a new eBook reader. 6-inch e-ink display. And touch. That’s right, the nice touchy fingery interface that is beloved by kids, and about anyone else with fingers who is not at least 49 percent luddite. (Okay, I do not know if it is multi-touch.)

I love my iPad. But yes, I would like to try out an e-ink display. Non-backlit, papery, gray-scale, monochromey. I stare at a backlit display all day, I’d like to see if e-ink is easier on my peepers.

And yet, I want more than Kindle (if they ever do touch!) and Nook eBook readers currently give me. How about this: An eBook reader that has a nice e-ink display, touch interface, and… TAH DAH, it runs Android!!! (The color Nook runs Android or a variant, the touch Nook does not run Android.)

Why Android? Cuz then I could read my Kindle, my B&N Nook, my any-ebook-I-buy-except-iBook eBook on it, I only need to install the Android app. (Yes, Steve Jobs, I said APP, I said and MEANT app for an Android device, app is short for application, app is not short for Apple, you know this, why don’t you admit it?)

Ahem. To continue. Why not a standard Android OS and a touch e-ink display, targeted as an eBook reader? It could download any Android app, like Nook and Kindle and Stanza. It would not run every Android app so well, since e-ink would be lousy for video and the like. But you would buy this for eBooks, not videos. If you want video, you buy a color LED-backlit display. If you want to read, you consider e-ink.

I want my eBook reader to be able to read all my eBooks, not just the ones from one company. If I had to settle for one now, it would likely be a Kindle, simply because Amazon is the 800 pound ebook gorilla. I do have to get a good look at the e-ink touchscreen Nook.

Oh, I want to play music with my eBook reader, I might like to listen to tunes while I read. Surely DoubleTwist would work with that! (Album art in DoubleTwist could be a little problem in how it looks on e-ink, but I can live with that.)

So I hope I see a more universal e-ink eBook reader. I can wait longer on the e-ink front. But not forever. I am writing a novel, and I will want to see how it looks on a 6-inch e-ink display, the single most popular cheese, I mean eBook reader display, in the world! (Excuse me, Monty Python’s cheese shop sketch.)

And I do not buy iBooks right now, since I could only read them on my iPad and nowhere else.

P.S. I just read that the new e-ink Nook runs Android 2.1. However, I doubt this Nook, or the color Nook, will run the Kindle app. And I’d rather not hack/root my eBook reader. I will see what happens in the e-ink market. I expect more cool devices.

DoubleTwist WiFi seems okay

April 15, 2011

I have synced my DoubleTwist on my Macintosh with my Android phone via WiFi a few times, and it worked fine. I am, of course, using the latest versions of DoubleTwist on my Mac and my phone, and the latest version of AirSync on my phone. (Well, I just checked, and I am updating my Android DoubleTwist now.)

But I admit that I still usually grab my USB cable when I want to sync. USB syncing seems faster. But I think WiFi syncing is safe now. So disregard my previous warning.

A DoubleTwist note of caution

January 16, 2011

I have been singing DoubleTwist’s praises, and I still do. (LA LA LAAAA!!!!) Hear that? That’s me loving DoubleTwist.

But if you have DoubleTwist and an Android phone with both internal RAM and an SD card, I recommend that you turn off automatic syncing. Here’s why.

I store my music in my phone’s 16 gig phone memory, not on its 2 gig SD card, which is filled with the Avatar movie. When I connect via USB, DoubleTwist synced to the 16 gig phone memory just fine. But it also tried to fill up the tiny SD card with music. I wanted to leave the SD card alone. (Cue the YouTube Brittney fan: LEAVE SD CARD ALONE!!!)

On my Macintosh’s DoubleTwist, I went to Preferences. I clicked the Devices icon, then I unchecked “Automatically sync devices when connected.” Now, when I connect my phone to my Mac via WiFi or USB, I choose my phone’s 16 gig and sync with that. No more messy SD card syncing.

Note: I did not have the SD card syncing problem with WiFi, since my Mac DoubleTwist did not even see the SD card over its WiFi connection. Well, what if I want to sync to an SD card over WiFi someday? Guess I’ll cross that bridge when I come to it.