Class | Jpmobile::Mobile::Au |
In: |
lib/jpmobile/mobile/au.rb
|
Parent: | AbstractMobile |
CDMA 1X, CDMA 1X WINを含む。
USER_AGENT_REGEXP | = | /^(?:KDDI|UP.Browser\/.+?)-(.+?) / | 対応するUser-Agentの正規表現 | |
LOCATION_UNSUPPORTED_DEVICE_ID | = | ["PT21", "TS25", "KCTE", "TST9", "KCU1", "SYT5", "KCTD", "TST8", "TST7", "KCTC", "SYT4", "KCTB", "KCTA", "TST6", "KCT9", "TST5", "TST4", "KCT8", "SYT3", "KCT7", "MIT1", "MAT3", "KCT6", "TST3", "KCT5", "KCT4", "SYT2", "MAT1", "MAT2", "TST2", "KCT3", "KCT2", "KCT1", "TST1", "SYT1"] | 簡易位置情報取得に対応していないデバイスID www.au.kddi.com/ezfactory/tec/spec/eznavi.html | |
GPS_UNSUPPORTED_DEVICE_ID | = | ["PT21", "KC26", "SN28", "SN26", "KC23", "SA28", "TS25", "SA25", "SA24", "SN23", "ST14", "KC15", "SN22", "KC14", "ST13", "SN17", "SY15", "CA14", "HI14", "TS14", "KC13", "SN15", "SN16", "SY14", "ST12", "TS13", "CA13", "MA13", "HI13", "SN13", "SY13", "SN12", "SN14", "ST11", "DN11", "SY12", "KCTE", "TST9", "KCU1", "SYT5", "KCTD", "TST8", "TST7", "KCTC", "SYT4", "KCTB", "KCTA", "TST6", "KCT9", "TST5", "TST4", "KCT8", "SYT3", "KCT7", "MIT1", "MAT3", "KCT6", "TST3", "KCT5", "KCT4", "SYT2", "MAT1", "MAT2", "TST2", "KCT3", "KCT2", "KCT1", "TST1", "SYT1"] | GPS取得に対応していないデバイスID |
デバイスIDを返す
# File lib/jpmobile/mobile/au.rb, line 66 66: def device_id 67: if @request.user_agent =~ USER_AGENT_REGEXP 68: return $1 69: else 70: nil 71: end 72: end
画面情報を Display クラスのインスタンスで返す。
# File lib/jpmobile/mobile/au.rb, line 50 50: def display 51: p_w = p_h = col_p = cols = nil 52: if r = @request.env['HTTP_X_UP_DEVCAP_SCREENPIXELS'] 53: p_w, p_h = r.split(/,/,2).map {|x| x.to_i} 54: end 55: if r = @request.env['HTTP_X_UP_DEVCAP_ISCOLOR'] 56: col_p = (r == '1') 57: end 58: if r = @request.env['HTTP_X_UP_DEVCAP_SCREENDEPTH'] 59: a = r.split(/,/) 60: cols = 2 ** a[0].to_i 61: end 62: Jpmobile::Display.new(p_w, p_h, nil, nil, col_p, cols) 63: end
位置情報があれば Position のインスタンスを返す。無ければ nil を返す。
# File lib/jpmobile/mobile/au.rb, line 24 24: def position 25: return nil if params["lat"].blank? || params["lon"].blank? 26: l = Jpmobile::Position.new 27: l.options = params.reject {|x,v| !["ver", "datum", "unit", "lat", "lon", "alt", "time", "smaj", "smin", "vert", "majaa", "fm"].include?(x) } 28: case params["unit"] 29: when "1" 30: l.lat = params["lat"].to_f 31: l.lon = params["lon"].to_f 32: when "0", "dms" 33: raise "Invalid dms form" unless params["lat"] =~ /^([+-]?\d+)\.(\d+)\.(\d+\.\d+)$/ 34: l.lat = Jpmobile::Position.dms2deg($1,$2,$3) 35: raise "Invalid dms form" unless params["lon"] =~ /^([+-]?\d+)\.(\d+)\.(\d+\.\d+)$/ 36: l.lon = Jpmobile::Position.dms2deg($1,$2,$3) 37: else 38: return nil 39: end 40: if params["datum"] == "1" 41: # ただし、params["datum"]=="tokyo"のとき(簡易位置情報)のときは、 42: # 実際にはWGS84系のデータが渡ってくる 43: # http://www.au.kddi.com/ezfactory/tec/spec/eznavi.html 44: l.tokyo2wgs84! 45: end 46: return l 47: end
EZ番号(サブスクライバID)があれば返す。無ければ nil を返す。
# File lib/jpmobile/mobile/au.rb, line 18 18: def subno 19: @request.env["HTTP_X_UP_SUBNO"] 20: end
GPS位置情報取得に対応している場合は true を返す。
# File lib/jpmobile/mobile/au.rb, line 80 80: def supports_gps? 81: ! GPS_UNSUPPORTED_DEVICE_ID.include?(device_id) 82: end