- Tôi có ứng dụng Android có Google Maps V2 như một phần chức năng.
Tôi cóỨng dụng bắt đầu tìm kiếm GPS ngay trên khởi động ứng dụng, không phải khi cần
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
trong manifest của tôi, và mọi thứ khác cần thiết cho bản đồ để làm việc.
- Ứng dụng của tôi không bắt đầu trên màn hình với bản đồ.
Bây giờ câu hỏi là tại sao điện thoại của tôi (Galaxy Nexus, chỉ trong trường hợp) bắt đầu hiển thị biểu tượng GPS trên thanh trạng thái ngay khi ứng dụng bắt đầu, nhưng không phải khi tôi vào màn hình với bản đồ và bắt đầu làm việc với nó ? Tôi không cần phải theo dõi vị trí của mình và sử dụng pin khi tôi không ở trên màn hình bản đồ.
Ví dụ: Messenger ứng dụng cũng sử dụng GPS cho bản đồ nhưng biểu tượng chỉ hiển thị khi bạn mở màn hình bản đồ, không phải ngay trên hoạt động đầu tiên được khởi chạy.
Googled trong vài giờ nhưng không thấy gì cả. Bất kỳ trợ giúp nào sẽ được đánh giá cao!
được sửa đổi:
lớp MapActivity
private LocationListener mLocationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
};
@Override
public void onCreate(Bundle savedState) {
super.onCreate(savedState);
setContentView(R.layout.map_activity);
startGPS();
initMap();
mMapView = (MapView) findViewById(R.id.map_google_map);
mMapView.onCreate(null);
mGoogleMap = mMapView.getMap();
if (mGoogleMap != null) {
customizeGoogleMap();
loadAndFillMap();
}
}
private void startGPS() {
mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mLocationListener);
}
private void initMap() {
try {
MapsInitializer.initialize(this);
} catch (GooglePlayServicesNotAvailableException e) {
e.printStackTrace();
}
}
private void customizeGoogleMap() {
mGoogleMap.getUiSettings().setMyLocationButtonEnabled(true);
mGoogleMap.setMyLocationEnabled(true);
}
private void loadAndFillMap() {
new LoadAndFillMapTask().execute();
}
private class LoadAndFillMapTask extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
String address = Session.appData().getSelectedAddress();
mMapLocation = Api.getMapApi().getMapLocation(address);
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
fillMap();
}
}
private void fillMap() {
// filling Google Map with markers etc.
}
@Override
public void onDestroy() {
super.onDestroy();
if (mMapView != null) {
mMapView.onDestroy();
}
mLocationManager.removeUpdates(mLocationListener);
}
Chúng ta có thể thấy một số mã của các hoạt động chính xin vui lòng? – mithrop
@mithrop Hoạt động chính có chứa hoàn toàn không có gì liên quan đến bản đồ google, tôi thành thật thấy không có điểm trong việc hiển thị những gì đang xảy ra ở đó. Hơn nữa các ứng dụng bắt đầu với màn hình giật gân (tại điểm đó biểu tượng GPS đã được hiển thị trong thanh trạng thái) mà chỉ chứa một ý định để hoạt động chính bị trì hoãn trong 1 giây. – Makks129