2011年2月15日火曜日

vCard のメモ

ちょっと、vCard の仕様が知りたくなったので調べてみた。

■ 参考ページ

 vCardはIrMC内で定められている個人情報のデータ-フォーマット

 ・vCardの仕様書

 ・vCard Overview


■ vCard のバージョン

 ・vCard 2.1
   ・"7BIT"禁止
   ・"BASE64"禁止
 (・vCard 2.1 for Europe
   ・名前の順番が "Prefix Middle Given Family Suffix")
 ・vCard 3.0 (RFC 2426)
   ・"QUOTED-PRINTABLE"禁止
   ・"CHARSET"禁止
 ・vCard 4.0


* Card 2.1 までの属性

・BEGIN : VCARD
  exp) BEGIN:VCARD

・VERSION : [2.1 | 3.0 | 4.0]
  exp) VERSION:3.0

・N : string // Name
  exp) N:Yuki

・FN : string // Full Name
  exp) FN:Yuki Anzai

・ADR : string // Address
  exp) ADR;TYPE=HOME:;;1-2;目黒区;東京都;000-0000;日本

・EMAIL : string // Mail Address
  exp) EMAIL;TYPE=PREF;INTERNET:android@gmail.com

・NOTE : string // Memo
  exp) Note:Android好き

・ORG : string // 所属組織
  exp) ORG:Android女子部

"SOUND"

・TEL : number // phone number
  exp) TEL;TYPE=PREF;HOME:0001112222
  exp) TEL;WORK:0001112222
  exp) TEL;FAX:0001112222
  exp) TEL;CELL:0001112222

・TITLE : string // 肩書き
  exp) TITLE:総長

"ROLE"
"PHOTO"
"LOGO"

・ URL : url
  exp) URL:http://android.com

・END : VCARD
  exp) END:VCARD


* Card 3.0 で追加された属性
・NAME : string // N とどう違うのかよくわからない // (3.0, 4,0)

・NICKNAME : string // (3.0, 4.0)

・PROFILE

・SOURCE

・CLASS : string
  exp) CLASS:PRIVATE

・BDAY : date? // Birthday (3.0, 4.0)

・SORT-STRING : string // (3.0, 4.0)
  exp) SORT-STRING:アンザイユキ

・CATEGORIES : string // カテゴリ名
  exp) CATEGORIES:無所属

・PRODID

* Docomo 独自の属性? (3.0)
"ENCODING"
"CHARSET"
"HOME"
"WORK"
"FAX"
"CELL"
"VOICE"
"INTERNET"

* Card 4.0 で追加された属性
"BIRTH" // Place of birth (4.0)
"ANNIVERSARY" // Date of marriage (4.0)


■ Android での実装

まずは vcard で検索

VCardParser.java とか VCardInterpreter.java とかいますねー

このへんみるといろいろありすぎw
http://tools.oesf.biz/android-2.3_r1.0/xref/frameworks/base/core/java/android/pim/vcard/VCardConstants.java


190 /*
191 * vCard 3.0 defines
192 *
193 * param = param-name "=" param-value *("," param-value)
194 * param-name = iana-token / x-name
195 * param-value = ptext / quoted-string
196 * quoted-string = DQUOTE QSAFE-CHAR DQUOTE
197 * QSAFE-CHAR = WSP / %x21 / %x23-7E / NON-ASCII
198 * ; Any character except CTLs, DQUOTE
199 *
200 * QSAFE-CHAR must not contain DQUOTE, including escaped one (\").
201 */

212 /*
213 * param-value = ptext / quoted-string
214 * quoted-string = DQUOTE QSAFE-CHAR DQUOTE
215 * QSAFE-CHAR = WSP / %x21 / %x23-7E / NON-ASCII
216 * ; Any character except CTLs, DQUOTE
217 *
218 * QSAFE-CHAR must not contain DQUOTE, including escaped one (\")
219 */


V3.0 用のコード
http://tools.oesf.biz/android-2.3_r1.0/xref/frameworks/base/core/java/android/pim/vcard/VCardParser_V30.java

http://tools.oesf.biz/android-2.3_r1.0/xref/frameworks/base/core/java/android/pim/vcard/VCardParserImpl_V30.java
では、
「vCard 3.0 では "CHARSET" 属性は許可されていないが、実際に使われているファイルでは "UTF-8" が使われていないものもあり、"CHARSET" も許すようにしてます。"7BIT" と "BASE64"は vCard 2.1 では許可されていないけどパースします。」ってコメントがあるね。



NDEF の vCard 関連だと Tag アプリの中に実装がありますね。
http://tools.oesf.biz/android-2.3_r1.0/xref/packages/apps/Tag/src/com/android/apps/tag/record/VCardRecord.java

0 件のコメント:

コメントを投稿