2

デバイスの位置情報を収集し、それを事前定義された緯度/経度座標と比較して、一致したときに特定のアクションを実行する地理位置情報アプリを作成しました。

現在、ユーザーが座標や、ポーリングの半径や間隔などの他のパラメーターを入力できるアクティビティ ページがあります。また、アプリはユーザーが起動したときにのみ起動します。

以下を行うサービスに変換したい

  • バックグラウンドで実行されます
  • パラメーターは構成ファイルから読み取られるため (この部分は既に完了しています)、メイン アクティビティは必要ありません (UI なし)。
  • 自動的に起動します (おそらく android.intent.action.BOOT_COMPLETED BroadcastReceiver が必要です)

どうすればいいですか?

ありがとう。

4

1 に答える 1

2

次のように、アプリケーションのサービスを作成する必要があります。

例Service.java:

public class ExampleService extends Service {

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



@Override
public void onStart(Intent intent, int startId) {
    // TODO Auto-generated method stub
    super.onStart(intent, startId);

    Log.d(TAG, "onStart()===>In");
   // Write your application logical code here

}

@Override
public void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
}

}

BootCompleteReceiver.java

public class BootCompleteReceiver extends BroadcastReceiver {

private static final String TAG = "[BootCompleteReceiver]";

@Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    Toast.makeText(context, "Boot complete", Toast.LENGTH_LONG).show();
    Log.d(TAG, "Boot complete");
    // Start the ExampleService
    Intent service = new Intent(context, ExampleService.class);
    context.startService(service);
}

}

Android マニフェスト:

<!-- Server as a service -->
<service
android:name="com.example.ExampleService"
android:enabled="true" >
</service>

<!-- Boot complete receiver -->
<receiver
android:name="com.example.BootCompleteReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>

サービスを手動で開始し、アクティビティからサービスを起動するアクティビティも作成する必要があります。

于 2015-08-25T05:08:39.533 に答える