दिलचस्प पोस्ट
मैं @ Html.LabelFor टेम्पलेट को ओवरराइड कर सकता / सकती हूं? गोलाकार कोनों के साथ संपादन टेक्स्ट कैसे बनाएं? OPENQUERY में मापदंडों सहित IPhone अनुप्रयोगों की चोरी को कम करना स्थिर तरीके धागे सुरक्षित हैं जावास्क्रिप्ट का उपयोग करने के लिए छवि का आकार (ऊंचाई और चौड़ाई) कैसे प्राप्त करें? मीडिया प्रश्नों में "स्क्रीन" और "केवल स्क्रीन" में क्या अंतर है? एक्सएचआर अनुरोध से ब्लॉब डेटा प्राप्त करना डीजेango टेम्प्लेट में डिक्शनरी में डिक्शनरी को कैसे पुनरावृत्त करें? जावास्क्रिप्ट: अल्फ़ान्यूमेरिक स्ट्रिंग की प्राकृतिक प्रकार की एंड्रॉइड टॉगल बटन कस्टम देखो 'सुडो मणि इंस्टॉलेशन' या 'मणि इंस्टॉलेशन' और रत्न रत्न एडीटी और एसडीके उपकरण v17 के अपडेट के बाद जीएसएन नोक्लास डीफफाउंड एरर कैसे ठीक जावा निष्पादक का उपयोग करने के लिए? छवि तुलना – तेज एल्गोरिथ्म

डिवाइस पर Android नकली स्थान?

मैं भौतिक डिवाइस (नेक्सस वन) पर अपना स्थान कैसे बना सकता हूं? मुझे पता है कि आप इम्यूलेटर नियंत्रण कक्ष में एमुलेटर के साथ ऐसा कर सकते हैं, लेकिन यह एक भौतिक डिवाइस के लिए काम नहीं करता है।

वेब के समाधान से एकत्रित समाधान "डिवाइस पर Android नकली स्थान?"

ऐसा करने का एकमात्र तरीका है नकली स्थान प्रदाता का उपयोग करना

आपको अपनी सेटिंग में विकास पैनल में नकली स्थान सक्षम करने और जोड़ना होगा

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

आपके प्रकट होने के लिए

अब आप अपने कोड में जा सकते हैं और अपना खुद का नकली स्थान प्रदाता बना सकते हैं और इस प्रदाता के स्थान को निर्धारित कर सकते हैं।

यदि आप इस फोन का केवल विकास प्रयोगशाला में उपयोग करते हैं, तो एक मौका है कि आप अन्य डिवाइस से एनएमईए अनुक्रमों के साथ जीपीएस चिप और फीड सीरियल पोर्ट को सीधे दूर कर सकते हैं।

काश मैं अपने केबल को आसान था मुझे पता है कि आप अपने स्थान को बदलने के लिए एमुलेटर के लिए टेलनेट कर सकते हैं

 $ telnet localhost 5554 Android Console: type 'help' for a list of commands OK geo fix -82.411629 28.054553 OK 

मुझे याद नहीं है कि आप अपने डिवाइस पर टेलनेट कर सकते हैं, लेकिन मुझे लगता है कि आप कर सकते हैं। आशा है कि ये आपकी मदद करेगा।

आपको इस (सीएलआई) के लिए एडीबी (एंड्रॉइड डीबगिंग पुल) की आवश्यकता होगी।

स्थान की नकली करने के लिए आप स्थान सेवाओं की अनुमति का उपयोग कर सकते हैं …

"android.permission.ACCESS_MOCK_LOCATION"

और फिर अपने जावा कोड में,

 // Set location by setting the latitude, longitude and may be the altitude... String[] MockLoc = str.split(","); Location location = new Location(mocLocationProvider); Double lat = Double.valueOf(MockLoc[0]); location.setLatitude(lat); Double longi = Double.valueOf(MockLoc[1]); location.setLongitude(longi); Double alti = Double.valueOf(MockLoc[2]); location.setAltitude(alti); 

