Thiết lập quyền truy cập từ xa

Android 14 giới thiệu tính năng truy cập từ xa mới, cho phép các đối tác đánh thức Android từ xa trong xe để thực hiện các tác vụ cụ thể. Ví dụ: để thực thi chế độ Garage qua đêm để áp dụng các bản cập nhật phần mềm. Cần có nhiều thành phần không phải của Android cho quy trình làm việc toàn diện. Android không xác định hoặc cung cấp cách triển khai cho các thành phần không phải của Android (trách nhiệm này thuộc về bạn).

Để tìm hiểu thêm, hãy xem các phần sau:

Ngành kiến ​​​​trúc

Nội dung sau đây giả định kiến ​​trúc mẫu sau được sử dụng, đây chỉ là giả thuyết và có thể không phản ánh kiến ​​trúc thực tế. Các OEM nên điều chỉnh việc triển khai thực tế phù hợp với kiến ​​trúc phương tiện và máy chủ của họ.

image

Hình 1. Kiến trúc mẫu.

Kiến trúc mẫu bao gồm các thành phần phần cứng sau:

Thành phần phần cứng Sự miêu tả
Bộ xử lý ứng dụng Bộ xử lý chạy Android. Android có thể chạy trên bộ nhớ ảo (VM) (không phải trên phần cứng thực tế) trên bộ xử lý này.
Bộ xử lý xe Bộ xử lý chịu trách nhiệm kiểm soát năng lượng cho bộ xử lý ứng dụng.
Bộ điều khiển viễn thông (TCU) Bộ xử lý trên xe luôn có khả năng nhận tin nhắn từ xa từ đám mây. TCU được cho là luôn bật hoặc ở chế độ năng lượng thấp. Sử dụng tin nhắn từ xa để đánh thức TCU.
Máy chủ đánh thức Một máy chủ từ xa chạy trên đám mây và chịu trách nhiệm liên lạc với TCU trong xe để đưa ra lệnh đánh thức.
Máy chủ tác vụ từ xa Máy chủ tác vụ từ xa chạy trên đám mây và tương tác với mọi người cũng như quản lý các tác vụ từ xa.

Kiến trúc mẫu bao gồm các thành phần phần mềm này, tất cả đều chạy trên Android:

Thành phần phần mềm trên Android Sự miêu tả
Dịch vụ cho xe ô tô Dịch vụ khung AAOS cung cấp API truy cập từ xa.
Máy khách tác vụ từ xa Dịch vụ do nhà cung cấp viết để thực thi các tác vụ từ xa. Một hệ thống Android có thể chạy nhiều ứng dụng khách tác vụ từ xa.
HAL truy cập từ xa Phải được thực hiện để truy cập từ xa.
Lớp trừu tượng để liên lạc giữa AAOS và thành phần không phải Android như TCU.

Các thành phần phần mềm không phải Android được mô tả bên dưới:

Thành phần phần mềm không phải Android Sự miêu tả
Khách hàng thức tỉnh Phần mềm chạy trên TCU duy trì kết nối lâu dài với máy chủ Wake-up. Nó cũng duy trì kết nối với HAL truy cập từ xa để cung cấp các tác vụ từ xa cho Dịch vụ ô tô.
Triển khai máy chủ đánh thức Máy chủ liên lạc với máy khách Wake-up đang chạy trên TCU. Có thể gửi yêu cầu đánh thức đến ứng dụng khách Đánh thức.
Triển khai máy chủ tác vụ từ xa Máy chủ quản lý các tác vụ từ xa. Người dùng tương tác với máy chủ này để phát hành và giám sát các tác vụ từ xa.

Quy trình làm việc

Phần này liệt kê các bước trong quy trình làm việc mẫu.

Quy trình làm việc mẫu

Một quy trình làm việc chi tiết có thể giống như sau:

  1. Người dùng đỗ xe trong gara.

  2. Đối tác tìm cách cập nhật phương tiện qua đêm khi phương tiện tương tác khó có thể xảy ra.

  3. Máy chủ đám mây của đối tác gửi tác vụ từ xa của hệ thống cập nhật tới xe. Cụ thể là bộ điều khiển viễn thông (TCU).

  4. TCU của xe đánh thức bộ điều khiển điện tử Android (ECU) và dịch vụ OEM sẽ kích hoạt chế độ Garage.

  5. Android chạy chế độ Garage để tải xuống và cài đặt các bản cập nhật thông qua Google Play.

  6. Sau khi áp dụng bản cập nhật, Android đánh dấu tác vụ là hoàn thành và kết thúc kết nối hoặc đạt đến thời gian chờ được chỉ định.

