マイコン工作実験日記

Microcontroller を用いての工作、実験記録

電話帳のデータを転送するには

2011-06-03 12:42:57 | WT32/BM20
まだ不明点が残ってはいるものの、WT32のPBAP機能を使ってAndroid携帯の電話帳(Android用語では連絡先)にアクセスできることは確認できましたので、ここで電話帳の転送方式についてメモしておきます。

Android上で使用できるBluetoothによる電話帳データの転送方式には、次の2種類があります。
  • PBAP 外部のデバイスが電話帳を閲覧したり、ダウンロードするための手段を提供する。Android側がサーバとして機能し、外部デバイスがクライアントとなる。
  • OPP 選択した電話帳データあるは、電話帳データの全件を指定した外部デバイスに送信する。Android側がクライアントとなり、外部デバイス側がサーバとなる。
Androidの連絡先を開いた状態では、メニューを開くことでデータの送信が可能ですが、この時に使用されるのがOPPです。したがってユーザが意識して操作をおこなった結果として、データの送信が発生します。OPPでの接続は送信操作を実施するたびにリンクが接続され、データ送信が終わると切断されます。

それに対して、PBAPでの接続はいったん常時アクセスを認めてしまえば、クライアント・デバイス側はいつでも電話機側ユーザの介在なしに電話帳へのアクセスをすることが可能となります。PBAPではセッションのコネクションを張ったままにしておき、アクセスが必要になった度ごとにダウンロードしたり、閲覧することができます。PBAPが定義する機能としては、電話番号で検索して名前を取得することも可能なのですが、WT32のiWrapのドキュメントを読む限りでは、このような検索をおこなうための機能は実装されていないようです。うーむ、残念。

そんなわけで、OPPとPBAPのどちらを使うにせよ、電話帳の一部あるいは全部をBlueSAMの内部ストレージ(つまりはSPIフラッシュ)に転送しておき、BlueSAMは必要に応じてこれを検索するということになります。OPPとPBAPのどちらも電話帳データの転送にはOBEXを使い、電話帳データの表現形式としてはvCardを使っています。したがって、OBEXのフレームを受信する機能と、vCardをパースする機能をBlueSAM側で実装してやらなければならないことになります。

もちろん両方サポートするのが一番なのですが、まずはOPPとPBAPのどちらからサポートするかを決めなばなりません。上述したとおり、Androidは両方をサポートしていますが、iPhoneはPBAPしかサポートしていません。したがって、スマホを持っていれば迷うことなくPBAPを使うところです。しかしながら、わたしはまだどちらも持っていないばかりか、持っている携帯はOPPもサポートしていません。しょうがないので、電話帳データをいったんSDカードにvCard形式で保存し、そのファイルをPC上のToshiba Bluetoothスタックがサポートするファイル転送機能(OPP)を使ってBlueSAMに転送することにします。まずはこうして作業を開始し、その後他人の携帯を借りて動作確認しようと思います。