0

onReceive メソッドから位置情報の更新を取得する必要があります。onReceive() が GPS の開始を 2 ~ 3 秒間呼び出してから消えたのはなぜですか??

それを修正する方法?? 位置情報の更新を取得したい。助けてください。

注: 電話の再起動時に onReceive メソッドが呼び出されます

Java コード:

public class BootReceiver extends BroadcastReceiver implements LocationListener {

@Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub


    if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction()))
 {
    LocationManager LM2=(LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
    LM2.requestLocationUpdates("gps",5000, 0, this);
 }

}

@Override
public void onLocationChanged(Location location) {
    // TODO Auto-generated method stub

}

@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

}

}

マニフェスト.xml

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

<receiver android:name="com.my.package.BootReceiver">
       <intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
4

2 に答える 2

2

助けてくれてありがとう、私が必要としていたのはサービスを作ることだけでした

onReceive メソッドは

@Override
public void onReceive(Context context, Intent intent) {

   if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction()))
  {
     Intent i= new Intent(context, MyService.class);            
     context.startService(i);
  }

}

MyService クラス

public class MyService extends Service implements LocationListener {


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

      @Override
  public int onStartCommand(Intent intent, int flags, int startId) {
    //TODO do something useful
    LocationManager LM2=(LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
    LM2.requestLocationUpdates("gps",5000, 0, this);
    return Service.START_STICKY;
  }


    @Override
 public void onLocationChanged(Location location) {
// TODO Auto-generated method stub

}

@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

}

}

サービスをmanifest.xmlに登録する必要があります

<service
 android:name="com.my.package.MyService"
 android:icon="@drawable/icon"
 android:label="Service name"
 >
 </service>
于 2014-01-24T19:46:38.970 に答える
-1

onReceive() が GPS の開始を 2 ~ 3 秒間呼び出して終了したのはなぜですか?

プロセスが終了したためです。

于 2014-01-24T17:06:52.153 に答える