2018年09月28日

iPhoneアプリ「振動点字」をリリース&開発裏話

久しぶりのリリース。

マイクで音声認識した話し言葉を点字でスマホ本体の振動で(1点式の体表点字:1の点から6の点までを順に点のある場所を長い振動、ない場所を短い振動)出力するアプリです。

iPhone6で短い振動がしないという不具合が出ており調査のため配信を一旦中止していましたが、iPhone6s以降の機種でないと短い振動には対応していないようで配信を再開しました。(iPhone6以前の機種で短い振動がしないのは仕様上の制限となります)
(細かい話:長い振動はAudioServicesPlaySystemSound(kSystemSoundID_Vibrate)で、短い振動はAudioServicesPlaySystemSound(1520)で鳴らしてるのですが、SoundID=1520はiPhone6s以降から対応のようで、それ以前の機種で正規の方法で短い振動をさせることはできないようです。
プライベートAPIを使えば振動を途中で止めることもできないこともなさそうですけどiOSのバージョンアップで使えなくなって調べるのに苦労するのには懲りたので…)
(追記:iPhone6s以降というよりHaptic(Apple用語だとTaptic) Engineが乗ってないとダメみたいですね。2019年以降は3D Touchを搭載しなくなるという噂もあるけど、どうなるでしょうね。このアプリもお蔵入りの運命かなぁ…)



SpeechKitというSiriと同じテクノロジーを使っているのでそこそこの精度で認識します。


振動で出力するのなんて簡単にできるかと思ったら

AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
sleep(1)
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);

とかやってもうまくいかない…

AudioServicesAddSystemSoundCompletion(kSystemSoundID_Vibrate,
NULL,
NULL,
systemAudioCallback,
(__bridge_retained void *)self);

で再生終了でcallback関数を呼んで、その中で次の再生をセットして、と連鎖させないとうまくいかないようで苦労しました。
画面のUILabelの変更も単にLabel.text=@"ほげ"の連続だと全然更新されません…
NSTimerで定期的に変更するようにしてようやく動きました。

体調悪いときは頭の回転も悪いみたいで普段の倍ぐらいデバッグに時間がかかる。
もっと体調悪くなったら作れなくなるな 唯一の自己表現なのに悲しいな。

今回は有料版だけだけど、目が不自由な人向けアプリは広告つけても見事に広告収入ゼロだし、300円のものが100本売れても3万円… しかも100本も売れないし…
作るのに2週間ぐらいかけてるから時給換算したら超貧乏なのでご勘弁を。

ネタ切れやHuluやNetflixにはまってたのもあるけど、アプリの数を増やすとメンテが追いつかないのでリリースは控えめに方針変更しました。
ラベル:アプリ製作
posted by one-hand-engineer at 09:33| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: