0

BrodcastReceiver によって実行され、要求した GPS データを実行して提供するサービスがありましたが、実行すべきことを行った後に停止しましたが、要求したデータが提供されず、提供されなかったことに気付きましたあまりにも停止してください。コードは以下にあり、サービスは実際のデバイスでテストされています。

import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.IBinder;
import android.os.SystemClock;
import android.widget.Toast;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;

public class GpsService extends Service implements LocationListener{
    static LocationManager mlocManager;

    }    
    @Override
    public IBinder onBind(Intent arg0) {
        // TODO Auto-generated method stub
        return null;
    }
    public void onCreate() {

    }

    @Override
    public void onDestroy() {

    }

    @Override
    public void onStart(Intent intent, int startid) {
        mlocManager = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
        mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER,0, 0,this);

    }

        @Override
    public void onLocationChanged(Location loc)
    {
    loc.getLatitude();
    loc.getLongitude();
    String Text = "My current location is: " +"Latitud = " + loc.getLatitude() +"Longitud = " + loc.getLongitude();
   Toast.makeText( getApplicationContext(),Text,Toast.LENGTH_SHORT).show(); 
    // Here to stop the service and make it finish its task
    SystemClock.sleep(40000);
    // stop the Gps system by this application
    mlocManager.removeUpdates(this);
    //Here to stop the service by itself
    stopSelf();

    }
    @Override
    public void onProviderDisabled(String provider)
    {
    Toast.makeText( getApplicationContext(),"Gps Disabled",Toast.LENGTH_SHORT ).show();
    }

    @Override
    public void onProviderEnabled(String provider)
    {
    Toast.makeText( getApplicationContext(),"Gps Enabled",Toast.LENGTH_SHORT).show();
    }
    @Override

    public void onStatusChanged(String provider, int status, Bundle extras)
    {
    }


}
4

1 に答える 1

0
  1. マニフェストに対する正しいアクセス許可を持っていますか?
  2. なぜサービスをスリープ状態にするのですか?サービスは UI スレッドで動作し、UI スレッドが応答しないため、約 5 秒後にサービスがシステムによって自動的に強制終了される可能性があります。
  3. toast の停止および/または表示を遅らせたい場合は、 Handler (および postDelayed) を使用するか、 asyncTask 、または独自のものを使用します。
  4. GPSをオンにしていますか?このタスクに偽の位置情報アプリまたはエミュレーターを使用することを検討しましたか?
  5. 幸運を 。
于 2012-05-12T18:14:59.740 に答える