Создание приложения Android TV для получения данных порта HDMI и отправки их в мое пользовательское приложение

Попытка создать приложение для Android TV, которое будет принимать входные данные с порта HDMI и отображать его в видеопросмотре.

Я загрузил файл библиотеки Realtek и создал потоковую службу. Оборудование: Realtek RTD1295.

Внутри MainFragment создается HDMI Manager. Метод onStart задается следующим образом:

@Override
public void onStart() {
    super.onStart();

    if (preferences == null) {
        preferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
    }

    // halt startup if we don't have all needed permissions
    if (!checkPermissions()) {
        return;
    }

    if (hdmiSurfaceHolderCallback == null) {
        hdmiSurfaceHolderCallback = new HdmiSurfaceHolderCallback();
        surfaceHolder.addCallback(hdmiSurfaceHolderCallback);
    }

    if (hdmiHotplugReceiver == null) {
        hdmiHotplugReceiver = new HdmiHotplugReceiver();
        getActivity().registerReceiver(hdmiHotplugReceiver, new IntentFilter(HDMIRxStatus.ACTION_HDMIRX_PLUGGED));
    }

    if (checkHdmiReadyHandler == null) {
        checkHdmiReadyHandler = new Handler(new Handler.Callback() {
            @Override
            public boolean handleMessage(Message msg) {
                checkHdmiReady();
                return true;
            }
        });
    }

    if (hdmiRxManager == null) {
        hdmiRxManager = new RtkHDMIRxManager(); //Line 128 Of MainFragment
    }

    if (streamActivityReceiver == null) {
        streamActivityReceiver = new StreamActivityReceiver();
        getActivity().registerReceiver(streamActivityReceiver, new IntentFilter(STREAM_ACTIVITY_INTENT));
    }

    if (preferencesChangeListener == null) {
        preferencesChangeListener = new SharedPreferenceChangeListener();
        preferences.registerOnSharedPreferenceChangeListener(preferencesChangeListener);
    }
}

Есть две проблемы,

  1. Первый запуск приложения всегда успешен. Но со второго раза всегда выдает одну и ту же ошибку.
  2. Вход HDMI никогда не обнаруживается, даже когда приложение запускается в первый раз.

Текущая разработка основана на этом проекте

Журнал ошибок выглядит следующим образом:

    Process: com.hydra.sid.hdmistreamer, PID: 5757
                                                                      java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.hydra.sid.hdmistreamer-1/base.apk", zip file"/data/app/com.hydra.sid.hdmistreamer-1/split_lib_dependencies_apk.apk", zip file "/data/app/com.hydra.sid.hdmistreamer-1/split_lib_slice_0_apk.apk", zip file "/data/app/com.hydra.sid.hdmistreamer-1/split_lib_slice_1_apk.apk", zip file "/data/app/com.hydra.sid.hdmistreamer-1/split_lib_slice_2_apk.apk", zip file "/data/app/com.hydra.sid.hdmistreamer-1/split_lib_slice_3_apk.apk", zip file "/data/app/com.hydra.sid.hdmistreamer-1/split_lib_slice_4_apk.apk", zip file "/data/app/com.hydra.sid.hdmistreamer-1/split_lib_slice_5_apk.apk", zip file "/data/app/com.hydra.sid.hdmistreamer-1/split_lib_slice_6_apk.apk", zip file "/data/app/com.hydra.sid.hdmistreamer-1/split_lib_slice_7_apk.apk", zip file "/data/app/com.hydra.sid.hdmistreamer-1/split_lib_slice_8_apk.apk", zip file "/data/app/com.hydra.sid.hdmistreamer-1/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.hydra.sid.hdmistreamer-1/lib/x86, /vendor/lib, /system/lib]]] couldn't find "librealtek_runtime.so"at java.lang.Runtime.loadLibrary(Runtime.java:367)
                                                                          at java.lang.System.loadLibrary(System.java:1076)
                                                                          at com.realtek.hardware.RtkHDMIRxManager.<clinit>(RtkHDMIRxManager.java:30)
                                                                          at com.hydra.sid.hdmistreamer.layout.MainFragment.onStart(MainFragment.java:128)
                                                                          at android.app.Fragment.performStart(Fragment.java:2244)
                                                                          at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1002)
                                                                          at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1148)
                                                                          at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1130)
                                                                          at android.app.FragmentManagerImpl.dispatchStart(FragmentManager.java:1958)
                                                                          at android.app.FragmentController.dispatchStart(FragmentController.java:163)
                                                                          at android.app.Activity.performStart(Activity.java:6259)
                                                                          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)
                                                                          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                                                                          at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                                          at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                          at android.os.Looper.loop(Looper.java:148)
                                                                          at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                          at java.lang.reflect.Method.invoke(Native Method)
                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

person Siddhant Ghosh    schedule 03.10.2017    source источник


Ответы (1)


Я также разработал этот тип проекта и получил ту же ошибку в моей ситуации, это произошло потому, что медиа-бокс, который я использовал, не поддерживал аппаратное обеспечение Realtek, поэтому отметьте поддержку своего ящика и используйте поддержку Realtek, тогда ваше приложение сможет найти Realtek lib из система

person user2734927    schedule 17.04.2019