Android location物件為空
思路原理:
(1)獲取LocationManager例項,通過getSystemService方法,傳入Context.LOCATION_SERVICE引數。
(2)獲取可用的位置提供器,有GPS_PROVIDER、NETWORK_PROVIDER、PASSIVE_PROVIDER三種,前兩種比較常用。
(3)將(2)獲取到的位置提供器傳入LocationManager的方法getLastKnownLocation,即可獲取Location資訊。
如果移動裝置地理位置不斷髮生變化,則實時更新需要進行如下步驟:
(4)呼叫LocationManager的requestLocationUpdates方法,第一個引數是位置提供器,第二個引數是監聽位置變化的時間間隔(毫秒),第三個引數是監聽位置變化的距離間隔(米),第四個引數是LocationListener監聽器
(5)當位置發生變化後,就會呼叫監聽器的onLocationChanged方法。
(6)為了省電,節約資源,當程式關閉後,呼叫LocationManager的removeUpdates方法移除監聽器。
獲取許可權
修改AndroidManifest.xml,新增如下程式碼:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
程式碼片段
package com.example.locationtest; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.widget.TextView; public class MainActivity extends ActionBarActivity { LocationManager locationManager; TextView textView; Location location; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.textView); locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); // 獲取location物件 location = getBestLocation(locationManager); updateView(location); locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 8, new LocationListener() { @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { updateView(locationManager .getLastKnownLocation(provider)); } @Override public void onProviderDisabled(String provider) { updateView(null); } @Override public void onLocationChanged(Location location) { location = getBestLocation(locationManager);// 每次都去獲取GPS_PROVIDER優先的location物件 updateView(location); } }); } private void updateView(Location location) { if (location != null) { StringBuffer sb = new StringBuffer(); sb.append("位置資訊:\n"); sb.append("經度:" + location.getLongitude() + ", 緯度:" + location.getLatitude()); textView.setText(sb.toString()); } else { textView.setText(""); } } /** * 獲取location物件,優先以GPS_PROVIDER獲取location物件,當以GPS_PROVIDER獲取到的locaiton為null時 * ,則以NETWORK_PROVIDER獲取location物件,這樣可保證在室內開啟網路連線的狀態下獲取到的location物件不為空 * * @param locationManager * @return */ private Location getBestLocation(LocationManager locationManager) { Location result = null; if (locationManager != null) { result = locationManager .getLastKnownLocation(LocationManager.GPS_PROVIDER); if (result != null) { return result; } else { result = locationManager .getLastKnownLocation(LocationManager.NETWORK_PROVIDER); return result; } } return result; } }
相關推薦
Android location物件為空
思路原理: (1)獲取LocationManager例項,通過getSystemService方法,傳入Context.LOCATION_SERVICE引數。 (2)獲取可用的位置提供器,有GPS_PROVIDER、NETWORK_PROVIDER、PASSIVE_P
android防止資料被釋放獲取物件為空的幾點措施
1.將大多數的context使用你的application替代 public class MyApplication extends Application{ private static MyApplication app; @Overr
LOCaTION獲取為空為什麽
5% music .com 獲取 com ati list aid 什麽 MENU%E7%9A%84%E5%AE%9E%E4%BE%8B%EF%BC%88%E5%A4%9A%E7%BA%A7%E8%8F%9C%E5%8D%95%EF%BC%89 http://music.
javascript中怎麼判斷物件{}為空
時候通過AJAX方法呼叫返回的是一個JSON物件,而這個物件可能在開發過程中會沒有資料是一個空{}。 JavaScript判斷object/json 是否為空,可以使用jQuery的isEmptyObject()方法。 function isEmptyObject(obj) {
c標籤判斷集合是否為空,js物件為空如何判斷,el表示式判斷物件集合為空
JSP頁面開頭要包含 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functio
mybatis查詢資料庫返回結果物件為空
當實體類屬性與表中列名不一樣時,需要定義resultMap,否則查詢物件為空 resultMap id="person" type="Person"> <result pr
JavaScript 判斷物件為空的方法
文章目錄 1 背景 2 方法 2.1 Jquery 的isEmptyObject 2.2 node 2.3 判斷物件屬性個數 1 背景 經常在express 框架中處理body引數等等操作,而有時經
iOS-物件為空的判斷(nil、null)
在開發中,會遇到很多空的情況,有時候取得物件(null),還有時候會得到<null>的情況,我們需要判斷是否為空,進行return id result; // 針對(null)這種情況 i
springboot+mybatis+springmvc實現資料庫增加資料,除錯時service實現類中mapper物件為空
問題:service實現類裡面執行到Mapper.save(Entity)時,捕捉到空指標異常 通過除錯,發現Mapper為空 解決途徑: 在瀏覽多個回答後,在論壇裡面看到有人回答說,controller層的方法中new 了*ServiceImpl()導致,如下圖 解決方法:註釋掉該條
Freemaker中判斷物件為空 ??與!的區別
UserEntity: public class UserEntity{ /** * 使用者ID */ private String userId; /** * 賬號 */ private String account;
HandlerInterceptor裡@Autowired物件為空的解決方法
That's because Spring isn't managing your PagePopulationInterceptor instance. You are creating it yourself in the below (攔截器內使用@Autowired時出現了null,這是由於你的spr
mybatis collection 一對多對映返回的物件為空的處理
我這裡是一個任務對應多個用例,是一對多的關係,直接上程式碼: package com.gameloft9.demo.dataaccess.model.task; import java.util.ArrayList; import java.util.Date;
JS判斷頁面物件為空的幾種寫法
第一種: function isEmptyObject(e) { var t; for (t in e) return !1; return !0 } 第二種: function isEmptyObject(e) {
js判斷陣列、物件為空或者不存在
if(typeof(arr)=='undefined'?false:(arr.length==0?false:true)){ console.log('陣列不為空') } else { console.log('陣列不存在或者為空') } if(typeof
當物件為空時get取值造成的錯誤
System.out.println("查詢到的學號和密碼:"+student.getStudent_id()+"和"+student.getPassword());當student物件為空時取值會造成錯誤
Uniyt熱更新——LuaFrameWork學習(三)判斷unity裡物件為空
在遊戲製作過程中我們經常會Destroy一些沒用的GameObject,那麼在ulua裡我們怎麼樣來判斷我們的引用被Destroy了呢,這裡要感謝阿盟哥,他已經為我們解決了這個問題,在他寫的Globa
@RequestBody物件為空,異常Required request body is missing的解決辦法
由於與前端互動的過程當中,都是用json資料與前端進行互動,這樣想取出整個傳送過來的json資料的時候,就需要用到@RequestBody這個註解,前端傳送資料的格式如下://測試傳送json資料 $
WebApi Post引數物件,伺服器端引數物件為空的問題
最近在研究WebApi,在實際的工作中遇到了一個問題:在將引數物件MSG2的例項通過Post至伺服器端的時候, public static string SetMessageOperationResult(MSG2 model) {
DTO的理解以及spring遇到的一個問題註解方式物件為空
之前不明白有些框架中為什麼要專門定義DTO來繫結表現層中的資料,為什麼不能直接用實體模型呢,有了DTO同時還要維護DTO與Model之間的對映關係,多麻煩。 然後看了這篇文章中的討論部分才恍然大悟。 摘兩個比較有意義的段落。 表現層與應用層之間是通過資料傳輸物件(DTO)進
json傳入後臺物件為空
前端程式碼: var cmopSmsExt={list:[]}; function onAfterEdit(rowIndex, rowData,changes){ if(changeBefore!