मुझे निम्न कोड के साथ सफलता मिली है यद्यपि यह मुझे किसी कारण के लिए एक ताला मिल गया (भले ही मैंने अलग लैटलैंड जोड़े की कोशिश की हो), यह मेरे लिए काम किया है mLocationManager एक LocationManager जो एक LocationManager लिए आदी है:

 private void getMockLocation() { mLocationManager.removeTestProvider(LocationManager.GPS_PROVIDER); mLocationManager.addTestProvider ( LocationManager.GPS_PROVIDER, "requiresNetwork" == "", "requiresSatellite" == "", "requiresCell" == "", "hasMonetaryCost" == "", "supportsAltitude" == "", "supportsSpeed" == "", "supportsBearing" == "", android.location.Criteria.POWER_LOW, android.location.Criteria.ACCURACY_FINE ); Location newLocation = new Location(LocationManager.GPS_PROVIDER); newLocation.setLatitude (/* TODO: Set Some Lat */); newLocation.setLongitude(/* TODO: Set Some Lng */); newLocation.setAccuracy(500); mLocationManager.setTestProviderEnabled ( LocationManager.GPS_PROVIDER, true ); mLocationManager.setTestProviderStatus ( LocationManager.GPS_PROVIDER, LocationProvider.AVAILABLE, null, System.currentTimeMillis() ); mLocationManager.setTestProviderLocation ( LocationManager.GPS_PROVIDER, newLocation ); } 

डॉ 1 केयू ने पोस्ट किया है काम करता है आज कोड का उपयोग किया है लेकिन अधिक लोक जोड़ना आवश्यक है तो कुछ सुधार हैं:

वैकल्पिक: LocationManager.GPS_PROVIDER स्ट्रिंग का उपयोग करने के बजाय, आप अपना स्वयं का कॉन्स्टेट PROVIDER_NAME को परिभाषित करना चाहते हैं और उसका उपयोग कर सकते हैं। स्थान अपडेट के लिए पंजीकरण करते समय, किसी प्रदाता को सीधे स्ट्रिंग के रूप में निर्दिष्ट करने के बजाय मानदंड के माध्यम से चुनें।

सबसे पहले: removeTestProvider को बुलाए जाने के बजाय, पहले जांचें कि क्या एक प्रदाता को निकाला जायेगा (अवैध अर्गममेंट से बचने के लिए):

 if (mLocationManager.getProvider(PROVIDER_NAME) != null) { mLocationManager.removeTestProvider(PROVIDER_NAME); } 

दूसरा: एक से अधिक स्थान प्रकाशित करने के लिए, आपको स्थान के लिए समय निर्धारित करना होगा:

 newLocation.setTime(System.currentTimeMillis()); ... mLocationManager.setTestProviderLocation(PROVIDER_NAME, newLocation); 

यहां भी एक MockLocationProviders का उपयोग करने वाला Google टेस्ट लगता है: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/location/LocationManagerProximityTest.java

एक अच्छा काम उदाहरण यहां पाया जा सकता है: http://pedroassuncao.com/blog/2009/11/12/android-location-provider-mock/

एक और अच्छा लेख यह है: http://ballardhack.wordpress.com/2010/09/23/location-gps-and-automated-testing-on-android/#comment-1358 आप कुछ कोड भी पाएँगे जो वास्तव में काम करता है इम्यूलेटर पर मुझे।

एंड्रॉइड मार्केट में ऐप उपलब्ध हैं जो आपको अपने डिवाइस के लिए एक "नकली जीपीएस स्थान" निर्दिष्ट करने की अनुमति देता है।

मैंने https://market.android.com पर खोज की और मुझे "माइ फैक्स स्थान" नामक ऐप मिला जो मेरे लिए काम करता है

