ボクの覚え書き – CentOSでサーバ構築 サーバー構築やプログラミングの覚え書き

pearで携帯の画面サイズ取得

03.26.2009 · Posted in 覚え書き

携帯サイトをつくろうと思い立ちました。
写真画像の表示がメインのコンテンツです。
当然、端末の画面サイズに合わせて写真もリサイズして表示したい。
各キャリアのサイトにあるスペック一覧のデータをシコシコとテキストファイルに書いて・・・、というやり方では新機種が出るたびに更新作業をしなければいけないので却下。

で、いろいろと調べると、pearに「Net_UserAgent_Mobile」なんてものがあるそうです。

さっそくインストール。

# pear install -f Net_UserAgent_Mobile
(2009/03/26時点でBETA版なので「-f」が必要)

サンプルのソースを書いてみる。

require_once("Net/UserAgent/Mobile.php");

$agent = &Net_UserAgent_Mobile::factory();
if($agent->isDoCoMo()){
    echo "docomoだよ";
}
elseif($agent->isVodafone()){
    echo "softbankだよ";
}
elseif($agent->isEZweb()){
    echo "auだよ";
}
else{
    echo "それ以外だよ";
}

$disp = $agent->getDisplay()
$dispsize = $disp->getSize();
echo "横は" . $dispsize[0] . "で、縦は" . $dispsize[1] . "だよ";

OK。縦横とれた。これは便利だ。

ただ、DoCoMoは端末リスト(XMLファイル)を別途用意しないといけないらしい。インストールされたソースを見ると、たしかに機種情報がベタ書きしてある。これでは最新機種に対応できないね。

このXMLファイルもコマンド一発でつくれるらしい。
CPANのHTTP-MobileAgentにmakexmldocomomapというのがあって、こいつを動かすとサクッと作れるそうです。

ではインストール。いろいろ足りないのがあって結構てこずった。

# cpan
cpan> install HTTP::MobileAgent
cpan> install XML::SAX::Expat
cpan> install XML::Simple
cpan> install HTML::TableExtract
cpan> install WWW::MobileCarrierJP

インストール完了。よし、早速やってみよう。

・・・と思ったら、あれ?

makexmldocomomapが見つからない。

小一時間探してこんなところに見つけました。

/root/.cpan/build/HTTP-MobileAgent-0.27/bin/makexmldocomomap

で、これを実行すると画面にズラズラとXMLが表示される。
お、標準出力じゃん。

# /root/.cpan/build/HTTP-MobileAgent-0.27/bin/makexmldocomomap > DoCoMoMap.xml

これでOK。
さっきのサンプルソースに1行追加。

$_SERVER["DOCOMO_MAP"] = "/path/DoCoMoMap.xml";

完璧です。
あとはこのXMLが定期的に更新されるようにしてやれば言うことなしです。

参考URL
Net_UserAgent_Mobileを使って、携帯端末の情報を取得
PEAR::Net_UserAgent_Mobile 3G対応携帯判別(ケータイ判別)
DoCoMoマップ利用 PEAR::Net_UserAgent_Mobile_DoCoMoDisplayMap

Comments are closed