This is the website of Jim Dovey, occasionally known as Alan Quatermain, a freelance Macintosh, iPhone, and Apple TV developer and general entrpreneur. For the whole story,
read on…
So, since I started frequenting the AwkwardTV IRC channel, I’ve had to help a couple of people get their class-dumped headers for BackRow, iPhotoAccess, and QuartzComposer all sorted out in such a way that they can successfully build things. It becomes kinda tricky to explain after a while, so I though I’d do something useful about it. And so, without further ado, may I introduce: The BackRow Headers installer package!
The package only installs the headers generated by class-dump, although in the BackRow case I have added a few things to them, mostly in the BREvent.h class (event types and definitions, mostly). And I’m not going to redistribute the frameworks themselves, so please don’t ask.
The installer will look for the BackRow and iPhotoAccess frameworks to be present already within /System/Library/PrivateFrameworks, and will not install if they are not found. It will place a PrivateHeaders folder at the root of each of those frameworks, and at the root of the QuartzComposer framework. It will then create symbolic links into the Mac OS X 10.4 Universal SDK — for the AppleTV frameworks it’ll symlink the whole thing, and for Quartz Composer it’ll just link the PrivateHeaders folder itself.
Bear in mind that while the headers will install on a PowerPC Mac, you can’t compile for PowerPC since the BackRow and iPhotoAccess frameworks are Intel-only.
My friend Dakaix has just posted his first plugin: Streamer, a streaming audio player for the AppleTV. At the moment it requires some rather laborious typing using the remote, but things like channel browsing and favourites will be implemented in the future, to make things a bit easier on the thumb.
You can also read the official announcement at the AwkwardTV site, and kind people can go and put a few Diggs his way.
Potentially one of the most useful features of the AppleTV to plugin authors is its text-entry subsystem. While the Apple Remote is not an ideal tool for the job, there are often occasions where text entry of some kind is useful, such as entering a URL, a password, the address of an AFP server from which to collect content.
As it turns out, basic text entry is actually very simple to implement. In today’s tutorial, we will create a simple layer controller class which allows you to change its title.
MacRumors has a story up indicating that the iPhone might be opened up to third-party developers after all. At the moment it seems that Apple is considering it, although of course the official word hasn’t changed.
My money is on the API remaining officially closed for a while yet, although I think they are likely cleaning it up for outside consumption. Probably we’ll see some specific developers getting access to a set of tools under NDA, to get some feedback, with something going public later on. Possibly with Leopard, more likely later, unless they’ve had a great change of heart.
This will be a proper podcasted groove thang with embedded viewers & such soon, but for now here’s a link to the QuickTime file. It’s MP4, 1044×621 pixels, 9.2MB.
Since it’s going to be released (in beta form) real soon now, I figured it would be a good idea to post the video that got people interested in the first place. So, without further ado, here it is:
Back in the first article in this series we created a BRControl wrapper around the ProgressBar widget. I said then that we would put this to use shortly, and so we will. In today’s tutorial we will look at a more substantive example of plugin development, including localizations and resources, some preferences, and asynchronous download from the internet.
Our end result will be a controller which downloads from a URL stored in our preferences, displaying the progress of the download as it does so. It will also show a method for supporting resumption of an interrupted download.
In the the second article in this series, we used a simple animation, the fade-in. The animations available can be more complex than that, however, even without creating a custom BRAnimation subclass. In this short walk-through, we’ll replace the fade-in animation with a grander swooping image animation. As with the last article, a sample project will be included at the end.
In our second tutorial we’ll pull back a little and cover the BRLayerController class, and what you can do with it. If this isn’t your first experience with Back Row plugins, then you’re probably already familiar with the BRMenuController or BRMediaMenuController, but those are both fairly specialized subclasses. By creating our own BRLayerController subclasses we can define our own content and layout in a more comprehensive manner.
Along the way we will also take a look at an anciliary class, BRImageManager, which enables us to dynamically download and cache images from the Internet, or indeed from any URL, remote or local, and we will see how to use the BRHeaderControl and BRImageControl classes.
By the end of this tutorial, we will have created a custom controller that will download an image in the background and display it when ready.
This article presents the first of what I hope will be a growing number of more in-depth tutorials on the Back Row system, gleaned through lots of repetitive experimentation. I will be specifically concentrating on the creation of custom control and controllers, and a look at the layer and animation systems. In doing so, we will learn some of the internals of the system itself, such as the use of the BRImageManager class and some less-used BRControllerStack functions.
[…]