LocationManager、Criteria、Geocoderの使い方

5371 ワード

参考:
http://blog.csdn.net/chenshijun0101/article/details/6644935 http://www.bkjia.com/Androidjc/1036538.html http://blog.csdn.net/i_love fish/article/detail/7948215http://blog.csdn.net/i_love fish/article/detail/7948215http://blog.csdn.net/flowingflying/article/details/38733879 http://www.2cto.com/kf/201111/110230.html
LocationManager
現在の位置を取得したり、デバイスの移動経路を追跡したり、敏感領域を設定したりして、敏感エリアに入るときに、デバイスが特定のアラームLocationManagerを発行します。位置管理者の例は、gets System Service()で得られます。パラメータConttext.LOCATION_.に入ります。SERVICE
位置付けのタイプ:1 gps衛星は1米の内のagps 5米の内の携帯電話の上で覆いをすることができません。2 wifiポジショニングip番号ネットワーク3基地局は500-1000 m network:wifi基地局gps:gps agpsppassvie:パッシブポジショニング(すべてのポジショニング方式を総合して、最も正確な結果が得られます。)
android location providerは二つあります。LocationManager.GPS_PROVIDER:GPSは精度が高いですが、遅くて電力が消費されます。また、気象や障害物のために衛星情報を取得できないかもしれません。また、GPSモジュールがないかもしれません。LocationProvider gpsProvider=locationManager.get Provider(LocationManager.GPS PROVIDER)LocationManager.NETWORK_PROVIDER:ネットワークで測位情報を取得し、精度が低く、消費電力が少なく、情報の取得速度が速く、GPSモジュールに依存しない。LocationProvider netProvider=locationManager.get Provider(LocationManager.NETWORKUPROVIDER);プログラムの汎用性のために、動的にlocation providerを選択したいです。Criteriaを使用して、現在の設備状況に応じて、どのlocation providerを自動的に選択できますか?
Criteria類
このクラスはアプリケーションの位置選択サービスプロバイダーの基準の一つを示しています。プロバイダーは正確さ、電気量の使用によって、海抜、速度、方向、料金の選択ができますか?最も遅いグループのニーズを自動的に選択するプロバイダー。
取得方法:Criteria criteria=new Criteria()
常用方法:
void set Accuracy(int accuracy) 
経緯度を設定する精度オプションのパラメータはACCURACY_があります。FINE正確ACCURACY_COARSEは大まかです
void set AltitudeRequired 
海抜データの取得が必要かどうかを設定します。
void set BerringAccuracy(int accuracy)
方向設定の正確なオプションパラメータはACCURACY_があります。LOW、低ACCURACY_HIGH高NO_REQUIREMENT.要求なし
void set BerringRequired
方向情報の取得が必要かどうかを設定します。
void set CostAllowed(bolean costAllowed)
定位中に料金が発生することを許可するかどうか設定します。例えば、流量などです。
void set HorizontalAccuracy(int accuracy)
水平方向の経緯度を取得するための精度オプションパラメータACCURACY_LOW、低ACCURACY_MEDIUM中ACCURACY_HIGH高NO_REQUIREMENT.要求なし
void set PowerRequirement(int level)
消費電力のレベルを設定します。
void set SpeedAccuracy(int accuracy)
速度の精度を設定します。
void set Speed Required(bolean speed Required)
速度の要求を設定しますか?
void set Verical Accuracy(int accuracy)
垂直距離の海抜高さを設定します。
LocationListener
位置付け時、LocationListener位置モニターインターフェースを実現する必要があります。主にOLocant Changedを書き直します。方法/***位置変更コールバック方法*@param location現在の位置*@return void*/public vodn Location(Location location)///得られた経緯doublation=他に書き直す必要がある方法はあります。@Overridepublic voidon StStStStString provided、int status、Bundle extrs){//TODODODODO Autogeneratototomethodstub@Overridepublicvodon ProvidedeEEvaled(Stribibibibidededededededededededededededededededededededededededededededeblblblablblblablabled))//ststststststststdedededededededededededededededededededededeststststststststststststststststststststAuto-generanted method stub)
GeocoderGeocoder経度復号者は、経緯度を詳細な位置情報に変換するために使用できます。国、都市、町名などのGeocoder gc=new Geocoder(this、Locale.get Default();List locationList=null;try{locationList=gc.get Froom Location(latitude、longitude、1)}catch(IOException){e.print StockTrace();Addres address=locationList.get(0);Addressの例を得る/Log.i(TAG,「address=」+address);String countryName=address.get CountryName()//国家の名称を得て、例えば:中国Log.i(TAG、“countryName=”+countryName);String locality=address.get Locality()//都市名を取得しました。例えば、北京市Log.i(TAG、「locality=」+locality);for(int i=0;address.get Address Line(i)!=null;i+){String address Line=address.get Address Line(i);/周辺情報を入手して、街などを含めて、i=0、町名Log.i(TAG,「address=」+address Line)を得る。
Local Manager基本使用
LocationManager locMgr=(LocationManager)gets System Service(Conttext.LOCATIONS KUSERVICE)//LocationManagerを獲得してlocMgr.get LastKnown Location(LocationManager.GPSuPROVIDER)//デバイスの最後の既知の位置を提供します。ここには3つのGPS_があります。PROVIDER GPS獲得、NETWORK_PROVIDERネットワーク獲得、PASSIVE_PROVIDERは受動的に他のアプリケーションを提供しています。locMgr.getAllProviders()//すべての利用可能または利用できない提供プログラムlocMgr.get Providerを返します。指定された提供プログラムlocMgr.isProvider Enabledを返します。指定された提供プログラムがlocMgr.get Providers(true)を使用できるかどうかを判断する。すぐに使用できる提供プログラムlocMgr.get Providersを返します。/使用できる提供プログラムを返します。そして、criteriaオブジェクトで条件locMgr.request LocationUpdatesを指定します。            LocationManager.GPSuPROVIDER、            0,/間隔は何分ですか?            0,//最小間隔距離変化のお知らせ            locListener)//onResume()に受信位置と新しいイベントを登録する受信機locMgr.removeUpdates(locListener)//onPause()に登録LocationListener locListener=new LocationListener(){/位置モニタを削除します。        //位置情報更新時に呼び出します。            public void onLocationChanged(Location location)            {                if(location!=null)                {                    Toast.make Text(get BaseContext()                        「New location latitude[]+                         locations.get Latitude()+                        "]longitude[]+                         locations.get Longitude()+「」,                        Toast.LENGTH.show();                }            }            //無効な提供プログラムが起動されたらすぐに呼び出します。            public void onProvider Dispabled(String provider)            {            }            //ユーザがプログラムの提供を有効にすると呼び出しられます。            public void onProvider Enabled(String provider)            {            }            //状態変化時に呼び出しられます。            public void オンススタッドレス(String provider)                             int status、Bunle extras)            {            }        };    }startActivityForResult(new Intent(android.provider.Settings.ACT IONcurleyis)は、0)//ユーザーにGPSのオンを要求する。
パーミッション