Ich versuche den Standort des Benutzers zu finden und den Wert in meiner Firebase-Datenbank zu aktualisieren. Aber der Standort scheint nicht aktualisiert zu werden. Ich kann den Fehler nicht identifizieren. Der Dienst wurde gestartet, aber der Standort scheint nicht aktualisiert zu werden.Standort Update im Service
Mein Service ist wie folgt:
public class MyLocation extends Service {
Firebase rootRef,child_ref;
LocationManager locationManager;
LocationListener locationListener;
public MyLocation() {
super();
}
@Override
public void onCreate() {
super.onCreate();
rootRef = new Firebase(Constants.FIREBASE_URL);
child_ref = rootRef.child(rootRef.getAuth().getUid());
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
child_ref.setValue(location.getLatitude() + " : " + location.getLongitude());
UserPojo userPojo=new UserPojo(location.getLatitude()+" : "+location.getLongitude());
child_ref.child("location").setValue(userPojo);
Log.i("location",location.getLatitude()+" : "+location.getLongitude());
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
};
try {
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, locationListener);
}
catch (SecurityException e)
{
e.printStackTrace();
}
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
Meine POJO Klasse ist wie folgt:
public class UserPojo {
String uname;
String email;
String location;
public UserPojo() {
}
public UserPojo(String uname, String email) {
this.uname = uname;
this.email = email;
}
public UserPojo(String location) {
this.location = location;
}
public String getUname() {
return uname;
}
public String getEmail() {
return email;
}
public String getLocation() {
return location;
}
}
Mein Service Aufruf Aktivität wie folgt:
public class MembersListActivityFragment extends Fragment {
Intent intent;
private AuthData auth;
public MembersListActivityFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView= inflater.inflate(R.layout.fragment_members_list, container, false);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{
Manifest.permission.INTERNET,Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION
},10);
}
Firebase firebase=new Firebase(Constants.FIREBASE_URL);
auth=firebase.getAuth();
Toast.makeText(getActivity(),auth.getUid(),Toast.LENGTH_LONG).show();
return rootView;
}
private boolean isMyServiceRunning(Class<?> serviceClass) {
ActivityManager manager = (ActivityManager)getActivity().getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (serviceClass.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode){
case 10:if(grantResults.length>0&&grantResults[0]== PackageManager.PERMISSION_GRANTED)
{
intent=new Intent(getActivity(),MyLocation.class);
getActivity().startService(intent);
boolean service_enabled= isMyServiceRunning(MyLocation.class);
Log.i("service ",service_enabled+"");
}
}
}
@Override
public void onDestroy() {
super.onDestroy();
getActivity().stopService(intent);
}
}
Mein Manifest-Datei ist wie folgt:
<?xml version="1.0" encoding="utf-8"?>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:name=".Family"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".SignUpActivity" />
<activity android:name=".SignInAcivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MembersListActivity"
android:label="@string/title_activity_members_list"
android:theme="@style/AppTheme.NoActionBar"></activity>
<service android:name=".MyLocation" android:enabled="true"></service>
</application>
</manifest>
Ich habe bereits die erforderlichen Berechtigungen in der Manifest-Datei –
„Tutorium“ wird nicht helfen hinzugefügt !!!! 'GPSTracker erweitert Service' und dann' gps = new GPSTracker (this); '** widerspricht den grundlegenden Android-Regeln ** (das heißt: ** nicht ** Instanz von Services, Activities, Applications-Klassen selbst erstellen mit einem neuen Operator) – Selvin