main.java的代碼如下:pu" />

黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

Android Location在GPS中的應(yīng)用(一)

系統(tǒng) 2300 0

新建 Android Project,注意選擇Google APIs:

Android Location在GPS中的應(yīng)用(一)

打開(kāi) AndroidManifest.xml,在其中加入GPS使用權(quán)限:

< uses-permission android:name= "android.permission.ACCESS_COARSE_LOCATION" /> < uses-permission android:name= "android.permission.ACCESS_FINE_LOCATION" />

main.java的代碼如下:

public class main extends Activity {

/** Called when the activity is first created. */

private LocationManager locationManager ;

private String provider ;

private Location location ;

private Address address ;

@Override

public void onCreate(Bundle savedInstanceState) {

super .onCreate(savedInstanceState);

setContentView(R.layout. main );

// 獲取 LocationManager 服務(wù)

locationManager = (LocationManager) this

.getSystemService(Context. LOCATION_SERVICE );

// 獲取 Location Provider

getProvider();

// 如果未設(shè)置位置源,打開(kāi) GPS 設(shè)置界面

openGPS();

// 獲取位置

location = locationManager .getLastKnownLocation( provider );

// 顯示位置信息到文字標(biāo)簽

updateWithNewLocation( location );

// 注冊(cè)監(jiān)聽(tīng)器 locationListener ,第 2 3 個(gè)參數(shù)可以控制接收 gps 消息的頻度以節(jié)省電力。第 2 個(gè)參數(shù)為毫秒,

// 表示調(diào)用 listener 的周期,第 3 個(gè)參數(shù)為米 , 表示位置移動(dòng)指定距離后就調(diào)用 listener

locationManager .requestLocationUpdates( provider , 2000, 10,

locationListener );

}

// 判斷是否開(kāi)啟 GPS ,若未開(kāi)啟,打開(kāi) GPS 設(shè)置界面

private void openGPS() {

if ( locationManager .isProviderEnabled(android.location.LocationManager. GPS_PROVIDER )

|| locationManager .isProviderEnabled(android.location.LocationManager. NETWORK_PROVIDER )

) {

Toast. makeText ( this , " 位置源已設(shè)置! " , Toast. LENGTH_SHORT ).show();

return ;

}

Toast. makeText ( this , " 位置源未設(shè)置! " , Toast. LENGTH_SHORT ).show();

// 轉(zhuǎn)至 GPS 設(shè)置界面

Intent intent = new Intent(Settings. ACTION_SECURITY_SETTINGS );

startActivityForResult(intent,0);

}

// 獲取 Location Provider

private void getProvider(){

// 構(gòu)建位置查詢條件

Criteria criteria = new Criteria();

// 查詢精度:高

criteria.setAccuracy(Criteria. ACCURACY_FINE );

// 是否查詢海撥:否

criteria.setAltitudeRequired( false );

// 是否查詢方位角 :

criteria.setBearingRequired( false );

// 是否允許付費(fèi):是

criteria.setCostAllowed( true );

// 電量要求:低

criteria.setPowerRequirement(Criteria. POWER_LOW );

// 返回最合適的符合條件的 provider ,第 2 個(gè)參數(shù)為 true 說(shuō)明 , 如果只有一個(gè) provider 是有效的 , 則返回當(dāng)前 provider

provider = locationManager .getBestProvider(criteria, true );

}

// Gps 消息監(jiān)聽(tīng)器

private final LocationListener locationListener = new LocationListener() {

// 位置發(fā)生改變后調(diào)用

public void onLocationChanged(Location location) {

updateWithNewLocation(location);

}

// provider 被用戶關(guān)閉后調(diào)用

public void onProviderDisabled(String provider){

updateWithNewLocation( null );

}

// provider 被用戶開(kāi)啟后調(diào)用

public void onProviderEnabled(String provider){ }

// provider 狀態(tài)變化時(shí)調(diào)用

public void onStatusChanged(String provider, int status,

Bundle extras){ }

};

// Gps 監(jiān)聽(tīng)器調(diào)用,處理位置信息

private void updateWithNewLocation(Location location) {

String latLongString;

TextView myLocationText = (TextView)findViewById(R.id. text );

if (location != null ) {

double lat = location.getLatitude();

double lng = location.getLongitude();

latLongString = " 緯度 :" + lat + "/n 經(jīng)度 :" + lng;

} else {

latLongString = " 無(wú)法獲取地理信息 " ;

}

myLocationText.setText( " 您當(dāng)前的位置是 :/n" +

latLongString+ "/n" +getAddressbyGeoPoint(location));

}

// 獲取地址信息

private List<Address> getAddressbyGeoPoint(Location location) {

List<Address> result = null ;

// 先將 Location 轉(zhuǎn)換為 GeoPoint

// GeoPoint gp =getGeoByLocation(location);

try {

if (location != null ) {

// 獲取 Geocoder ,通過(guò) Geocoder 就可以拿到地址信息

Geocoder gc = new Geocoder( this , Locale. getDefault ());

result= gc.getFromLocation(location.getLatitude(), location.getLongitude(), 1);

}

} catch (Exception e) {

e.printStackTrace();

}

return result;

}

}

如果,要想在模擬器中看到效果,還需要在 DDMS的Emulator Control面板中進(jìn)行一些設(shè)置。如果你看不到Emulator Control面板,可以從window->Show view->Other…中打開(kāi)它:

Android Location在GPS中的應(yīng)用(一)

Emulator Control面板中,你可以找到一個(gè)Location Controls的地方:

Android Location在GPS中的應(yīng)用(一)

你可以在 Longitude和Latitude中輸入一個(gè)虛擬的經(jīng)緯度,然后點(diǎn)擊Send,可以把模擬器的位置修改為指定位置。此時(shí)運(yùn)行程序,即可看到如圖所示的信息:

Android Location在GPS中的應(yīng)用(一)

有時(shí)候,你可能出現(xiàn)“無(wú)法獲取地理信息”的錯(cuò)誤。這可能是沒(méi)有開(kāi)啟“啟用 GPS衛(wèi)星”選項(xiàng)。不要奇怪,在模擬器中,“使用無(wú)線網(wǎng)絡(luò)”是無(wú)效的,使用該選項(xiàng)無(wú)法獲取地理信息,因?yàn)槟M器中根本沒(méi)有sim卡,也就無(wú)法通過(guò)基站來(lái)定位了。

如果在真機(jī)上就不同了。如果機(jī)器沒(méi)有內(nèi)置 GPS模塊,那么啟用GPS衛(wèi)星選項(xiàng)反而無(wú)法進(jìn)行定位,具體情況只有多試幾次才能明白。

@font-face { font-family: "宋體"; }@font-face { font-family: "Cambria"; }p.MsoNormal, li.MsoNormal, div.MsoNormal { margin: 0cm 0cm 10pt; font-size: 12pt; font-family: "Times New Roman"; }div.Section1 { page: Section1; }

Geocoder需要訪問(wèn)internet,在真機(jī)上調(diào)試請(qǐng)打開(kāi)wifi或者3G網(wǎng)絡(luò)。


Android Location在GPS中的應(yīng)用(一)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論