ガレージモード

ガレージモードは、車両のアイドル時間を確保するために、システムが 待機している状態で JobScheduler の制限条件: アイドル状態を実行できます。

ガレージモードとは

スマートフォンなどのコネクテッド デバイスでは、デバイスを安定した最新の最適化された状態に保つため、ユーザーはもっぱらシステムに頼ります。この状態を実現するため、Android プラットフォームは を アイドル状態 時間 ユーザーがリクエストしていないときにアプリがタスクを実行できる やり取りできます。ユーザーがタッチしなかった場合、スマートフォンはアイドル状態とみなされます。 長時間(60 分以上)オフになり、画面がオフになる。 スマートフォンとは異なり、車を使わないときは電源がオフになります。つまり、 なし アイドル時間 クリックします。ガレージモードは、自動車のアイドル時間を提供します。

ユーザーが自動車のエンジンを切ると、システムはガレージモードに入ります。一方で、 車がガレージモードになっていて、システムの電源がオンになっていて、ディスプレイがオフになっていて、 JobScheduler キューのアイドル状態のジョブが実行されます。ガレージモードを実装する方法については、以下をご覧ください。 デバイス実装のガイドライン

デバイス実装のガイドライン

ガレージモードを有効にするには、車両のエンジンを切る際に車両 HAL(VHAL)が 送信が必要 状態 SHUTDOWN_PREPAREAP_POWER_STATE_REQ パラメータは SHUTDOWN_ONLY または CAN_SLEEP に設定します。

SHUTDOWN_PREPARE 状態を有効にするために、VHAL は AP_POWER_STATE_REQ コマンドに 2 つのパラメータ(状態と追加パラメータ)を指定する必要があります。これにより、デバイスがガレージモードに切り替わり、 スケジュール設定されたジョブを JobScheduler ジョブが完了するまでシステムが一時停止またはシャットダウンを 確認します。

デバイスの実装が Android フレームワークに接続する方法

ガレージモードの場合、フレームワークは VHAL にシャットダウン時間の延長をリクエストします。 必要な期間を超過するか、すべてのジョブが実行されるまで、 シャットダウンしますCDD で定義されている特定の状況では、デバイスの実装がシステムを通常より早くシャットダウンする場合があります詳細情報 をご覧ください。詳しくは、Android 互換性定義ドキュメント(CDD)

ガレージモードが完了する前に VHAL がシステムをシャットダウンする必要がある場合、VHAL は以下を発行できます。 パラメータを次の値に設定された SHUTDOWN_PREPARE SHUTDOWN_IMMEDIATELY または SLEEP_IMMEDIATELY。デバイス 実装では、特定の状況のみでこの方法を使用できます。 システムが稼働し続けるのに必要なリソースが 利用できない場合ですたとえば、電池容量が不足している場合などです。

ガレージモード

図 1. ガレージモードのフロー

アプリ デベロッパーがガレージモードを使用するにはどうすればよいですか?

アプリとサービスは、ガレージモードと直接やり取りしません。代わりに アプリでジョブのスケジュールを設定 JobScheduler。 クラウド コンピューティングによって アイドル状態: ガレージモード中に実行されます。

次のコードは、ガレージモードで実行するジョブのスケジュール方法を示しています。

public class MyGarageModeJob extends JobService { ... }

Context context = ...;
int jobId = ...;

ComponentName myGarageModeJobName = new componentName(context,
                                                      MyGarageModeJob.class);

JobInfo.Builder infoBuilder = new JobInfo.Builder(jobId, myGarageModeJobName)
                    .setRequiresDeviceIdle(true);

// Example of an optional constraint:
infoBuilder.setRequiredNetworkType(NetworkType.NETWORK_TYPE_UNMETERED);

JobScheduler jobScheduler = (JobScheduler) context
                    .getSystemService(Context.JOB_SCHEDULER_SERVICE);

jobScheduler.schedule(infoBuilder.build());

ガレージモードをデバッグする

ガレージモードをデバッグする手順は次のとおりです。
  1. ガレージモードに関連するロギング カテゴリを有効にするには、次のコマンドを実行します。
    adb shell stop
    adb shell setprop log.tag.GarageMode VERBOSE
    adb shell setprop log.tag.Finsky VERBOSE
    adb shell setprop log.tag.CAR.POWER VERBOSE
    adb shell setprop log.tag.JobScheduler.Connectivity VERBOSE
    adb shell start
    
  2. ガレージモードが開始されたことを示す logcat 出力を確認します。
    GarageMode: [Controller]: CPM state changed to SHUTDOWN_PREPARE
    GarageMode: [GarageMode]: Entering GarageMode
    GarageMode: [Controller]: Sending broadcast with action: com.android.server.jobscheduler.GARAGE_MODE_ON
    
  3. ガレージモードが終了(キャンセルまたは完了)したことを示す logcat 出力を確認します。
    [GarageMode]: GarageMode was canceled
    
    または
    [GarageMode]: GarageMode completed normally
    

    上記の説明のとおり、ガレージモードは自動車の電源状態に依存します。

  4. 適切な電源状態に入ったことを示す logcat 出力を確認します。
    CAR.POWER: starting shutdown prepare without Garage Mode
    GarageMode: [Controller]: CPM state changed to SHUTDOWN_PREPARE
    GarageMode: [GarageMode]: Entering GarageMode
    CAR.POWER: send shutdown prepare
    CAR.POWER: setPowerState=SHUTDOWN_PREPARE(7) param=0