2011-12-15 18 views
5

नहीं कहा गया है, मैं एक नक्शा से संबंधित एंड्रॉइड ऐप बनाने की कोशिश कर रहा हूं, लेकिन मुझे एहसास हुआ कि मेरे ऐप का ऑनलाक्शन चेंज किया गया नहीं था, इसलिए मानचित्र हमेशा डिफ़ॉल्ट क्षेत्र (यूएस) पर रहता है।ऑनलाक्शन चेंज को

मेरी कोड:

public class MapMainActivity extends MapActivity 
implements OnClickListener, LocationListener { 

MapView mapView; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.map_main); 

    //reference 
    mapView = (MapView)findViewById(R.id.map_view); 
    mapView.setBuiltInZoomControls(true); 
    this.findViewById(R.id.btn_satellite).setOnClickListener(this); 
    this.findViewById(R.id.btn_street).setOnClickListener(this); 

}//onCreate 

@Override 
protected void onResume() { 
    super.onResume(); 

    Toast.makeText(this, "GPS tracking started", 
     Toast.LENGTH_SHORT).show(); 

// Start location updates; 5s/5m 
    LocationManager locManager = (LocationManager)getSystemService(
     Context.LOCATION_SERVICE); 
    locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 
     5000, 0, this); 

    Criteria crit = new Criteria(); 
    crit.setAccuracy(Criteria.ACCURACY_FINE); 
    String provider = locManager.getBestProvider(crit, true); 
    Location loc = locManager.getLastKnownLocation(provider); 

}//onResume 

@Override 
protected void onPause() { 
    super.onPause(); 

    Toast.makeText(this, "GPS tracking stopped", 
     Toast.LENGTH_SHORT).show(); 

    LocationManager locManager = (LocationManager)getSystemService(
      Context.LOCATION_SERVICE); 
     locManager.removeUpdates(this); 
}//onPause 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    if(v == findViewById(R.id.btn_street)) 
    { 
     mapView.setSatellite(false); 
    }//street view 

    else if (v == findViewById(R.id.btn_satellite)) 
    { 
     mapView.setSatellite(true); 
    } 
}//onClick 

@Override 
protected boolean isRouteDisplayed() { 
    // TODO Auto-generated method stub 
    return false; 
}//isRouteDisplayed 

@Override 
public void onLocationChanged(Location location) { 
    // TODO Auto-generated method stub 
    double lat = location.getLatitude(); 
    double lon = location.getLongitude(); 

    TextView txtLat = (TextView)findViewById(R.id.txt_lat); 
    txtLat.setText(String.format("%.6f", lat)); 
    TextView txtLon = (TextView)findViewById(R.id.txt_lon); 
    txtLon.setText(String.format("%.6f", lon)); 

    MapView map = (MapView)findViewById(R.id.map_view); 
    map.getController().animateTo(new GeoPoint((int)(lat*1E6),//1000000), 
     (int)(lon*1E6))); 
}//onLocationChanged 

@Override 
public void onProviderDisabled(String provider) { 
    // TODO Auto-generated method stub 
    Toast.makeText(this, "GPS disabled", 
      Toast.LENGTH_SHORT).show(); 
}//onProviderDisabled 

@Override 
public void onProviderEnabled(String provider) { 
    // TODO Auto-generated method stub 
    Toast.makeText(this, "GPS enabled", 
      Toast.LENGTH_SHORT).show(); 
}//onProviderEnabled 

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

}//onStatusChanged 


}//class 

मेरी लॉग बिल्ली के पूरे जब मैं अपने डिवाइस के माध्यम से अनुप्रयोग चलाने (16/12/2011)

D/InputTransport(5357): Input channel constructed: name='40baf680 Toast (client)', ashmemFd=54, receivePipeFd=57, sendPipeFd=58 

I/MapActivity(5357): Handling network change notification:CONNECTED 

E/MapActivity(5357): Couldn't get connection factory client 

I/ViewRoot(5357): [email protected] DRAWING : sg.edu.tp/sg.edu.tp.SIP_TestMapActivity 

I/ViewRoot(5357): [email protected] is completed : sg.edu.tp/sg.edu.tp.SIP_TestMapActivity 

I/ViewRoot(5357): [email protected] DRAWING : Toast 

I/ViewRoot(5357): [email protected] is completed : Toast 

D/InputTransport(5357): Input channel destroyed: name='40baf680 Toast (client)', ashmemFd=54, receivePipeFd=57, sendPipeFd=58 

प्रकट:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="sg.edu.tp" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="10" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <activity 
      android:label="@string/app_name" 
      android:name=".SIP_MLT_TestActivity" > 
      <intent-filter > 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <uses-library android:name="com.google.android.maps" /> 
     <activity android:name=".SIP_TestMapActivity"></activity> 
     <activity android:name=".SIP_TestDraw1Activity"></activity> 
     <activity android:name=".SIP_TestDraw2Activity"></activity> 
    </application> 

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

