原文(英語): Getting Network properties in Flash Lite
モバイル機器用にFlash Liteアプリケーションを開発する際に最も重要な情報の一つは、ユーザが保持してる接続の速度および通信コストです。Flash Liteでは、そのような情報はfscommand2()関数を使用して得ることができます。
Contents |
信号レベルは曖昧な値を返すため、最大値をパーセント表示などを使って計量化する必要があります。そこで、GetMaxSignalLevelやGetSignalLevelを使用する必要があります。
この関数は、2つのデータを取得し、0~100の間の数値を返すたけです。
function GetSignalLevel(){
var SignalLevel:Number;
var MaxSignal:Number;
var CurrentSignal:Number;
CurrentSignal= fscommand2("GetSignalLevel");
MaxSignal = fscommand2("GetMaxSignalLevel");
SignalLevel = Math.round(CurrentSignal/MaxSignal )*100;
return SignalLevel;
}
速度(通信方式)を知る必要がある場合、GetNetworkGenerationコマンドを使用できます。これは、ある数値を返すもので、数値が大きいほど優れている、この場合は、より最新の世代(例. 2.5G, 3G)であることを示します。
function GetNetworkSpeed(){
var netGeneration:String = fscommand2("GetNetworkGeneration")
switch(netGeneration){
case -1:
netGeneration = "No Network";
break;
case 0:
netGeneration = "Can't tell";
break;
case 1:
netGeneration = "2G";
break;
case 2:
netGeneration = "2.5G";
break;
case 3:
netGeneration = "3G";
break;
}
return netGeneration;
}
もちろん、通信コストの情報を直接得ることはできませんが、端末が現在ホームネットワークを使用している、あるいはローミング中である場合、それを知ることができます。ローミング中にメガバイト単位のデータをダウンロードするため、その前に、最小限プロンプト表示でユーザに問い合わせる必要があります。
これはfscommand2()関数を使用し、情報を抽出するためにGetNetworkStatusコマンドとGetConnectionStatusコマンドを使用します。
function GetNetworkSpeed(){
netStat = fscommand2("GetNetworkStatus");
var netStatus:String
switch(netStat) {
case -1:
netStatus = "network status not supported" add newline;
break;
case 0:
netStatus = "no network registered" add newline;
break;
case 1:
netStatus = "on home network" add newline;
break;
case 2:
netStatus = "on extended home network" add newline;
break;
case 3:
netStatus = "roaming" add newline;
break;
}
conStat = fscommand2("GetConnectionStatus");
var conStatus:String
switch(conStat) {
case -1:
conStatus = "network status not supported" add newline;
break;
case 0:
conStatus = "no network registered" add newline;
break;
case 1:
conStatus = "on home network" add newline;
break;
case 2:
conStatus = "on extended home network" add newline;
break;
case 3:
conStatus = "roaming" add newline;
break;
}
statusnetName = fscommand2("GetNetworkName", "netName")
if(netName =="undefined") {
netName = "";
}
return "Network Status: " +newline + netName + newline+ netStatus;
}
これら全ての情報は、サービスが止まっているあるいは使えない場合は役に立ちません。そして、HTTPリクエストを送り、何が起こっているのかを確認することが考えられます。GetNetworkRequestStatusコマンドを使うことができます。
var httpStat:Number;
httpStat= fscommand2("GetNetworkRequestStatus");
httpStat変数が取得する値は、以下の意味を示します。
-1: コマンドをサポートしていない 0: リクエスト待ち。ネットワーク接続済。ホスト名解決済。サーバー接続済。 1: リクエスト待ち。ネットワーク接続中。 2: リクエスト待ち。ネットワーク未接続。 3: リクエスト待ち。ネットワーク接続済。ホスト名解決中。 4: ネットワークエラーによる、リクエスト失敗。 5: サーバー接続エラーによる、リクエスト失敗。 6: サーバーからHTTPエラー(例.404)が返された。 7: DNSサーバが見つからないか、サーバ名が解決できず、リクエスト失敗。 8: 成功(リクエスト完了)。 9: タイムアウトによるリクエスト失敗。 10: リクエストがまだ発行されていない。
複数プラットフォームが結合し、異なるネットワークが絡んだ各fscommandにおいて、Flash Liteアプリケーションを持つ端末のネットワークについて、膨大な情報を得ることができます。この情報を自由に使い、「データをアップデートするかしないか」あるいはそれをユーザが決定するためのデータを提供する、といった動作を決定することができます。
No related wiki articles found