qwertymodo

OCR Android App

17 posts in this topic

For awhile now, I've been wanting to stream OCR music to my Android phone, and have looked into several ways of doing so, eventually just settling on downloading the library and re-uploading it to my Google Play Music account, but the one thing that doesn't let me do is to browse or search by console/game/original song the way the OCR site does. So, I finally decided to delve into Android development and try to write an app myself. I've never done any Android development before outside of submitting a few patches to a CM7 fork I used to run on my old Droid X, but I've been programming for close to 10 years now and have done work in Java before, so I figured it could be a fun project. I managed to get the basic player working, but before I go any further, I need to figure out exactly how to go about getting the data I need. With that in mind, I have a few questions:

-Is there any public-facing interface for performing searches that returns raw data? Right now, all I can see is to do an HTTP request to http://ocremix.org/quicksearch/[game/remix/artist/album]/?qs_query= and then parse the HTML, which works ok, but has the potential to completely break on malformed HTML or any future site changes.

-I currently have a rough proof-of-concept working, but is there anybody around here with Android experience who would be willing to collaborate on the app? This isn't a "hey guyz I have this SUPER C00L idea can somebody write all the codeZ????? PLZ RESPOND!!!" request, I am mostly looking for help with UI and system message handling. I'm an experienced programmer, and I'm more than capable of getting my Android-specific questions answered through other channels, but having somebody else on board with previous Android experience would be a huge help.

-Is there any real interest for such an app? So far, this has just been a pet project that I thought up awhile back, and as such it may be doomed to the fate of far too many projects of mine that have made it to the "Hey, it works!" stage and then I lose interest and move on to something else. However, if there was real interest (or somebody willing to collaborate on the project), then maybe I'd be willing to actually make this thing nice...

-This may be a bit of a stretch at this early stage, but if the interest is there and I manage to get this up to a release-ready product, would there be any chance of an official endorsement? I'm not talking money, just I know you have an interest in protecting the OCR brand, so I wouldn't want to give the impression of this being an officially sanctioned app unless that were really the case, so I'm not sure on things like using the OCR logo for the app icon, or naming the app or things like that.

Anyway, here's the barebones proof-of-concept I have so far:

R1uHsKPl.png

Pretty simple. Type in a number between 1-2828 and it pulls up the corresponding remix, displays the title, and then you can hit play to play the song. Right now there are more bugs than features, a lot of system events aren't handled, and there's almost no error handling, but it does work. I managed to get the media player running in a background service though, so it continues playing in the background when you switch apps. If anybody's interested, here's the apk (again, this is just a proof-of-concept, it's ugly, it's hacky, don't send me bug reports): https://drive.google.com/file/d/0B9mkcXhEAawFYlJob2ZLSUhfTlk

Current permissions:

Read Phone State - Pause/Resume playback when you receive a call

USB Storage - Not currently used, but it was included in the example project I used as a template. Eventually, I'll use the SD card for local caching...

Full Network Access - Required for accessing the OCR site and streaming the songs.

Share this post


Link to post
Share on other sites

This is a really cool idea, and not just because you used my song as an example. :-) Being able to search by game, artist, etc, would be great. When I'm on my phone there is no particularly easy way to browse OCR tracks.

Share this post


Link to post
Share on other sites
This is a really cool idea, and not just because you used my song as an example. :-) Being able to search by game, artist, etc, would be great. When I'm on my phone there is no particularly easy way to browse OCR tracks.

I like that! :)

Share this post


Link to post
Share on other sites

I think this would be great for OCR, right along with a mobile version of the forums.

If you could do something like this for iPhone eventually it would be great.. An OCR app would probably be one my top used apps because it's just so fun to search and listen to different OCReMixes. And it'd be a lot easier on an app than on the site.

Share this post


Link to post
Share on other sites

From what I can tell, the answer to my question about retrieving raw data is probably a no. Is there any chance that such a function could be added to the site, even something as simple as just replicating the current search functions but returning as plain JSON instead. So, say I wanted to search for Chrono games. Right now, I can pull up this link:

http://ocremix.org/quicksearch/game/?qs_query=chrono

and parse the HTML that I get back, but if there was some way to perform the exact same query and return the data formatted as JSON it would look like:

[
{
"sys":"ps1",
"title":"Chrono Cross",
"url":"http://ocremix.org/game/17/chrono-cross-ps1",
"year":1999,
"publisher":"Square",
"composers":"Yasunori Mitsuda",
"mixes":29
},
{
"sys":"snes",
"title":"Chrono Trigger",
"url":"http://ocremix.org/game/16/chrono-trigger-snes",
"year":1995,
"publisher":"Square",
"composers":"Nobuo Uematsu, Noriko Matsueda, Yasunori Mitsuda",
"mixes":119
}
]

It wouldn't be much extra code for the site, but it would be immensely helpful for a project like this...

Share this post


Link to post
Share on other sites

I hope djp can work with you, a good mobile app for searching, steaming, and downloading from OCR is an absolute no brainer IMO.

Share this post


Link to post
Share on other sites

When I first clicked on this thread, I thought it was about an OCR Forums app :P

This would be an extremely awesome idea though, I hope you can make it happen! I'm trying to learn enough Java to code with Android, but it's more like a crash course at this point... smali is absolutely hell to try and read

Share this post


Link to post
Share on other sites
When I first clicked on this thread, I thought it was about an OCR Forums app :P

They should just install the tapatalk API :P

Share this post


Link to post
Share on other sites

Finally managed to dig into the UI documentation and put together something that actually looks like a real app :)

h5ZLcAzs.png

DXEFfqTs.png

EQbWasws.png

fGXWJzgs.png

Now I need to clean up the mess that resulted from mashing 3 unrelated code demos together and then I can start working on the search and browse functionality.

Share this post


Link to post
Share on other sites
This is a great idea.

Would you also be able to integrate rainwave? (http://ocr.rainwave.cc/) There are no good apps on android to properly interact with it.

The RainWave app just needs to add a MediaPlayer background service rather than relying on an external app to act as a service listener. It's not hard, I got it working in a few hours. Just get ahold of the RW devs and point them here: http://www.glowingpigs.com/index.php/extras

Share this post


Link to post
Share on other sites

All of the async network calls for data retrieval are starting to make my head spin, but thankfully, once I manage to figure out a template for populating my data structures with all of the async calls, pretty much all of the browse and search functions should be pretty well boilerplated...

Share this post


Link to post
Share on other sites

Ok, it's becoming very clear to me that the design paradigms I'm used to working in are quite different from the Android ecosystem, so it's time to put a full stop to this rabbit hole I'm diving into and actually take the time to understand the design models and then start over. The proof-of-concept work will definitely be helpful, but to use that as my starting point would be to put the cart before the horse, as it were. The design phase matters, folks ;)

Share this post


Link to post
Share on other sites

Ok, so I took the time to back up and refactor my code into something actually maintainable, and now I feel a lot better about the prospects of this project. I haven't tackled the async network calls again yet, so no loading by ID or metadata lookup yet, but I have basic playlist functionality working, and most of the bugs squashed, so I guess it's time to write some more... code, that is, not bugs (though I'm sure I'll write plenty of those too :tomatoface: )

xEDBY6ll.png

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now