Quy trình làm việc chi tiết

Có hai bước quan trọng cần thiết để truy cập từ xa. Đầu tiên là đăng ký ứng dụng khách, tức là liên kết một người dùng cụ thể với một ứng dụng khách tác vụ từ xa cụ thể đang chạy trên một phương tiện cụ thể. Cách còn lại là phân phối một nhiệm vụ, tức là phân phối nhiệm vụ từ xa cho một người dùng cụ thể tới ứng dụng khách nhiệm vụ từ xa cụ thể đang chạy trên phương tiện cụ thể.

Đăng ký khách hàng

Để sử dụng tính năng truy cập từ xa, người dùng phải mở ứng dụng máy khách tác vụ từ xa ít nhất một lần và hoàn tất quá trình đăng ký máy khách (bước in đậm do AAOS triển khai):

  1. Khi khởi động, Dịch vụ ô tô sẽ nhận thông tin về xe từ HAL truy cập từ xa.

  2. Khi khởi động, Car Service khởi chạy tất cả các ứng dụng tác vụ từ xa dựa trên bộ lọc ý định và quyền.

  3. Khi ứng dụng tác vụ từ xa khởi động, ứng dụng tác vụ từ xa sẽ tự đăng ký với Dịch vụ ô tô.

  4. Dịch vụ ô tô thông báo cho khách hàng tác vụ từ xa về thông tin đăng ký, bao gồm ID xe và ID khách hàng. ID khách hàng là duy nhất và được Car Service chỉ định cho khách hàng này. Nó được đảm bảo là duy nhất trong số tất cả các máy khách tác vụ từ xa trên cùng một phương tiện.

  5. Người dùng đăng nhập vào máy chủ tác vụ từ xa thông qua ứng dụng khách tác vụ từ xa và bật tính năng truy cập từ xa cho chiếc xe này. Bước này thường liên quan đến việc xác thực thông qua máy chủ tác vụ từ xa.

  6. Ứng dụng tác vụ từ xa tải thông tin của người dùng cùng với ID phương tiện và ID ứng dụng khách lên máy chủ tác vụ từ xa và yêu cầu nó liên kết người dùng với ứng dụng khách cụ thể này và phương tiện cụ thể này.

    Tùy chọn, bước này có thể liên quan đến xác thực hai yếu tố bổ sung từ người dùng.

    Máy chủ tác vụ từ xa phải xác thực rằng ID phương tiện được cung cấp trong yêu cầu khớp với ID phương tiện của người gửi, việc này có thể được thực hiện thông qua chứng thực phương tiện.

Trừ khi quá trình khôi phục cài đặt gốc diễn ra, quy trình đăng ký khách hàng được yêu cầu một lần cho mỗi người dùng trên mỗi xe. ID khách hàng được lưu trữ cục bộ trong Dịch vụ ô tô và giữ nguyên cho cùng một khách hàng.

image

Hình 2. Đăng ký một khách hàng.

Hủy đăng ký khách hàng

Người dùng có thể hủy liên kết xe khỏi tài khoản của họ khỏi xe hoặc từ máy chủ tác vụ từ xa. Trên:

  • Xe, người dùng có thể mở ứng dụng khách nhiệm vụ từ xa và đưa ra yêu cầu hủy liên kết để hủy liên kết chiếc xe này khỏi các tài khoản người dùng đã liên kết trước đó.

  • Máy chủ tác vụ từ xa, người dùng có thể đăng nhập vào tài khoản của mình và hủy liên kết xe đã liên kết trước đó khỏi tài khoản này.

Nếu người dùng hủy liên kết xe khỏi tài khoản của họ, máy chủ tác vụ từ xa phải xóa bản đồ đã lưu trữ cho người dùng cụ thể.

Giao nhiệm vụ