उपरोक्त पॉल द्वारा उल्लेखित नकली जीपीएस प्रदाता ( http://www.cowlumbus.nl/forum/MockGpsProvider.zip पर ) एक और उदाहरण है जिसमें सोर्स कोड शामिल है – हालांकि मैं प्रदान किए गए एपीके स्थापित करने में सक्षम नहीं था (यह विफलता का कहना है [INSTALL_FAILED_OLDER_SDK] और सिर्फ एक पुन: कंपाइल की आवश्यकता हो सकती है)

जीपीएस नकली स्थानों का उपयोग करने के लिए आपको इसे अपनी डिवाइस सेटिंग में सक्षम करने की आवश्यकता है। सेटिंग -> एप्लीकेशन -> डेवलपमेंट पर जाएं और चेक करें "नकली स्थानों की अनुमति दें"

आप तब जीपीएस समन्वय निर्धारित करने के लिए ऊपर वर्णित लोगों की तरह एक ऐप का उपयोग कर सकते हैं और Google मानचित्र और अन्य ऐप्स आपके द्वारा निर्दिष्ट रिक्त जीपीएस स्थान का उपयोग करेंगे।

मैंने एक सरल हेन्डलर को एक प्रारंभिक स्थिति से चलती स्थिति का अनुकरण किया है।

इसे अपने कनेक्शन कॉलबैक में प्रारंभ करें:

 private final GoogleApiClient.ConnectionCallbacks mConnectionCallbacks = new GoogleApiClient.ConnectionCallbacks() { @Override public void onConnected(Bundle bundle) { if (BuildConfig.USE_MOCK_LOCATION) { LocationServices.FusedLocationApi.setMockMode(mGoogleApiClient, true); new MockLocationMovingHandler(mGoogleApiClient).start(48.873399, 2.342911); } } @Override public void onConnectionSuspended(int i) { } }; 

हैंडलर वर्ग:

  private static class MockLocationMovingHandler extends Handler { private final static int SET_MOCK_LOCATION = 0x000001; private final static double STEP_LATITUDE = -0.00005; private final static double STEP_LONGITUDE = 0.00002; private final static long FREQUENCY_MS = 1000; private GoogleApiClient mGoogleApiClient; private double mLatitude; private double mLongitude; public MockLocationMovingHandler(final GoogleApiClient googleApiClient) { super(Looper.getMainLooper()); mGoogleApiClient = googleApiClient; } public void start(final double initLatitude, final double initLongitude) { if (hasMessages(SET_MOCK_LOCATION)) { removeMessages(SET_MOCK_LOCATION); } mLatitude = initLatitude; mLongitude = initLongitude; sendEmptyMessage(SET_MOCK_LOCATION); } public void stop() { if (hasMessages(SET_MOCK_LOCATION)) { removeMessages(SET_MOCK_LOCATION); } } @Override public void handleMessage(Message message) { switch (message.what) { case SET_MOCK_LOCATION: Location location = new Location("network"); location.setLatitude(mLatitude); location.setLongitude(mLongitude); location.setTime(System.currentTimeMillis()); location.setAccuracy(3.0f); location.setElapsedRealtimeNanos(System.nanoTime()); LocationServices.FusedLocationApi.setMockLocation(mGoogleApiClient, location); mLatitude += STEP_LATITUDE; mLongitude += STEP_LONGITUDE; sendEmptyMessageDelayed(SET_MOCK_LOCATION, FREQUENCY_MS); break; } } } 

आशा है कि यह मदद कर सकता है ..

यह मेरे लिए (एंड्रॉइड स्टूडियो) काम करता है:

फ़ोन पर जीपीएस और वाईफ़ाई ट्रैकिंग अक्षम करें एंड्रॉइड 5.1.1 और नीचे, डेवलपर विकल्पों में "नकली स्थानों को सक्षम करें" चुनें।

Src / debug निर्देशिका में अपने मैनिफेस्ट की एक प्रति बनाओ इसे करने के लिए निम्नलिखित जोड़ें ("आवेदन" टैग के बाहर):

एंड्रॉइड का उपयोग-अनुमति: नाम = "android.permission.ACCESS_MOCK_LOCATION"

एक मैप फ्रेगमेंट सेट करें जिसे "मैप" कहा जाता है OnCreate () में निम्न कोड शामिल करें:

 lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); ll = new MyLocationListener(); if (lm.getProvider("Test") == null) { lm.addTestProvider("Test", false, false, false, false, false, false, false, 0, 1); } lm.setTestProviderEnabled("Test", true); lm.requestLocationUpdates("Test", 0, 0, ll); map.setOnMapClickListener(new GoogleMap.OnMapClickListener() { @Override public void onMapClick(LatLng l) { Location loc = new Location("Test"); loc.setLatitude(l.latitude); loc.setLongitude(l.longitude); loc.setAltitude(0); loc.setAccuracy(10f); loc.setElapsedRealtimeNanos(System.nanoTime()); loc.setTime(System.currentTimeMillis()); lm.setTestProviderLocation("Test", loc); } }; 

ध्यान दें कि आपको "setElapsedRealtimeNanos" विधि का उपयोग करने के लिए अपने मॉड्यूल ग्रेडेल फ़ाइल में "minSdkVersion" को अस्थायी रूप से बढ़ा सकते हैं।

मुख्य गतिविधि वर्ग के अंदर निम्न कोड शामिल करें:

 private class MyLocationListener implements LocationListener { @Override public void onLocationChanged(Location location) { // do whatever you want, scroll the map, etc. } } 

अपने ऐप को एएस के साथ चलाएं। एंड्रॉइड 6.0 और उससे ऊपर आपको एक सुरक्षा अपवाद मिलेगा। अब सेटिंग में डेवलपर विकल्पों पर जाएं और "नकली स्थान ऐप चुनें" का चयन करें सूची से अपना ऐप चुनें

अब जब आप मानचित्र पर टैप करते हैं, तो स्थानान्तरण () आपके टैप के निर्देशांक के साथ आग लगाएगा।

मुझे अभी यह पता चल गया है कि मुझे पड़ोस के आसपास फोन के साथ टकराना नहीं है।

बर्सेरेरोर द्वारा उल्लिखित समाधान और पेड्रो द्वारा http://pedroassuncao.com/blog/2009/11/12/android-location-provider-mock/ पर उपलब्ध कराया गया मेरे लिए बहुत अच्छा काम किया हालांकि, यह नकली जीपीएस प्रदाता को ठीक से शुरू करने, रोकना और पुनरारंभ करने के लिए समर्थन प्रदान नहीं करता है

मैंने उसका कोड थोडा बदल दिया है और एक थ्रेड के बजाय एक asyncTask होने के लिए कक्षा को फिर से लिखा है। यह हमें यूआई थ्रेड से संवाद करने की अनुमति देता है, इसलिए हम उस प्रदाता को उस बिंदु पर पुनः आरंभ कर सकते हैं जहां हम इसे रोकते थे। जब स्क्रीन ओरियनेशन में परिवर्तन होता है, तब यह काम में आता है।

कोड, एक्लिप्स के लिए एक नमूना प्रोजेक्ट के साथ, GitHub पर पाया जा सकता है: https://github.com/paulhoux/Android-MockProviderGPS

सभी क्रेडिट कड़ी मेहनत के लिए पेड्रो में जाना चाहिए

Google Play से नकली जीपीएस ऐप मेरे लिए चाल थी बस सुनिश्चित करें कि आप एप्लिकेशन विवरण में सभी दिशा-निर्देश पढ़ते हैं। आपको अन्य स्थान सेवाओं को अक्षम करना होगा, साथ ही साथ "नकली जीपीएस" सक्षम करने के बाद अपना ऐप प्रारंभ करना होगा। मुझे जो आवश्यकता थी, उसके लिए महान काम किया

यहां GooglePlay पर ऐप का लिंक है: नकली जीपीएस

ऐसा करने के लिए Google ट्यूटोरियल यहां पाया जा सकता है, यह कोड के उदाहरण प्रदान करता है और प्रक्रिया को बताता है।

http://developer.android.com/training/location/location-testing.html#SendMockLocations

यदि आपका डिवाइस आपके कंप्यूटर में प्लग किया गया है और आप बदलते हैं, तो इम्यूलेटर नियंत्रण के माध्यम से जीपीएस कॉर्ड भेजने की कोशिश कर रहे हैं, यह काम नहीं करेगा।
यह एक कारण के लिए एक एमुलेटर नियंत्रण है
बस जीपीएस परिवर्तन पर आपको अपडेट करने के लिए इसे सेट करें

 lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); ll = new LocationListener() { public void onLocationChanged(Location location) { // Called when a new location is found by the network location provider. onGPSLocationChanged(location); } public void onStatusChanged(String provider, int status, Bundle extras) { bigInfo.setText("Changed "+ status); } public void onProviderEnabled(String provider) { bigInfo.setText("Enabled "+ provider); } public void onProviderDisabled(String provider) { bigInfo.setText("Disabled "+ provider); } }; 

जब जीपीएस को अपडेट किया जाता है, तो आप जो करना चाहते हैं उसे करने के लिए निम्नलिखित विधि को दोबारा लिखना;

 public void onGPSLocationChanged(Location location){ if(location != null){ double pLong = location.getLongitude(); double pLat = location.getLatitude(); textLat.setText(Double.toString(pLat)); textLong.setText(Double.toString(pLong)); if(autoSave){ saveGPS(); } } } 

मैनिफेस्ट में इन को भूलना मत भूलना
android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_MOCK_LOCATION

नकली जीपीएस ऐप स्थापित करें https://play.google.com/store/apps/details?id=com.incorporateapps.fakegps.fre&hl=en

डेवलपर विकल्प -> नकली स्थान ऐप चुनें (इसका मतलब है, नकली स्थान ऐप चयनित)।

नकली जीपीएस ऐप :

जोड़ने के लिए नक्शे पर डबल टैब -> प्ले बटन पर क्लिक करें -> टोस्ट दिखाएं "नकली स्थान बंद हो गया"

आखिरकार गूगल मैप क्षुधा के साथ की जाँच करें

मुझे आश्चर्य है कि आपको विस्तृत नकली स्थान सेटअप की आवश्यकता है। मेरे मामले में एक बार जब मुझे एक तय स्थान मिला तो मैं उस नए स्थान के साथ कुछ करने के लिए फ़ंक्शन बुला रहा था। टाइमर में एक नकली स्थान बनाते हैं। और फ़ंक्शन को उसके स्थान के बजाय कॉल करें। थोड़ी देर में सभी को जानने के साथ ही जीपीएस एक वास्तविक वर्तमान स्थान के साथ आएगा। जो ठीक है यदि आपके पास अद्यतन समय पर्याप्त रूप से लंबा है

हो सकता है कि यह 'प्रोग्रामर' दृष्टिकोण न हो, लेकिन अगर आप अपना समय बचाने के लिए और त्वरित समाधान प्राप्त करना चाहते हैं, तो Google Play में उपलब्ध नकली स्थान के लिए समर्पित ऐप्स में से एक को आज़माएं:

नकली जीपीएस स्थान स्पूफ़र

मॉक लोकेशन

नकली जीपीएस स्थान

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

प्रोजेक्ट रिपोजिटरी: https://github.com/juliusmh/RemoteGeoFix

मेनिफ़ेस्ट फ़ाइल में इस अनुमति का उपयोग करें

 <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"> 

एंड्रॉइड स्टूडियो सुझाएंगे कि "नकली स्थान केवल एक परीक्षण या डिबग-विशिष्ट मैनिफ़ेस्ट फ़ाइल में अनुरोध किया जाना चाहिए (आमतौर पर, src / debug / AndroidManifest.xml)" बस निरीक्षण को अक्षम करें

अब सुनिश्चित करें कि आपने अपने फोन के डेवलपर सेटिंग में " नकली स्थानों की अनुमति दें " चेक किया है

स्थान प्रबंधक का उपयोग करें

 locationManager.addTestProvider(mocLocationProvider, false, false, false, false, true, true, true, 0, 5); locationManager.setTestProviderEnabled(mocLocationProvider, true); 

अब जहाँ भी आप चाहते हैं वहां स्थान सेट करें

 Location mockLocation = new Location(mocLocationProvider); mockLocation.setLatitude(lat); mockLocation.setLongitude(lng); mockLocation.setAltitude(alt); mockLocation.setTime(System.currentTimeMillis()); 

locationManager.setTestProviderLocation (mocLocationProvider, नकली स्थान);