2013-09-30 5 views
0

두 개의 위치 사이의 도로 거리를 구하고 있습니다. 에뮬레이터에서 정확한 출력을 얻고 있습니다.하지만 앱을 연 후에 장치에서 코드를 실행할 때 그것의주는 힘을 닫습니다. 기기에서 왜 이런 일이 발생하는지 알 수 없습니다.안드로이드의 두 위치 (도로 거리) 사이의 거리가 실제 장치에서 작동하지 않음

public class MainActivity extends Activity implements LocationListener,OnClickListener{ 

private GoogleMap mGoogleMap; 
private Spinner mSprPlaceType; 
private String[] mPlaceType=null; 
private double mLatitude=0; 
private double mLongitude=0; 
private LatLng currentLatLng; 
private Context mContext; 

@Override 
public void onCreate(Bundle savedInstanceState) { 


    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    mContext=this; 
    Toast.makeText(mContext, "oncreate..",Toast.LENGTH_SHORT).show(); 
    LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
    boolean enabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); 

    if (!enabled) { 
     Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
     startActivity(intent); 
    } 
    Criteria criteria = new Criteria(); 
    String provider = locationManager.getBestProvider(criteria, false); 
    Location location = locationManager.getLastKnownLocation(provider); 
    if(location!=null){ 
     onLocationChanged(location); 
    } 
    locationManager.requestLocationUpdates(provider, 20000, 0, this); 

    String str=GetRoutDistane(mLaitude, mLongitude, END_LATITUDE,END_LONGITUDE); 
    Toast.makeText(mContext, "distance..."+str,Toast.LENGTH_SHORT).show(); 

} 

public String GetRoutDistane(double startLat, double startLong, double endLat, double endLong) 
{ 
    String Distance = "error"; 
    String Status = "error"; 
    try { 

     parser_Json PJ=new parser_Json(mContext); 
     JSONObject jsonObj = parser_Json.getJSONfromURL("http://maps.googleapis.com/maps/api/directions/json?origin="+startLat+","+startLong+"&destination="+endLat+","+endLong+"&sensor=true"); 
     Status = jsonObj.getString("status"); 
     Toast.makeText(mContext, "status.."+Status,Toast.LENGTH_SHORT).show(); 
     if(Status.equalsIgnoreCase("OK")) 
     { 
      JSONArray routes = jsonObj.getJSONArray("routes"); 
      JSONObject zero = routes.getJSONObject(0); 
      JSONArray legs = zero.getJSONArray("legs"); 
      JSONObject zero2 = legs.getJSONObject(0); 
      JSONObject dist = zero2.getJSONObject("distance"); 
      Distance = dist.getString("text"); 
     } 
     else 
     { 
      Distance = "Too Far"; 
     } 
    } catch (JSONException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return Distance; 
} 

@Override 
public void onLocationChanged(Location location) { 
    mLatitude = location.getLatitude(); 
    mLongitude = location.getLongitude(); 
    currentLatLng = new LatLng(mLatitude, mLongitude); 
} 

@Override 
public void onProviderDisabled(String provider) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void onProviderEnabled(String provider) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void onStatusChanged(String provider, int status, Bundle extras) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void onClick(View v) { 
    Button b = (Button)v; 
    Toast.makeText(MainActivity.this, b.getText() + " Clicked", Toast.LENGTH_SHORT).show();// TODO Auto-generated method stub 

} 
} 

XML 몇 분 또는 몇 미터 말의 간격으로 기록 된 두 점 사이의 거리를 찾는 시도 않은 파일 -

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".MainActivity" > 

<TextView 
    android:id="@+id/tt" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"  
    android:text="get distance between two locations" /> 

+0

어디서 parser_Json을 얻었습니까?! – Pedrum

답변

0

?

시작 지점과 끝 지점 사이의 거리를 계산하는 대신 이동 경로를 추적하고 중간 지점의 거리를 계산하십시오. 거리의 합계가 최종 거리입니다.

당신이 뭄바이 푸네에서 여행 싶어처럼

, 당신은

편집 난 당신이 길에 여행을 그냥 직접하지 않는 가정 ... 몇 분 간격으로 위치를 저장하기에 유지하고 중간 거리를 계산 계산.

+0

문제는 거리 또는 위치를 계산하는 것이 아니라 실제 device.please가 아닌 에뮬레이터에서 올바르게 작동하는 것이 다시 내 질문을 통과하는 것입니다. –

+0

@yuva 그래서 무슨 문제 있어요? 귀하의 질문은 약간 혼란 스럽습니다. –

+0

@yuva 어떤 요청이 시간이 걸리는지 알아낼 수 있도록 logcat을 붙여주세요. – Pallavi