Trong đám mây:

  1. Người dùng sử dụng máy chủ tác vụ từ xa để gửi tác vụ từ xa đến một phương tiện cụ thể.

  2. Máy chủ tác vụ từ xa ánh xạ ID người dùng tới ID xe và ID khách hàng. Nó gửi Dữ liệu tác vụ, ID phương tiện và ID khách hàng đến máy chủ Wake-up.

  3. Máy chủ đánh thức tìm thấy TCU cụ thể cho ID xe. Chúng tôi giả sử việc đăng ký TCU đã được thực hiện) và gửi Dữ liệu nhiệm vụ và ID khách hàng đến TCU.

Trên xe (chữ in đậm biểu thị các công việc do AAOS thực hiện):

  1. TCU nhận nhiệm vụ từ xa từ máy chủ từ xa.

  2. Nếu bộ xử lý ứng dụng (AP) chạy AAOS tắt, TCU sẽ sử dụng bộ xử lý phương tiện (VP) để đánh thức AP.

  3. Dịch vụ ô tô nhận nhiệm vụ từ TCU.

  4. Dịch vụ ô tô phân phối nhiệm vụ cho ứng dụng khách nhiệm vụ từ xa tương ứng.

  5. Máy khách tác vụ từ xa nhận và thực hiện tác vụ.

    ( Tùy chọn ) Máy khách tác vụ từ xa liên hệ với máy chủ tác vụ để biết thêm chi tiết về tác vụ và thực thi tác vụ.

  6. ( Tùy chọn ) Dịch vụ máy khách tác vụ từ xa báo cáo kết quả tác vụ cho máy chủ tác vụ.

  7. Ứng dụng khách tác vụ từ xa sẽ thông báo cho Dịch vụ ô tô khi tác vụ hoàn thành.

  8. Nếu được yêu cầu, Dịch vụ ô tô sẽ khôi phục trạng thái nguồn của xe.

image

Hình 3. Giao nhiệm vụ.

Viết một ứng dụng khách tác vụ từ xa

CarRemoteAccessManager cung cấp API cho các tính năng truy cập từ xa. Để tìm hiểu thêm, hãy xem CarRemoteAccessManager . Ứng dụng khách tác vụ từ xa là một dịch vụ Android thực thi các tác vụ từ xa và sử dụng CarRemoteAccessManager . Điều này yêu cầu PERMISSION_USE_REMOTE_ACCESSPERMISSION_CONTROL_REMOTE_ACCESS đồng thời phải khai báo bộ lọc ý định cho RemoteTaskClientService , chẳng hạn như:

<service android:name=".remoteaccess.RemoteTaskClientService"
         android:directBootAware="true"
         android:exported="true">
    <intent-filter>
       <action android:name="android.car.remoteaccess.RemoteTaskClientService" />
    </intent-filter>
</service>

Máy khách tác vụ từ xa phải tự đăng ký với Dịch vụ ô tô trong quá trình tạo:

public final class RemoteTaskClientService extends Service {
    @Override
    public void onCreate() {
        // mCar = Car.createCar()...
        mRemoteAccessManager = (CarRemoteAccessManager)
            mcar.getCarManager(Car.CAR_REMOTE_ACCESS_SERVICE);
        if (mRemoteAccessManager == null) {
            // Remote access feature is not supported.
            return;
        }
        mRemoteAccessManager.setRemoteTaskClient(executor, mRemoteTaskClient);
    }
}

Nó phải ghi đè hàm onBind để trả về null.

@Override
public IBinder onBind(Intent intent) {
    return null;
}

Dịch vụ ô tô quản lý vòng đời của nó. Dịch vụ ô tô liên kết với dịch vụ này trong quá trình khởi động và khi có tác vụ từ xa đến. Dịch vụ ô tô hủy liên kết với dịch vụ này khi nhiệm vụ hoàn tất. Để tìm hiểu thêm, hãy xem Quản lý vòng đời của một dịch vụ .

Máy khách tác vụ từ xa chạy với tư cách là người dùng hệ thống nên nó không có quyền truy cập vào bất kỳ dữ liệu cụ thể nào của người dùng.

Ví dụ sau đây cho thấy cách xử lý các lệnh gọi lại đã đăng ký:

