携帯電話3キャリアのフィーチャーフォン (いわゆるガラケー) で現在位置を取得するための実験用ページを終了した。

今となってはもうほとんど使う機会のない機能のような気がするが、Web ページのスクリーンショットと JSP (Java Server Pages) によるソースコードをここに残しておく。自作ライブラリを使っている部分があるが、処理の流れにはあまり関係ないのでそのまま載せておく。

位置情報取得テスト(DoCoMo)

URL: http://www.nilab.info/m/lab/locationtest/docomo/

位置情報取得テスト(DoCoMo)


<%@ page
	contentType="text/html; charset=UTF-8"
	import="java.util.*,
			java.io.*,
			info.nilab.util.*,
			info.nilab.mobile.*"
%><%
// GPS | サービス・機能 | NTTドコモ
// http://www.nttdocomo.co.jp/service/imode/make/content/gps/
// > Aタグ/FORMタグにlcsという属性を追加します。属性値はありません。lcs属性が追加されている場合、そのリンクを押下すると「現在地が通知されること」を意味するポップアップ画面が表示され、その後、位置情報が位置情報URLに変換され、送信されます。

// GPS機能への対応について(mova) | サービス・機能 | NTTドコモ
// http://www.nttdocomo.co.jp/service/imode/make/content/gps/mova/
// > INPUTタグのnameオプションにおいて、"navi_pos"を規定します。このnameオプションが入っているINPUTタグを指定した場合、携帯電話は自動的に測位を開始し、測位結果である位置情報をコンテンツサーバに送出します。

// 作ろうiモードコンテンツ:オープンiエリア | サービス・機能 | NTTドコモ
// http://www.nttdocomo.co.jp/service/imode/make/content/iarea/
// http://www.nttdocomo.co.jp/binary/pdf/service/imode/make/content/iarea/open-iarea.pdf

// iモードGPS
// pos, geo, X-acc

HttpServletRequest req = (HttpServletRequest)request;

MobileAgent agent = new MobileAgent(req);
Properties params = agent.getParameters();

String baseurl = "http://www.nilab.info/m/lab/locationtest/docomo/";
String url_gps = baseurl;
String url_area = "http://w1m.docomo.ne.jp/cp/iarea?ecode=OPENAREACODE&msn=OPENAREAKEY&posinfo=1&nl=" + baseurl;

StringBuffer buf = new StringBuffer();
for(Enumeration names = params.keys(); names.hasMoreElements();){
	String name  = (String)names.nextElement();
	String value = req.getParameter(name);
	buf.append(Utils.sanitize(name) + " = " + Utils.sanitize(value) + "<br />");
}
if(buf.length() > 0){
	buf.insert(0, "取得パラメータ一覧:<br />");
	buf.append("<hr />");
}
String paramlines = buf.toString();
%><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Cache-Control" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
<title>位置情報取得テスト(DoCoMo)</title>
</head>
<body>
<p>位置情報取得テスト(DoCoMo)</p>

<hr />

<p>
<%= paramlines %>
</p>

<p><a href="<%= url_area %>">オープンiエリア情報表示(FOMA, mova)</a></p>

<p><a href="<%= url_gps %>" lcs>GPS携帯の現在位置情報表示(FOMA)</a></p>

<p>
GPS携帯の現在位置情報表示(mova)
<form action="<%= url_gps %>" method="get">
<input type="submit" name="navi_pos" value="表示">
</form>
</p>

<hr />
<a href="/m/">NI-Lab.</a><br />
</body>
</html>

位置情報取得テスト(KDDI au)

URL: http://www.nilab.info/m/lab/locationtest/au/

位置情報取得テスト(KDDI au)


<%@ page
	contentType="text/html; charset=UTF-8"
	import="java.util.*,
			java.io.*,
			info.nilab.util.*,
			info.nilab.mobile.*"
%><%
// KDDI au: 技術情報 > 簡易位置情報
// http://www.au.kddi.com/ezfactory/tec/spec/eznavi.html
// 測地系: datum (引数内容としては"tokyo"という表示になるが、実際の測地系はWGS84系のデータを使用)
// 座標系: unit (本サービスでは「dms:度分秒単位」のみ。)
// 緯度: lat
// 経度: lon

HttpServletRequest req = (HttpServletRequest)request;

MobileAgent agent = new MobileAgent(req);
Properties params = agent.getParameters();