</manifest> 
+0

आपने स्थान कैसे बदल दिया ?? – freshDroid

+0

एर ... मैं वास्तव में आपका मतलब प्राप्त नहीं करता हूं। लेकिन, चूंकि मैं राज्य में नहीं हूं, जब मैं ऐप चलाता हूं तो इसे राज्य मानचित्र प्रदर्शित नहीं करना चाहिए। – Jovi

+0

r आप इसे एमुलेटर – freshDroid

उत्तर

1

क्या आप यूएसबी के साथ अपनी dev मशीन पर tethered बैठे और लॉगकैट देखते हुए परीक्षण करते समय परीक्षण कर रहे हैं?

तो देव मशीन पर बैठे, मुझे लगता है कि आप 5 के रूप में आप requestLocationUpdates

करने के लिए अपने कॉल में अनुरोध API डॉक्स से एक स्थान परिवर्तन घटना चलाने के लिये आवश्यक मीटर की दूरी पर ले जाने में सक्षम नहीं कर रहे हैं:।

यदि न्यूनतम वितरण 0 से अधिक है, तो स्थान केवल डिवाइस को न्यूनतम डिस्टेंस मीटर द्वारा चलाए जाने पर प्रसारित किया जाएगा।

उस कॉल में न्यूनतम दूरी परम को शून्य करने की कोशिश करें और देखें कि क्या होता है।

locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,5000, 0, this); 

शायद आप परीक्षण के अलावा किसी अन्य चीज़ के लिए शून्य पर नहीं छोड़ना चाहते हैं।

अगर वह does not मदद आप देखना है कि अपने जीपीएस अपने onResume में कुछ इस तरह करने से सब पर काम कर रहा है, के बाद आप locationUpdates के लिए पूछने की कोशिश कर सकते:

Criteria crit = new Criteria(); 
crit.setAccuracy(Criteria.ACCURACY_FINE); 
String provider = lm.getBestProvider(crit, true); 
Location loc = lm.getLastKnownLocation(provider); 

और देखें कि आप अच्छा स्थान मिल रहा है जानकारी।

+0

से चलाता हूं, हाँ, मैं इसे अपने कॉम पर प्लग किए गए यूएसबी के साथ परीक्षण करता हूं। कुछ भी तब नहीं होता जब मैं 5 से 0 में बदल गया।मैंने ऐप का परीक्षण ऑनलाक्शन चेंज विधि पर डाले गए लॉग के साथ किया है, और जब मैं ऐप चलाता हूं, तो लॉग दिखाई नहीं देता है। तो मेरा अनुमान है कि यह उस विधि को भी दर्ज नहीं करता है। – Jovi

+0

हाय, कुछ भी नहीं होने लगता है। मैंने कोड और मेरे लॉगकाट को ऊपर अपडेट किया है। कृपया मदद करे। धन्यवाद =) – Jovi

+0

ऑनयूज के अंत में कुछ लॉगिंग करने का प्रयास करें और देखें कि स्थान प्रदाता से कुछ वापस प्राप्त करने के लिए यह सुनिश्चित करने के लिए कि कौन सा स्थान शामिल है। – mmeyer

0

स्थान स्टूफ मुश्किल है। एक तरफ, आपको हाल ही में स्थान की तेज़ी से आवश्यकता है, दूसरी तरफ सबसे अच्छा परिशुद्धता संभव है कि आप बैटरी को तेजी से निकालना पसंद नहीं करते हैं। एपीआई स्तरों के बीच मतभेद भी हैं। विस्तृत विवरण के लिए इस मैनुअल देखें:

http://android-developers.blogspot.com/2011/06/deep-dive-into-location.html

अपने मूल प्रश्न के लिए के रूप में - requersting स्थान अपडेट स्थान प्रबंधक को सिर्फ एक खुलने और पहली कुछ बदलावों के बाद आप उन अपडेट भेजने के लिए। ऐसा करने के लिए कोई बाध्य नहीं है। यूएसबी केबल पर पट्टा होने पर स्नैप स्थान परिवर्तनों का पता लगाने के लिए आपका जीपीएस सिस्टम पर्याप्त नहीं हो सकता है (और निश्चित रूप से नहीं)। परीक्षण उद्देश्यों के लिए, आप नकली प्रदाता बना सकते हैं और इसे बाहरी एप्लिकेशन के साथ कुशल बना सकते हैं।

http://developer.android.com/reference/android/location/LocationManager.html#addTestProvider%28java.lang.String,%20boolean,%20boolean,%20boolean,%20boolean,%20boolean,%20boolean,%20boolean,%20int,%20int%29

+0

हाय मदद करने के लिए धन्यवाद, क्या आप मुझे बता सकते हैं कि मैं कोड कैसे और कहां रखना चाहिए? thks – Jovi

संबंधित मुद्दे