private final class RemoteTaskClient
    implements CarRemoteAccessManager.RemoteTaskClientCallback {
    @Override
    public void onRegistrationUpdated(
        RemoteTaskClientRegistrationInfo info) {
        // Register to remote task server using info.
    }
    @Override
    public void onRemoteTaskRequested(String taskId,
        byte[] data, int remainingTimeSec) {
        // Parses the data and execute the task.
        // Report task result to remote task server.
        mRemoteAccessManager.reportRemoteTaskDone(taskId);
    }
    @Override
    public void onShutdownStarting(CompleteableRemoteTaskFuture future) {
        // Stop the executing task.
        // Clear the pending task queue.
        future.complete();
    }
}

Nhà cung cấp thực hiện

Tính năng truy cập từ xa là tùy chọn và bị tắt theo mặc định. Để bật tính năng này, hãy thêm RRO như sau:

// res/xml/overlays.xml
<?xml version="1.0" encoding="utf-8"?>
<overlay>
    <item target="array/config_allowed_optional_car_features" value="@array/config_allowed_optional_car_features" />
</overlay>

// res/values/config.xml
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <string-array translatable="false" name="config_allowed_optional_car_features">
        <item>car_remote_access_service</item>
    </string-array>
</resources>

// Android.bp
runtime_resource_overlay {
    name: "RemoteAccessOverlay",
    resource_dirs: ["res"],
    manifest: "AndroidManifest.xml",
    sdk_version: "current",
    product_specific: true
}

Hoặc sử dụng lệnh adb sau trên bản dựng userdebug/eng:

adb shell cmd car_service enable-feature car_remote_access_service

Yêu cầu trên Android

HAL truy cập từ xa

Lớp trừu tượng phần cứng truy cập từ xa (HAL) là lớp trừu tượng do nhà cung cấp triển khai để liên lạc giữa AAOS và một ECU khác (ví dụ: TCU). Việc hỗ trợ tính năng truy cập từ xa là bắt buộc. Nó không cần phải được triển khai nếu tính năng truy cập từ xa không được triển khai.

Giao diện được xác định tại IRemoteAccess.aidl và bao gồm các phương thức sau:

Lớp học Sự miêu tả
String getVehicleId() Nhận ID xe duy nhất có thể được máy chủ đánh thức nhận dạng.
String getWakeupServiceName() Lấy tên cho máy chủ Wake-up từ xa.
String getProcessorId() Nhận ID bộ xử lý duy nhất có thể được nhận dạng bằng cách đánh thức máy khách.
void setRemoteTaskCallback(IRemoteTaskCallback callback)

Đặt lệnh gọi lại được gọi khi có yêu cầu tác vụ từ xa.

void clearRemoteTaskCallback() Xóa lệnh gọi lại tác vụ từ xa đã đặt trước đó.
void notifyApStateChange(in ApState state)

Phát hiện xem bộ xử lý ứng dụng có sẵn sàng nhận các tác vụ từ xa hay không.

Giao diện gọi lại được xác định tại IRemoteTaskCallback.aid .

Lớp học Sự miêu tả
oneway void onRemoteTaskRequested(String clientId, in byte[] data)

Lệnh gọi lại được gọi khi một tác vụ từ xa được yêu cầu.

Xem cách triển khai tham chiếu với TCU bên ngoài. Việc triển khai sử dụng luồng đọc tồn tại lâu dài để nhận các tác vụ từ xa và hỗ trợ lệnh debug sau:

dumpsys android.hardware.automotive.remoteaccess.IRemoteAccess/default

Xe HAL

Để hỗ trợ tính năng truy cập từ xa, VHAL phải hỗ trợ các thuộc tính sau:

Lớp học Sự miêu tả
SHUTDOWN_REQUEST Yêu cầu tắt thiết bị đầu.
VEHICLE_IN_USE
  • Phát hiện nếu chiếc xe đang được sử dụng.
  • Sau khi người dùng mở khóa xe hoặc khi người dùng đến gần xe. Phải là true .
  • Khoảng thời gian cụ thể sau khi người dùng tắt xe hoặc khi người dùng khóa xe. false .
  • Khi true , AAOS không cố gắng tắt xe khi tác vụ từ xa hoàn thành.

Để tìm hiểu thêm, hãy xem Thuộc tính hệ thống được hỗ trợ .

Chế độ im lặng

Chế độ im lặng phải được hỗ trợ cho tính năng truy cập từ xa để xe có thể khởi động ở chế độ im lặng nhằm thực hiện các tác vụ từ xa khi không có người dùng. Với chế độ im lặng, thiết bị AAOS khởi động khi màn hình và âm thanh bị tắt.

