Skip to main content.

Monday, July 09, 2007

QRコードでの携帯電話機能(au限定)との連携

前回に引き続きQRコードがテーマです。今回は、携帯電話でQRコードから取り込んだデータを携帯電話の機能(アプリケーション)に連携させる方法についてです。連携させるとは、例えば簡単な例ですと、取り込んだデータがURLを表す文字列であれば、そのURLでブラウザが起動出来るといったことです。尚、ここでは大変勝手ではありますが、具体的な内容はauのみということにさせて頂きます。理由は私が使っている携帯電話がauで、他の確認が出来ないということです。御了承下さい。

携帯電話機能との連携では、実際にはまず、機能ごとに規定されたフォーマット(規定されたタグ(文字列)を含める)のQRコードデータを出力します。そして、携帯電話のコードリーダでそのデータを読み込むと、関連する機能を起動して、取り込んだデータを渡せるということです。要するに携帯電話で直接データを入力するよりも(多くの人の場合)早くて便利であろうということです。

連携させるためのデータの仕様は、auでは現在、技術情報のバーコードで公開されています。この中でアドレス帳一括入力機能をためしてみました。このページを見ると、MEMORY:を開始タグにすると、アドレス帳一括入力機能が有効になるようです。その後に、NAME1:、MAIL1:、TEL1:等のタグにデータを続けて、1行づつ改行で区切るようです。例えば以下のようなデータになるかと思います。

MEMORY:テストデータ
NAME1:インデペンデンスシステムズ横浜
NAME2:インデペンデンスシステムズヨコハマ
MAIL1:uso@independence-sys.com
TEL1:0459999999

各タグは以下のアドレス帳の各項目にセットされるようです。
MEMORY:メモ領域
NAME1:名前
NAME2:読み
MAIL1:(1番目の)Eメールアドレス
TEL1:(1番目の)電話番号

ということで、実際にためしてみます。前回使ったライブラリで実際に作成してみます。以下のような簡単な入力フォームと単純なスクリプトを用意しました。入力フォームでは、MEMORY:にあたる項目はありませんが、名前の項目を併用しています。スクリプトの方ではリクエストの項目を受け取って、単純にタグを付けて、改行を付加して文字列として連結します。その文字列をライブラリに渡してQRコード画像を生成しています。スクリプトでは入力チェックもエラー処理もありません。単純なテストプログラムということで御理解下さい。

フォームのソース
<HTML>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=euc-jp">
<BODY>
QRコード電話帳連携サンプル(*AU限定です)
<FORM METHOD="GET" ACTION="qraddress.php">
名前:<INPUT TYPE="text" NAME="name1"><BR>
読み:<INPUT TYPE="text" NAME="name2"><BR>
メール:<INPUT TYPE="text" NAME="mail1"><BR>
電話:<INPUT TYPE="text" NAME="tel1"><BR>
<BR>
<INPUT TYPE="submit">
<INPUT TYPE="reset">
</FORM>
</BODY>
</HTML>

出力のソース
<?php
$memory = "MEMORY:" . @$_GET['name1'];
$name1 = "NAME1:" . @$_GET['name1'];
$name2 = "NAME2:" . @$_GET['name2'];
$mail1 = "MAIL1:" . @$_GET['mail1'];
$tel1 = "TEL1:" . @$_GET['tel1'];

$data = $memory . "\n" . $name1 . "\n" . $name2 . "\n" . $mail1 . "\n" . $tel1;

$datasjis = mb_convert_encoding($data,"SJIS","EUC-JP");
$data_enc = urlencode($datasjis);

$size = "3";

print "<html>";
print "<body>";

$imgurl = "<img src=\"http://site/path/qr_img.php?d=" . $data_enc . "&t=P&s=" . $size . "\">";

print $imgurl;

print "</body>";
print "</html>";
?>

QRコード画像

このコードを実際に読み込むと、「アドレス帳一括登録」というメニューが出てきて、以下のように登録出来ました。(※但し、実際には名前は24バイトまでだったので、「インデペンデンスシステム」として登録されました。また、表示しているディスプレイの種類、携帯の機種によっては読み込めない場合もあるかと思います。実際に12.1インチのノートPCでの表示では読み込めませんでした。)




関連サイト
swetake.com(QRコード・バーコード)
QRコードドットコム

参考書籍
UNIX USER 2005年2月号(※UNIX USERは現オープンソースマガジン)

Webプログラミング関連記事