2011-12-23 42 views
6

Tôi muốn hiển thị vị trí hiện tại của mình, nhưng nó cho tôi thấy vĩ độ và kinh độ mà tôi đã đặt trên dòng lệnh! Nếu tôi không thiết lập các tham số trên dòng lệnh, nó cho tôi thấy vĩ độ và kinh độ có trong Eclipse!vị trí hiện tại của gps android

Có ai có ý tưởng về điều đó không? Tôi đang thử nghiệm với AVD.

Tôi đã thực hiện kiểm tra để xem liệu vị trí của tôi đã được bật chưa, nhưng chưa. Tôi không chắc tại sao lại như thế.

Đây là mã của tôi:

package com.manita.mapuse; 


import java.io.InputStream; 

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 

import android.content.Context; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.KeyEvent; 
import android.widget.Toast; 

import com.google.android.maps.GeoPoint; 
import com.google.android.maps.MapActivity; 
import com.google.android.maps.MapController; 
import com.google.android.maps.MapView; 
import com.google.android.maps.MyLocationOverlay; 



public class MapuseActivity extends MapActivity implements LocationListener { 

    private MapView mapView = null; 
     private LocationManager lm = null; 
     private double lat = 0; 
     private double lng = 0; 
     private double alt = 0; 
     private MapController mc = null; 
     private MyLocationOverlay myLocation = null; 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     mapView = (MapView) this.findViewById(R.id.mapView); 
     mapView.setBuiltInZoomControls(true); 

     lm = (LocationManager) this.getSystemService(LOCATION_SERVICE); 
     lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 0, this); 
     lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10000, 0, 
      this); 

     mc = mapView.getController(); 
     mc.setZoom(10); 

     myLocation = new MyLocationOverlay(getApplicationContext(), mapView); 
     myLocation.runOnFirstFix(new Runnable() { 
      public void run() { 
      mc.animateTo(myLocation.getMyLocation()); 
      mc.setZoom(10); 
      } 
     }); 


     LocationManager locationManager; 
     String context = Context.LOCATION_SERVICE; 
     locationManager = (LocationManager)getSystemService(context); 
     String provider = LocationManager.GPS_PROVIDER; 
     lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 0, this); 
     Location location = locationManager.getLastKnownLocation(provider); 
     locationManager.getProvider(provider); 
     if(!locationManager.isProviderEnabled(provider)){ 
      locationManager.setTestProviderEnabled(provider, true); 
      } 
      boolean enabled = locationManager.isProviderEnabled(provider); 
      if(enabled){ 

       Toast.makeText(getBaseContext(), 
         "provide enabled : Latitude = " + lat + " Longitude = " + lng+" Altitude = " + alt, 
         Toast.LENGTH_SHORT).show(); 

      } 
      else{ 
       Toast.makeText(getBaseContext(), 
         "provider disabled : Latitude = " + lat + " Longitude = " + lng+" Altitude = " + alt, 
         Toast.LENGTH_SHORT).show(); 

      } 
      if(location!=null){ 
       lat = location.getLatitude(); 
       lng = location.getLongitude(); 
       alt = location.getAltitude(); 
       Toast.makeText(getBaseContext(), 
         "providerrr enabled : Latitude = " + lat + " Longitude = " + lng+" Altitude = " + alt, 
         Toast.LENGTH_SHORT).show(); 
      } 
      else{ 
       Toast.makeText(getBaseContext(), 
         "location not found : Latitude = " + lat + " Longitude = " + lng+" Altitude = " + alt, 
         Toast.LENGTH_SHORT).show(); 
      } 



     mapView.getOverlays().add(myLocation); 
     if (myLocation.isMyLocationEnabled()!=false) 
     { 
      GeoPoint p =myLocation.getMyLocation(); 
      lat= p.getLatitudeE6(); 
      lng= p.getLongitudeE6(); 
      alt = location.getAltitude(); 
      Toast.makeText(getBaseContext(), 
        "geolocalisation activé lat: "+lat+ " long: " +lng +" Altitude = " + alt, 
        Toast.LENGTH_SHORT).show(); 
     } 
     else 
     { 

      Toast.makeText(getBaseContext(), 
        "geolocalisation desactivée" , 
        Toast.LENGTH_SHORT).show(); 
     } 

     // appel de la fonction insert values 
     insertvalues(lat, lng); 
     } 

     @Override 
     protected void onResume() { 
     super.onResume(); 
     myLocation.enableMyLocation(); 
     myLocation.enableCompass(); 
     } 

     @Override 
     protected boolean isRouteDisplayed() { 
     return false; 
     } 

     @Override 
     public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_S) { 
      mapView.setSatellite(!mapView.isSatellite()); 
      return true; 
     } 
     if (keyCode == KeyEvent.KEYCODE_T) { 
      mapView.setSatellite(!mapView.isTraffic()); 
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
     } 

     @Override 
     public void onLocationChanged(Location location) { 
     lat = location.getLatitude(); 
     lng = location.getLongitude(); 
     Toast.makeText(
      getBaseContext(), 
      "Location change to : Latitude = " + lat + " Longitude = " 
       + lng, Toast.LENGTH_SHORT).show(); 
     GeoPoint p = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6)); 
     mc.animateTo(p); 
     mc.setCenter(p); 
     } 

     @Override 
     public void onProviderDisabled(String provider) { 
     } 

     @Override 
     public void onProviderEnabled(String provider) { 
     } 

     @Override 
     public void onStatusChanged(String provider, int status, Bundle extras) { 
     } 


     ///// insert valeurs .... 
     public void insertvalues(double lat, double lng){ 




      //http post c à d envoi des données 
      try{ 
       HttpClient httpclient = new DefaultHttpClient(); 
       HttpPost httppost = new 

       HttpPost("http://www.pizza-paris.com/clic/marwa/test/form.php?latitude="+lat+"&longitude="+lng); 

       HttpResponse response = httpclient.execute(httppost); 
       HttpEntity entity = response.getEntity(); 
       InputStream is = entity.getContent(); 
       Log.i("postData", response.getStatusLine().toString()); 

      } 

      catch(Exception e) 
      { 
       Log.e("log_tag", "Error in http connection "+e.toString()); 
      }  


      } 
} 