Chế độ im lặng được điều khiển thông qua hai tệp sysfs nhân Linux.

Lớp học Sự miêu tả
/sys/kernel/silent_boot/pm_silentmode_kernel_state

Đại diện cho chế độ im lặng hiện tại.

/sys/kernel/silent_boot/pm_silentmode_hw_state

Biểu thị tín hiệu phần cứng để đặt chế độ im lặng mới.

Bộ xử lý của xe gửi tín hiệu CTNH tới Android SoC để bật/tắt chế độ Im lặng. Tín hiệu (0 hoặc 1) được ghi vào /sys/kernel/silent_boot/pm_silentmode_hw_state . Sau đó, khung AAOS cập nhật /sys/kernel/silent_boot/pm_silentmode_kernel_state tương ứng thể hiện chế độ Im lặng hiện tại. Các mô-đun AAOS kiểm tra /sys/kernel/silent_boot/pm_silentmode_kernel_state để biết hệ thống có ở chế độ Im lặng hay không.

Khi nhận được tác vụ từ xa và AAOS khởi động, bộ xử lý của xe sẽ đặt chế độ Im lặng và khởi động AAOS để hệ thống khởi động ở chế độ tắt màn hình/âm thanh.

Các thành phần không phải Android trên xe

Bộ xử lý xe

Bộ xử lý xe là bộ xử lý trong xe có thể điều khiển nguồn điện cho bộ xử lý ứng dụng chạy Android. Trong kiến ​​trúc ví dụ, TCU đánh thức bộ xử lý ứng dụng bằng cách gửi tín hiệu đến bộ xử lý xe.

Các thành phần không phải Android trên xe

TCU của xe luôn có thể nhận được tin nhắn từ xa.

Ứng dụng khách Wake-up chạy trên TCU để đảm bảo kết nối lâu dài với máy chủ Wake-up từ xa.

AAOS chạy trên AP có thể giao tiếp với ứng dụng Wake-up chạy trên TCU thông qua HAL truy cập từ xa.

image

Hình 4. TCU (Máy khách đánh thức).

Các thành phần trên đám mây

Máy chủ đánh thức

Máy chủ Wake-up liên lạc với máy khách Wake-up trên TCU để:

  • Duy trì kết nối lâu dài với TCU của xe.
  • Tìm một TCU cụ thể dựa trên ID xe.
  • Báo cáo tình trạng của xe. Ví dụ: trực tuyến hoặc ngoại tuyến hoặc lần trực tuyến cuối cùng tới máy chủ tác vụ từ xa.

Trong triển khai thực tế, máy chủ Wake-up có thể được hợp nhất với máy chủ tác vụ từ xa.

Máy chủ tác vụ từ xa

Máy chủ tác vụ từ xa quản lý các tác vụ từ xa này.

  • Người dùng tương tác với máy chủ để bắt đầu các tác vụ từ xa mới và giám sát các tác vụ từ xa.

  • Sử dụng máy chủ Wake-up từ xa để đánh thức bộ xử lý ứng dụng trong xe.

  • Tương tác với máy khách tác vụ từ xa đang chạy trên xe.

  • Lưu trữ thông tin đăng ký của khách hàng. Điều này liên kết một người dùng cụ thể với một ứng dụng khách tác vụ từ xa cụ thể trên một phương tiện cụ thể.

Thông thường, 'dữ liệu tác vụ' được gửi qua máy chủ tác vụ từ xa đến máy chủ đánh thức, tới TCU của xe và cuối cùng đến máy khách tác vụ từ xa chỉ đơn giản là một ID tác vụ. Máy khách tác vụ từ xa sẽ sử dụng ID tác vụ để lấy thông tin chi tiết từ máy chủ tác vụ từ xa.

Yêu cầu về quyền riêng tư và bảo mật

Nhiệm vụ Tình trạng Yêu cầu
TCU (Khách hàng đánh thức) PHẢI
  • Xác thực máy chủ Wake-up.
  • Hãy tin tưởng vào mã.
Máy chủ đánh thức PHẢI
  • Chỉ cho phép các máy chủ tác vụ từ xa được liệt kê cho phép kết nối.
  • Xác thực ứng dụng khách Wake-up.
  • Chỉ gửi tin nhắn đánh thức đến xe mục tiêu.
