Android: AtvRemoteProviderService and AOSP firmware

Viewed 607

UPDATE 1:

I forgot to mention that I have defined

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

in frameworks/base/core/res/res/values/config.xml overlay and I have file system/etc/permissions/custom-privapp-permissions.xml with content:

<?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>

on device.

ORIGINAL ISSUE:

I'm having issues with adding AtvRemoteProviderService package (Android TV Package) to AOSP build. I did found out if I want to include this package to my build I also need com.android.media.tv.remoteprovider and com.android.media.tv.remoteprovider.xml packages.

This configuration as I described above works to extend that I can see my device in Android TV Remote Control app on my phone and I can connect to it. This is point where problem occurs.

Remote app can't communicate with device. From logcat I can see error when box is booting (service starts):

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)

then when I connect with phone to device:

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

and each virtual press on phone's virtual dpad results in line in log:

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

Any ideas?

0 Answers
Related