Get Location form GPS and set marker on google maps in android -


hi trying getting location(latitude , longitude) gps , set marker on google map not working.in code trying latitude , longitude gps location listener method onlocationchanged method never calling not showing toast.

public class mapsfragment extends fragment implements onmapreadycallback, googlemap.onmaploadedcallback {     private static view view;     private supportmapfragment mmap;     private static double latitude = 28.6538100, longitude = 77.2289700;     googlemap gmap;     private static final int permission_request_code = 1;     private mindislocationlistener locationlistener;     private locationmanager lm;      public mapsfragment() {     }       @override     public view oncreateview(layoutinflater inflater, viewgroup container,                              bundle savedinstancestate) {         fragmentmanager fm = getactivity().getsupportfragmentmanager();         supportmapfragment mmapfragment = (supportmapfragment) getactivity()                 .getsupportfragmentmanager().findfragmentbyid(r.id.map);         locationlistener = new mindislocationlistener();         lm = (locationmanager) getactivity().getsystemservice(context.location_service);         if (contextcompat.checkselfpermission(getactivity(), manifest.permission.access_fine_location)                 == packagemanager.permission_granted) {             lm.requestlocationupdates(locationmanager.gps_provider, 5000, 2, this.locationlistener);         } else {             requestpermission();         }         lm.requestlocationupdates(locationmanager.gps_provider, 5000, 2, this.locationlistener);         if (mmapfragment == null) {             mmapfragment = supportmapfragment.newinstance();             fm.begintransaction().replace(r.id.map, mmapfragment).commit();             mmapfragment.getmapasync(this);         }         view = inflater.inflate(r.layout.fragment_map, container, false);          return view;     }      @override     public void onmapready(googlemap map) {         gmap = map;         gmap.setonmaploadedcallback(this); //        drawmarker(latitude, longitude);         gmap.movecamera(cameraupdatefactory.newlatlngzoom(new                 latlng(49.39, -124.83), 20));         gmap.addmarker(new markeroptions()                 .position(new latlng(37.7750, 122.4183))                 .title("san francisco")                 .snippet("population: 776733"));         gmap.getuisettings().setzoomgesturesenabled(true);         if (contextcompat.checkselfpermission(getactivity(), manifest.permission.access_fine_location)                 == packagemanager.permission_granted) {             gmap.setmylocationenabled(true);             lm.requestlocationupdates(locationmanager.gps_provider, 5000, 2, this.locationlistener);         } else {             requestpermission();         }     }      @override     public void onactivitycreated(bundle savedinstancestate) {         super.onactivitycreated(savedinstancestate);         fragmentmanager fm = getchildfragmentmanager();         mmap = (supportmapfragment) fm.findfragmentbyid(r.id.map);         if (mmap != null) {             mmap = supportmapfragment.newinstance();             fm.begintransaction().replace(r.id.map, mmap).commit();             mmap.getmapasync(this);         }     }       private void requestpermission() {         if (activitycompat.shouldshowrequestpermissionrationale(getactivity(), manifest.permission.access_fine_location)) {             toast.maketext(getactivity(), "gps permission allows access location data. please allow in app settings additional functionality.", toast.length_long).show();         } else {             activitycompat.requestpermissions(getactivity(), new string[]{manifest.permission.access_fine_location}, permission_request_code);         }     }      public void drawmarker(double lat, double lon) {         if (gmap != null) {             markeroptions marker = new markeroptions().position(new latlng(lat, lon)).title(" maps tutorial").snippet("android ruler");             marker.icon(bitmapdescriptorfactory.defaultmarker(bitmapdescriptorfactory.hue_green));             cameraposition cameraposition = new cameraposition.builder().target(new latlng(latitude, longitude)).zoom(12).build();             gmap.animatecamera(cameraupdatefactory.newcameraposition(cameraposition));             gmap.addmarker(marker);         }     }      @override     public void onrequestpermissionsresult(int requestcode, string permissions[], int[] grantresults) {         switch (requestcode) {             case permission_request_code:                 if (grantresults.length > 0 && grantresults[0] == packagemanager.permission_granted) {                     if (activitycompat.checkselfpermission(getactivity(), manifest.permission.access_fine_location) != packagemanager.permission_granted && activitycompat.checkselfpermission(getactivity(), manifest.permission.access_coarse_location) != packagemanager.permission_granted) {                         gmap.setmylocationenabled(true);                         lm.requestlocationupdates(locationmanager.gps_provider,5000, 2, this.locationlistener);                     }                     gmap.setmylocationenabled(true);                     lm.requestlocationupdates(locationmanager.gps_provider, 5000, 2, this.locationlistener);                 } else {                   }                 break;         }     }      @override     public void onresume() {         super.onresume();         fragmentmanager fm = getchildfragmentmanager();         mmap = (supportmapfragment) fm.findfragmentbyid(r.id.map);         if (mmap != null) {             mmap = supportmapfragment.newinstance();             fm.begintransaction().replace(r.id.map, mmap).commit();             mmap.getmapasync(this);          }     }      @override     public void ondestroyview() {         super.ondestroyview();         if (mmap != null) {             mmap = null;         }     }      @override     public void onmaploaded() {     }      public class mindislocationlistener implements locationlistener {         @override         public void onlocationchanged(location location) {             log.d("location", "onlocationchanged");             drawmarker(location.getlatitude(),location.getlongitude());             toast.maketext(getactivity(), "onlocationchanged", toast.length_short).show();         }          @override         public void onstatuschanged(string provider, int status, bundle extras) {             log.d("location", "onstatuschanged");             toast.maketext(getactivity(), "onstatuschanged", toast.length_short).show();         }          @override         public void onproviderenabled(string provider) {             log.d("location", "onproviderenabled");             toast.maketext(getactivity(), "onproviderenabled", toast.length_short).show();         }          @override         public void onproviderdisabled(string provider) {             log.d("location", "onproviderenabled");             toast.maketext(getactivity(), "onproviderenabled", toast.length_short).show();         }     } } 

msnifist file this

<manifest xmlns:android="http://schemas.android.com/apk/res/android"     package="com.deltastar.catchme" >      <uses-permission android:name="android.permission.system_alert_window" />     <uses-permission android:name="android.permission.internet" />     <uses-permission android:name="android.permission.read_contacts" />     <uses-permission android:name="android.permission.access_fine_location" />     <uses-permission android:name="android.permission.call_phone" />     <uses-permission android:name="android.permission.write_external_storage" />     <uses-permission android:name="android.permisssion.access_coarse_location" />     <uses-permission android:name="com.google.android.providers.gsf.permission.read_gservices" />     - see more at:     http://www.theappguruz.com/blog/android-take-photo-camera-gallery-code-sample#sthash.ptravzrk.dpuf     <application         android:allowbackup="true"         android:icon="@drawable/ic_logo"         android:label="@string/app_name"         android:supportsrtl="true"         android:theme="@style/apptheme" >         <activity android:name=".loginactivity" />         <activity             android:name=".registeractivity"             android:label="@string/register" >             <intent-filter>                 <action android:name="android.intent.action.main" />                  <category android:name="android.intent.category.launcher" />             </intent-filter>         </activity>         <activity             android:name=".otpverifyactivity"             android:label="@string/otp_verify" />         <activity android:name=".createprofileactivity" />         <activity android:name=".chatmemberactivity" />         <activity android:name=".creategroup" />         <activity android:name=".addmembergroup" />         <activity android:name=".meatpointname" />         <activity android:name=".mymeeting" />         <activity android:name=".chatactivity" />         <activity android:name=".groupinfo" />         <activity             android:name=".mapchat"             android:label="@string/title_activity_map_chat" />         <activity android:name=".mymeatingreq" />         <activity android:name=".userprofile" />         <activity android:name=".myprofile" />         <activity android:name=".splashscreen" />         <activity android:name=".settings" />         <activity             android:name=".drawerdemo"             android:label="@string/title_activity_drawer_demo"             android:theme="@style/apptheme" />          <!--              api key google maps-based apis defined string resource.              (see file "res/values/google_maps_api.xml").              note api key linked encryption key used sign apk.              need different api key each encryption key, including release key used              sign apk publishing.              can define keys debug , release targets in src/debug/ , src/release/.          -->         <meta-data             android:name="com.google.android.geo.api_key"             android:value="@string/google_maps_key" />          <activity             android:name=".meetingpointlocation"             android:label="@string/title_activity_create_meating_point" />         <!--              attention: auto-generated add google play services project              app indexing.  see https://g.co/appindexing/androidstudio more information.         -->         <meta-data             android:name="com.google.android.gms.version"             android:value="@integer/google_play_services_version" />          <activity             android:name=".homepage"             android:label="@string/title_activity_home_page"             android:theme="@style/apptheme" />         <activity android:name=".mylocation" />          <activity android:name="com.services.locdemo" >         </activity>     </application>  </manifest> 

fragment_map.xml

<framelayout 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="com.fragment.mapsfragment">      <fragment xmlns:android="http://schemas.android.com/apk/res/android"         xmlns:tools="http://schemas.android.com/tools"         android:id="@+id/map"         android:name="com.google.android.gms.maps.supportmapfragment"         android:layout_width="match_parent"         android:layout_height="match_parent" /> </framelayout> 

your code works perfect. have move device in place gps available, because place testing app may not have exposure gps satellite. onlocationchanged() called once gps detected device


Comments

Popular posts from this blog

java - Run spring boot application error: Cannot instantiate interface org.springframework.context.ApplicationListener -

python - pip wont install .WHL files -

Excel VBA "Microsoft Windows Common Controls 6.0 (SP6)" Location Changes -