Android: AtvRemoteProviderService и AOSP прошивка - PullRequest
1 голос
/ 12 апреля 2020

ОБНОВЛЕНИЕ 1:

Я забыл упомянуть, что определил

<string translatable="false" name="config_tvRemoteServicePackage">com.google.android.tv.remote.service</string>

в оверлее frameworks/base/core/res/res/values/config.xml и у меня есть файл system/etc/permissions/custom-privapp-permissions.xml с содержанием:

<?xml version="1.0" encoding="utf-8"?>
<permissions>

    <privapp-permissions package="com.google.android.tv.remote.service">
        <permission name="android.permission.ACCESS_COARSE_LOCATION"/>
        <permission name="android.permission.BLUETOOTH_PRIVILEGED"/>
        <permission name="android.permission.CAPTURE_AUDIO_OUTPUT"/>
        <permission name="android.permission.CHANGE_COMPONENT_ENABLED_STATE"/>
        <permission name="android.permission.DUMP"/>
        <permission name="android.permission.HDMI_CEC"/>
        <permission name="android.permission.LOCAL_MAC_ADDRESS"/>
        <permission name="android.permission.MODIFY_AUDIO_ROUTING"/>
        <permission name="android.permission.READ_EXTERNAL_STORAGE"/>
        <permission name="android.permission.READ_LOGS"/>
        <permission name="android.permission.TV_VIRTUAL_REMOTE_CONTROLLER"/>
        <permission name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <permission name="android.permission.WRITE_SECURE_SETTINGS"/>
    </privapp-permissions>

</permissions>

на устройстве.

ОРИГИНАЛЬНЫЙ ВЫПУСК:

У меня проблемы с добавлением пакета AtvRemoteProviderService (Android Пакет ТВ) ) построить AOSP. Я выяснил, хочу ли я включить этот пакет в свою сборку, мне также нужны пакеты com.android.media.tv.remoteprovider и com.android.media.tv.remoteprovider.xml.

Эта конфигурация, как я описал выше, работает для расширения, чтобы я мог видеть свое устройство в Android Приложение TV Remote Control на моем телефоне, и я могу подключиться к нему. Это точка, где возникает проблема.

Удаленное приложение не может связаться с устройством. Из logcat я вижу ошибку при загрузке коробки (служба запускается):

04-12 17:32:16.947  4549  4549 E AtvRemoteProviderService: unable to openRemoteInputBridge() for virtual-search
04-12 17:32:16.947  4549  4549 E AtvRemoteProviderService: java.lang.NullPointerException: Attempt to invoke interface method 'void android.media.tv.ITvRemoteServiceInput.openInputBridge(android.os.IBinder, java.lang.String, int, int, int)' on a null object reference
04-12 17:32:16.947  4549  4549 E AtvRemoteProviderService:  at com.android.media.tv.remoteprovider.TvRemoteProvider.openRemoteInputBridge(TvRemoteProvider.java:129)
04-12 17:32:16.947  4549  4549 E AtvRemoteProviderService:  at com.google.android.tv.remote.service.ap.<init>(SF:7)
04-12 17:32:16.947  4549  4549 E AtvRemoteProviderService:  at com.google.android.tv.remote.service.AtvRemoteProviderService.a(SF:22)
04-12 17:32:16.947  4549  4549 E AtvRemoteProviderService:  at com.google.android.tv.remote.service.RemoteService.a(SF:395)
04-12 17:32:16.947  4549  4549 E AtvRemoteProviderService:  at com.google.android.tv.remote.service.RemoteService.k(SF:414)
04-12 17:32:16.947  4549  4549 E AtvRemoteProviderService:  at com.google.android.tv.remote.service.RemoteService.i(SF:479)
04-12 17:32:16.947  4549  4549 E AtvRemoteProviderService:  at com.google.android.tv.remote.service.ah.onServiceConnected(SF:6)
04-12 17:32:16.947  4549  4549 E AtvRemoteProviderService:  at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1730)
04-12 17:32:16.947  4549  4549 E AtvRemoteProviderService:  at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1762)
04-12 17:32:16.947  4549  4549 E AtvRemoteProviderService:  at android.os.Handler.handleCallback(Handler.java:873)
04-12 17:32:16.947  4549  4549 E AtvRemoteProviderService:  at android.os.Handler.dispatchMessage(Handler.java:99)
04-12 17:32:16.947  4549  4549 E AtvRemoteProviderService:  at android.os.Looper.loop(Looper.java:193)
04-12 17:32:16.947  4549  4549 E AtvRemoteProviderService:  at android.app.ActivityThread.main(ActivityThread.java:6669)
04-12 17:32:16.947  4549  4549 E AtvRemoteProviderService:  at java.lang.reflect.Method.invoke(Native Method)
04-12 17:32:16.947  4549  4549 E AtvRemoteProviderService:  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
04-12 17:32:16.947  4549  4549 E AtvRemoteProviderService:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

, затем при подключении телефона к устройству:

04-12 17:33:01.085  4549  5728 E AtvRemoteProviderService: unable to openRemoteInputBridge() for virtual-remote#88817
04-12 17:33:01.085  4549  5728 E AtvRemoteProviderService: java.lang.NullPointerException: Attempt to invoke interface method 'void android.media.tv.ITvRemoteServiceInput.openInputBridge(android.os.IBinder, java.lang.String, int, int, int)' on a null object reference
04-12 17:33:01.085  4549  5728 E AtvRemoteProviderService:  at com.android.media.tv.remoteprovider.TvRemoteProvider.openRemoteInputBridge(TvRemoteProvider.java:129)
04-12 17:33:01.085  4549  5728 E AtvRemoteProviderService:  at com.google.android.tv.remote.service.ap.<init>(SF:7)
04-12 17:33:01.085  4549  5728 E AtvRemoteProviderService:  at com.google.android.tv.remote.service.AtvRemoteProviderService.a(SF:22)
04-12 17:33:01.085  4549  5728 E AtvRemoteProviderService:  at com.google.android.tv.remote.service.RemoteService.a(SF:395)
04-12 17:33:01.085  4549  5728 E AtvRemoteProviderService:  at com.google.android.tv.remote.service.RemoteService.a(SF:266)
04-12 17:33:01.085  4549  5728 E AtvRemoteProviderService:  at com.google.android.tv.remote.service.RemoteService.a(SF:450)
04-12 17:33:01.085  4549  5728 E AtvRemoteProviderService:  at com.google.android.tv.remote.service.ac.a(SF:278)
04-12 17:33:01.085  4549  5728 E AtvRemoteProviderService:  at com.google.b.a.h.a(SF:73)
04-12 17:33:01.085  4549  5728 E AtvRemoteProviderService:  at com.google.android.tv.remote.service.ad.a(SF:26)
04-12 17:33:01.085  4549  5728 E AtvRemoteProviderService:  at com.google.android.tv.remote.service.ar.b(SF:28)
04-12 17:33:01.085  4549  5728 E AtvRemoteProviderService:  at com.google.android.tv.remote.service.h.b.run(SF:9)
04-12 17:33:01.085  4549  5728 D RemoteService: openInputBridge() remote bridge null

и при каждом виртуальном нажатии на виртуальном dpad телефона результаты в строке в журнале:

04-12 17:33:21.109  4549  5739 E RemoteService: configured successfully but input bridge not initialized

Есть идеи?

...