2011-02-23 13 views
46

हाल ही में मैंने एक शौक के रूप में एंड्रॉइड विकास किया है और एक ऐसे एप्लिकेशन को विकसित करने की तलाश में है जो Google मानचित्र का उपयोग करके उपयोगकर्ता की स्थिति को ढूंढ और ट्रैक कर सके।एक एंड्रॉइड जीपीएस ट्रैकिंग एप्लिकेशन बनाएं

एक बार एप्लिकेशन में एक जीपीएस लॉक होता है, तो एप्लिकेशन ओवरले क्लास का उपयोग करके मार्ग खींचकर अपने आंदोलनों को ट्रैक कर सकता है।

मैंने माइक्रैक जैसे समान अनुप्रयोगों को देखा है जो खुले स्रोत हैं लेकिन वे अभी मेरे लिए बहुत जटिल हैं।

आदर्श रूप में मैं एक आवेदन है कि इस

वह आयात के बिना नीचे मेरी कोड है की तरह लग रहा बनाने के लिए अच्छा लगेगा।

जो मैं करने की कोशिश कर रहा हूं वह भूगर्भों की एक सरणी बना रहा है। हर बार जब स्थान बदलता है तो एक नया भूगर्भीय बनाया जाता है। मैं फिर प्रत्येक भूगर्भ के माध्यम से पुनरावृत्ति करने के लिए लूप के लिए उपयोग करने का प्रयास करता हूं और उनके बीच एक पथ खींचता हूं।

public class Tracking extends MapActivity implements LocationListener { 

LocationManager locman; 
LocationListener loclis; 
Location Location; 
private MapView map; 

List<GeoPoint> geoPointsArray = new ArrayList<GeoPoint>(); 
private MapController controller; 
String provider = LocationManager.GPS_PROVIDER; 
double lat; 
double lon; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.map); 
    initMapView(); 
    initMyLocation(); 
    locman = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    // locman.requestLocationUpdates(provider,60000, 100,loclis); 
    // Location = locman.getLastKnownLocation(provider); 

} 

/** Find and initialize the map view. */ 
private void initMapView() { 
    map = (MapView) findViewById(R.id.map); 
    controller = map.getController(); 
    map.setSatellite(false); 
    map.setBuiltInZoomControls(true); 
} 

/** Find Current Position on Map. */ 
private void initMyLocation() { 
    final MyLocationOverlay overlay = new MyLocationOverlay(this, map); 
    overlay.enableMyLocation(); 
    overlay.enableCompass(); // does not work in emulator 
    overlay.runOnFirstFix(new Runnable() { 
     public void run() { 
      // Zoom in to current location 
      controller.setZoom(24); 
      controller.animateTo(overlay.getMyLocation()); 
     } 
    }); 
    map.getOverlays().add(overlay); 
} 

@Override 
public void onLocationChanged(Location location) { 
    if (Location != null) { 
     lat = Location.getLatitude(); 
     lon = Location.getLongitude(); 
     GeoPoint New_geopoint = new GeoPoint((int) (lat * 1e6), 
       (int) (lon * 1e6)); 
     controller.animateTo(New_geopoint); 

    } 

} 

class MyOverlay extends Overlay { 
    public MyOverlay() { 
    } 

    public void draw(Canvas canvas, MapView mapv, boolean shadow) { 
     super.draw(canvas, mapv, shadow); 

     Projection projection = map.getProjection(); 
     Path p = new Path(); 
     for (int i = 0; i < geoPointsArray.size(); i++) { 
      if (i == geoPointsArray.size() - 1) { 
       break; 
      } 
      Point from = new Point(); 
      Point to = new Point(); 
      projection.toPixels(geoPointsArray.get(i), from); 
      projection.toPixels(geoPointsArray.get(i + 1), to); 
      p.moveTo(from.x, from.y); 
      p.lineTo(to.x, to.y); 
     } 
     Paint mPaint = new Paint(); 
     mPaint.setStyle(Style.STROKE); 
     mPaint.setColor(0xFFFF0000); 
     mPaint.setAntiAlias(true); 
     canvas.drawPath(p, mPaint); 
     super.draw(canvas, map, shadow); 
    } 
} 

@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 
protected boolean isRouteDisplayed() { 
    // TODO Auto-generated method stub 
    return false; 
} 
} 

एप्लिकेशन त्रुटियों के बिना ठीक चलाता है लेकिन कोई रास्ता नहीं खींचा जाता है, स्थान बिंदु जैसे ही मैं चलता हूं।

किसी भी मदद की सराहना की जाएगी धन्यवाद।

+2

मुझे आपके कोड में रूचि है और मुझे लगता है कि यह सरल एंड्रॉइड जीपीएस मैपिंग के लिए सहायक है। मैं पूछना चाहता हूं कि आपको उपरोक्त कोड के साथ आपकी समस्या का समाधान मिल रहा है या नहीं? –

+0

@ डेविड मेरी मदद करें मुझे आपके प्रश्न की तरह एक ही समस्या है। – Roadies

+0

हाँ ... मैं भी ... मुझे भी दिलचस्पी है @ डेविड, क्या आप अभी भी वहां हैं? – gumuruh

उत्तर

22

एंड्रॉइड मोबाइल एप्लिकेशन ओपन-जीपीस्ट्रैकर के लिए स्रोत कोड जो आपने सराहना की है here उपलब्ध है।

आप SVN क्लाइंट अनुप्रयोग या Git के माध्यम से उपयोग कर कोड चेकआउट कर सकते हैं:

स्रोत कोड डिबगिंग होगा निश्चित रूप से आपकी मदद करता है।

+0

क्या आप कृपया मुझे बता सकते हैं। Http क्लाइंट, http mime, signpost ..... को जोड़ने के लिए gpstracker – bhargavkumar040

+0

डेवलपर्स कोड @chiranjib या @ToonKrijthe के लिए कोई ट्यूटोरियल है? – gumuruh

+0

चेकआउट कोड में असमर्थ। दोनों गिट और svn url काम नहीं कर रहा है –

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