Máy khách tác vụ từ xa PHẢI
  • Xác thực người dùng trong quá trình đăng ký.
  • Xác thực máy chủ tác vụ từ xa.
  • Đáp ứng tất cả các yêu cầu bảo mật cho dịch vụ Android. Ví dụ: quyền hạn chế.
Máy chủ tác vụ từ xa PHẢI
  • Phải xác thực máy chủ Wake-up.
  • Cung cấp giấy chứng nhận xe. Tức là xác thực rằng ID phương tiện được cung cấp trong yêu cầu khớp với ID phương tiện của người gửi. Nếu không thể chứng thực phương tiện thì phải sử dụng các phương tiện khác để xác minh rằng người dùng hiện đang sở hữu phương tiện.
  • Xác thực danh tính của người dùng.
  • Đáp ứng mọi yêu cầu bảo mật cho một máy chủ xử lý thông tin người dùng.

Khôi phục cài đặt gốc và chuyển quyền sở hữu

Nếu người dùng thực hiện khôi phục cài đặt gốc, ID khách hàng được lưu trong Dịch vụ ô tô sẽ bị xóa. Tuy nhiên, các máy chủ (máy chủ tác vụ từ xa và máy chủ đánh thức từ xa) không được thông báo. Các máy chủ giữ lại ánh xạ từ ID khách hàng hiện đã hết hạn tới xe. Do đó, nếu người dùng bắt đầu một tác vụ từ xa mới cho xe thì tác vụ đó sẽ sử dụng ID khách hàng đã hết hạn. Xe đã được đánh thức nhưng tác vụ từ xa không thể thực thi được do ứng dụng tác vụ từ xa có ID ứng dụng khách khác không khớp.

Phần sau đây mô tả một cách triển khai có thể áp dụng cho khôi phục cài đặt gốc.

Khi người dùng khôi phục cài đặt gốc, nhà cung cấp sẽ nhắc người dùng đăng nhập vào máy chủ tác vụ từ xa và hủy liên kết xe khỏi tài khoản của họ nếu trước đó người dùng đã liên kết xe. Thiết bị không được đảm bảo có quyền truy cập mạng trong thời gian khôi phục cài đặt gốc. Do đó, việc đưa ra yêu cầu hủy liên kết tại thời điểm khôi phục cài đặt gốc cho thiết bị có thể không khả thi.

Bất cứ khi nào quyền sở hữu một chiếc xe được chuyển giao, một số thao tác phải được thực hiện để đảm bảo chủ sở hữu trước đó không thể ra lệnh từ xa cho chiếc xe đó nữa. Ví dụ: chủ sở hữu mới có thể được yêu cầu:

  • Thực hiện khôi phục cài đặt gốc. Điều này đảm bảo ID khách hàng được tạo lại. Sau bước này, chủ xe trước đó vẫn có thể đánh thức xe nhưng không thể thực hiện các tác vụ từ xa được nữa.

  • Mở ứng dụng khách nhiệm vụ từ xa và làm theo quy trình Hủy đăng ký khách hàng để hủy liên kết xe khỏi tài khoản của chủ sở hữu trước đó. Chủ sở hữu mới có thể làm theo quy trình đăng ký khách hàng để liên kết xe với tài khoản của họ và thay thế tài khoản được liên kết trước đó.

  • Chủ sở hữu mới có thể sử dụng quy trình Đăng ký khách hàng để liên kết xe với tài khoản của họ và thay thế tài khoản được liên kết trước đó.

Kiểm tra máy khách tác vụ từ xa

Chúng tôi cung cấp thư mục default HAL truy cập từ xa tham chiếu để kiểm tra các máy khách tác vụ từ xa. Bạn có thể sử dụng lệnh debug sau để đưa một tác vụ từ xa giả vào HAL, tác vụ này sẽ được chuyển tiếp đến ứng dụng tác vụ từ xa của bạn nếu bạn cung cấp ID ứng dụng khách chính xác. Bạn có thể lấy ID khách hàng bằng cách ghi nhật ký thông tin đăng ký trong quá trình triển khai ứng dụng khách tác vụ từ xa của mình.

adb root && adb shell dumpsys android.hardware.automotive.remoteaccess.IRemoteAccess/default --inject-task [clientID] [taskData]