Audio sharing for iOS applications

Door Elephtera op maandag 25 oktober 2010 09:12 - Reacties (7)
Categorie: Software Engineer Related, Views: 2.931

Tijdens het programmeren voor de iPhone/iOS kwam ik een vervelend probleem tegen. Zonder de telefoon te jailbreaken is het niet mogelijk om op een nette manier audio/data te delen.

Data valt nog wel te delen door een NSURL te gebruiken, maar hier zit een limiet op van 256 characters. base64 wil hier nog wel wat mee helpen maar echte data kan niet.

Fotos/videos kun je benaderen via de image picker. het is niet triviaal om de data dan ook te benaderen, maar het is mogelijk.

Audio daarentegen is een heel ander verhaal. Apple heeft een aantal keuzen gemaakt die het delen van audio niet toestaan:
- elke applicatie draait in een sandbox
- de audio/itunes library is niet officieel toegankelijk

Omdat we sandboxed draaien kun je niet de data benaderen van andere applicaties (bijvoorbeeld de dictafoon). Hier ben ik een tijdje mee bezig geweest om een oplossing te vinden.

- Als beide applicaties identiek gesigned zijn kun je de keychain gebruiken, maar ook daar zit een limiet op qua data grootte
- NSUserDefaults, hier kan alleen basale data in (nsxxx zoals nsdata, nsstring, etc) en ook al lijkt dit voor suites bedoeld te zijn, het blijft binnen de sandbox en is dus ook onbruikbaar. Het is eigenlijk alleen bedoeld voor 1 applicatie die zijn instellingen wil onthouden
- NSURL's gebruiken, alleen heb je dan de max 256 character limiet. Dit kan wel gebruikt worden om een applicatie te wijzen op de locatie van bepaalde data
- UIPasteBoard: data kopieren en plakken voor de gehele iphone. Dit klonk veel belovend, werkt ook, maar blijkt een limiet te hebben rond de 5MB. Echter dit is een stuk meer dan de 256 char van een nsurl.

Bij het zoeken in combinatie met de uipasteboard vond ik een project dat zichzelf neerzet als open standard for sharing audio data between applications: http://code.google.com/p/intua-audio-sharing/

Zij bieden een stukje code waarmee de audio in stukken gehakt wordt waarmee de 5MB grens opgelost wordt. De 5 MB limiet blijkt namelijk per uipasteboard item te zijn.
Hun code biedt ook de code om de data weer terug te halen van de pasteboard.

Tot apple in de toekomst misschien wel mogelijkheden hiervoor biedt moeten we moeilijk doen, en kunnen we het beste allemaal dezelfde standaard gebruiken.

uTorrent as a service on windows Vail en

By Elephtera on Sunday 24 October 2010 13:59 - Comments (15)
Category: Software Engineer Related, Views: 6.135

I have been using WHS for some time now, and because I finally had some time I moved to a new server running windows VAIL a.k.a. WHS v2

Installing was easy
Moving the data was easy. (just go to vail, and move the data from the old to the new server in the network environment)

As I now have a server that can use sata disks I wanted to run utorrent on the server
The existing tutorials are for WHS v1 and there is little to find on running custom services on windows server 2008. And even less for the R2 or vail versions.

Because it was so hard to find the easy sollution I wrote this simple blog.

HOWTO install uTorrent as service on Windows 2008/Vail

Install uTorrent as normal user
open an administrator commandline (start - rightmouse on cmd - run as administrator)
enter the following command:

sc \\SERVER create uTorrent binpath= "cmd /c \"path to utorrent\" "

In the default case this is:
sc \\server create uTorrent binpath= "cmd /c \" C:\Program Files (x86)\uTorrent\uTorrent.exe\" "

\\SERVER is the network server location (see sc /?)
uTorrent is the name you want the service to show up with in the service
binPath= "path" (Don't forget the space after the equal sign)

This command will install a new service that runs cmd, which in itself runs utorrent
cmd is closed because it is not a valid service. But because it forked uTorrent it will leave uTorrent running in the background.

After adding the service go to the service configuration and make sure it runs as the user where you installed it. This makes sure it uses the correct settings, including possible web UI settings.

note1. Make sure the webUI uses a non default port, otherwise it conflicts with the Vail webserver. I use 8080.

note2. The service gives a 1053 error. this is because cmd is closed. Check to see if uTorrent runs in the process tab of the task manager