String baseurl = "http://www.nilab.info/m/lab/locationtest/au/";
String url_location = "device:location?url=" + baseurl;
String url_wgs84 = "device:gpsone?ver=1&datum=0&unit=0&acry=0&number=0&url=" + baseurl;
String url_tokyo = "device:gpsone?ver=1&datum=1&unit=0&acry=0&number=0&url=" + baseurl;

StringBuffer buf = new StringBuffer();
for(Enumeration names = params.keys(); names.hasMoreElements();){
	String name  = (String)names.nextElement();
	String value = req.getParameter(name);
	buf.append(Utils.sanitize(name) + " = " + Utils.sanitize(value) + "<br />");
}
if(buf.length() > 0){
	buf.insert(0, "取得パラメータ一覧:<br />");
	buf.append("<hr />");
}

String paramlines = buf.toString();
%><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Cache-Control" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
<title>位置情報取得テスト(KDDI au)</title>
</head>
<body>

<p>位置情報取得テスト(KDDI au)</p>

<hr />

<p>
<%= paramlines %>
</p>

<p>
<a href="<%= url_location %>">現在簡易位置情報を表示する</a><br />
<a href="<%= url_wgs84 %>">現在位置情報(WGS84系)を表示する</a><br />
<a href="<%= url_tokyo %>">現在位置情報(日本測地系)を表示する</a><br />
</p>

<hr />
<a href="/m/">NI-Lab.</a><br />
</body>
</html>

位置情報取得テスト(J-PHONE, Vodafone, SoftBank)

URL: http://www.nilab.info/m/lab/locationtest/softbank/

位置情報取得テスト(J-PHONE, Vodafone, SoftBank)


<%@ page
	contentType="text/html; charset=UTF-8"
	import="java.util.*,
			java.io.*,
			info.nilab.util.*,
			info.nilab.mobile.*"
%><%
// Vodafone live!
// ステーション対応端末用位置情報取得
// z属性を付与: <a href="" z> や <form action="" z>
// httpヘッダ に x-jphone-geocode フィールド

// ボーダフォンライブ!向けウェブコンテンツ開発ガイド[HTML編]
// http://developers.vodafone.jp/dp/tool_dl/list/
// http://developers.vodafone.jp/dp/tool_dl/download.php?docid=120
// 3GC型のみ利用可能
// location スキームを記述
// <a href="location:測位方法"
// <form action="location:測位方法"
// 付与パラメータ名: pos, geo, x-acr

HttpServletRequest req = (HttpServletRequest)request;

MobileAgent agent = new MobileAgent(req);
Properties params = agent.getParameters();

String url = "http://www.nilab.info/m/lab/locationtest/softbank/";
String url_3gc_cell = "location:cell?url=" + url;
String url_3gc_gps = "location:gps?url=" + url;
String url_3gc_auto = "location:auto?url=" + url;

StringBuffer buf = new StringBuffer("");
for(Enumeration names = req.getHeaderNames(); names.hasMoreElements();){
	String name  = (String)names.nextElement();
	if(name.startsWith("x-jphone-geocode")){
		String value = req.getHeader(name);
		buf.append(Utils.sanitize(name) + " = " + Utils.sanitize(value) + "<br />");
	}
}
for(Enumeration names = params.keys(); names.hasMoreElements();){
	String name  = (String)names.nextElement();
	String value = req.getParameter(name);
	buf.append(Utils.sanitize(name) + " = " + Utils.sanitize(value) + "<br />");
}
if(buf.length() > 0){
	buf.insert(0, "取得パラメータ一覧:<br />");
	buf.append("<hr />");
}
String paramlines = buf.toString();
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Cache-Control" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
<title>位置情報取得テスト(J-PHONE, Vodafone, SoftBank)</title>
</head>
<body>

<p>位置情報取得テスト(J-PHONE, Vodafone, SoftBank)</p>

<hr />

<p>
<%= paramlines %>
</p>

<p>
<a href="<%= url %>" z>ステーション対応用現在位置情報を表示</a><br />
<a href="<%= url_3gc_cell %>">3GC型(簡易位置情報による測位)用現在位置情報を表示</a><br />
<a href="<%= url_3gc_gps %>">3GC型(S!GPSナビによる測位)用現在位置情報を表示</a><br />
<a href="<%= url_3gc_auto %>">3GC型(自動選択による測位)用現在位置情報を表示</a><br />
</p>

<hr />
<a href="/m/">NI-Lab.</a><br />
</body>
</html>

tags: nilab

Posted by NI-Lab. (@nilab)