インドアプレーンのコントロールには支障ないのですが、送信機のシリアルパルスが上の画像のように所々で欠落するのがどうしても気になります。
送信機のシリアルパルスはAudioTrackで再生していますが、javaソースを何度もみなおしてようやくこの問題を解決することができました。
// 必要となるバッファサイズを計算
int bufSize = android.media.AudioTrack.getMinBufferSize(
44100,
AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_16BIT);
//AudioTrackクラスの作成と初期化
track = new AudioTrack(
AudioManager.STREAM_MUSIC,
44100,
AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_16BIT,
bufSize,
AudioTrack.MODE_STREAM);
当初バッファサイズを44100に設定していましたが、必要なバッファサイズを計算してその値に設定することで、更新レートが早くなりました。
そしてそれよりも3チャンネル分のシリアルパルスを1フレーム送り出す度に、AudioTrackクラスの作成とリリースを繰り返していたので、その分で時間がとられてパルスが欠落していたようです。
AudioTrackクラスの作成部分を別の場所に移動して解決しました。
その結果パルスの欠けは全くなくなり、更新レートも約12msと飛躍的に早くなりました。
Nexus7でもインドアプレーンを飛ばしてみましたが、片手で操作するには少し大きすぎて使いにくいです。
その点P-1Dはサイズ的によい感じですが、たまたまPCとつないでデバッグ中に電話がかかってきてあわてたことがあり、電話はしばらく前のガラケーを使うことにして、P-1Dをアプリ開発専用にしました。
| Trackback ( )
|
|
これからも頑張ってください。
取りあえず赤外線送信機は一段落で、次のテーマを何にするか考えています。