Cảm ơn!

+0

gps sẽ không hoạt động trong trình giả lập. Hãy thử mã của bạn trên một thiết bị thực. – Snicolas

+0

Vui lòng kiểm tra liên kết này có thể giúp bạn. [Vị trí GPS trong Trình giả lập Android] (http://stackoverflow.com/questions/2279647/how-to-emulate-gps-location-in-the-android-emulator) –

+0

nhờ Snicolas mybe câu trả lời của bạn là những gì tôi đang tìm kiếm nhưng làm thế nào tôi có thể nhận được các tập tin apk? –

Trả lời

1

Trừ khi PC/Mac của bạn có GPS, AVD không có khả năng phát hiện vị trí của bạn. Kiểm tra chương trình của bạn bằng thiết bị thực hoặc bằng cách nhập các giá trị theo cách thủ công.

+0

Cảm ơn tuyệt vời :) –

+0

Hoặc sử dụng 'sửa lỗi địa lý 'http://stackoverflow.com/questions/2279647/how-to-emulate-gps-location-in-the-android-emulator –

4

Mở trình quản lý Thiết bị ảo và chỉnh sửa klick. Tại phần Hardware click New và thêm hỗ trợ GPS và thay đổi giá trị thành true. Bây giờ bắt đầu trình mô phỏng và mở một bảng điều khiển. Nếu trình mô phỏng khởi động kiểu đầy đủ trong bảng điều khiển telnet localhost 5554. Khi kết nối telnet được thiết lập, bạn có thể đặt ở các vị trí như sau: geo fix 21.42 42

+0

có nó nhận được vị trí tôi đặt trên localhost nhưng tôi muốn nó hiển thị vị trí hiện tại của tôi có nghĩa là tôi đang ở đâu !!! –

+0

Tìm hiểu tọa độ hiện tại của bạn và nhập chúng bằng cách sử dụng 'sửa chữa địa lý 'hoặc đi và mua một android. –

3

10 Để thêm câu trả lời hiện có, nếu bạn thực sự cần kiểm tra chức năng trên trình giả lập, bạn có thể sử dụng vị trí mô phỏng. Bạn có thể tìm thấy thêm ở đây http://developer.android.com/guide/topics/location/obtaining-user-location.html#MockData.

Hãy nhớ rằng bạn phải thêm quyền cần thiết cho điều này (ACCESS_MOCK_LOCATION).

Hy vọng điều này sẽ hữu ích!

+0

vâng tôi đã làm nhưng tôi muốn nó hiển thị vị trí hiện tại của tôi không phải là locatiob trong giả! –

+0

Sau đó, bạn cần một điện thoại thông minh với gps hoặc gps với máy tính của bạn. –

+0

có !! phiên bản ứng dụng của tôi là 7 !! tôi có thể kiểm tra nó với iphone? –

Các vấn đề liên quan