書くことないです。

ayamadoriが独り言を呟く日記。

そういえば。

最近開発ネタを書いてなかったな。いや、サボってたわけじゃないんですよ?
実は前に開発宣言したアプリはすでに完成していて、もう使ってます。ただ公開する気が無くなっただけ。
どんなのかというと、『ヘッドホンが抜けたときに音楽再生を一時停止する』だけです。
Symbian端末って、音楽再生時、ヘッドホンが接続されていないと自動的にスピーカから音が出ますよね?
で、電車の中などで何かの拍子にヘッドホンが抜ける*1と、周りに迷惑をかけてしまうのが嫌だったんです。

すいません、嘘です。本当は痛い電波ソングを周りに聞かれるのが恥ずかしいだけです。。。
それはともかく、実装自体は『ヘッドフォンの接続状態を監視』して、非接続のときに『特定のアプリの決定キー押下をエミュレートする』だけです。キー押下をエミュレートするために、特定のアプリのUIDにTKeyEventを渡してます。要はスピーカから音を出さないようにすればよかったんだけど、一番安易な方法がこの方法でした。もっとスマートな方法ありそうだけど、まあ動いてるから気にしない。
問題は、『ヘッドフォンの接続状態を監視』するためのAPIがS60 3rdにしか対応していない(FP1以降は非対応*2)ことと、TKeyEventが純正のミュージックプレーヤで機能しないこと。TRawEventなら上手くいくんだけど、特定のアプリに渡せないのがネック。ま、僕自身はOggPlayとInternet Radioでさえ使えればいいので、UIDをハードコーディングして満足しちゃってます。このあたりの問題が解決しないと公開する気にはなれそうにないですね。
これくらいのアプリならそれこそPyS60あたりで作れそうだけど、常駐させててもメモリを50KB程度しか消費しないのはOSネイティブならではの利点ではないでしょうか?
サンプルを貼り合わせただけだけど、HelloWorldと比べるとだいぶ勉強できた気がします。今後の開発に生かせるといいな。開発できるか分からんけど。

*1:特に705NKのようなPop-Port接続タイプは抜けやすい気がする

*2:5thでは新しいFrameworkが用意されてるらしいから、同じことができるかも。5th端末が主流になったら考えよう