Ошибка Android DJI SDK при отображении видео в течение нескольких секунд

Я понятия не имею, почему я получаю эту ошибку:

E/UsbAccessoryService: recvBufferThread.start
E/UsbAccessoryService: RecvOsdRunnable true
E/UsbAccessoryService: rate 0.52 KB
E/UsbAccessoryService: parseVideoThread.start
E/DJIPackManager: pack senderType=14 cmdSet=9
E/UsbAccessoryService: ParseVideoRunnable true
E/DJIBaseProduct: Camera needCreateNew: true
E/DJIBaseProduct: put component
E/DJIBaseProduct: Gimbal needCreateNew: true
E/DJIBaseProduct: put component
E/DJIBaseProduct: FlightController needCreateNew: true
E/DJIBaseProduct: put component
E/DJIBaseProduct: update battery platformType: P4
E/DJIBaseProduct: update battery phantom
E/DJIBaseProduct: Battery needCreateNew: true
E/Event: Could not dispatch event: class dji.midware.data.model.P3.DataEyeGetPushFrontAvoidance to subscribing class class dji.sdk.FlightController.DJIIntelligentFlightAssistant$InnerEventBus
                                                              java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
                                                                  at dji.sdk.FlightController.DJIIntelligentFlightAssistant$InnerEventBus.onEventBackgroundThread(Unknown Source)
                                                                  at java.lang.reflect.Method.invoke(Native Method)
                                                                  at java.lang.reflect.Method.invoke(Method.java:372)
                                                                  at dji.thirdparty.eventbus.EventBus.invokeSubscriber(EventBus.java:569)
                                                                  at dji.thirdparty.eventbus.EventBus.postToSubscription(EventBus.java:513)
                                                                  at dji.thirdparty.eventbus.EventBus.postSingleEvent(EventBus.java:475)
                                                                  at dji.thirdparty.eventbus.EventBus.post(EventBus.java:365)
                                                                  at dji.midware.data.manager.P3.t.post(Unknown Source)
                                                                  at dji.midware.data.manager.P3.t.setPushRecData(Unknown Source)
                                                                  at dji.midware.data.manager.P3.t.setPushRecPack(Unknown Source)
                                                                  at dji.midware.data.manager.P3.l.b(Unknown Source)
                                                                  at dji.midware.data.manager.P3.l.a(Unknown Source)
                                                                  at dji.midware.data.manager.P3.l.a(Unknown Source)
                                                                  at dji.midware.usb.P3.UsbAccessoryService$1.onGetBody(Unknown Source)
                                                                  at dji.midware.f.a.f.b(Unknown Source)
                                                                  at dji.midware.f.a.f.a(Unknown Source)
                                                                  at dji.midware.usb.P3.UsbAccessoryService$RecvBufferRunnable.run(Unknown Source)
                                                                  at java.lang.Thread.run(Thread.java:818)

Видеопоток из TextureView появляется на пару секунд, после чего действие, связанное с отображением видеопотока, выходит в MainActivity. (Я использую MainActivity для перехода к VideoFeedActivity через меню). Я не могу понять, что это за нулевой указатель или откуда он исходит, потому что я верю, что все инициализирую правильно, но, похоже, это не так. В SurfaceTextureListener для реализованной функции onSurfaceTextureUpdated (текстура SurfaceTexture) я выполняю анализ растрового изображения для каждого кадра. Однако я сомневаюсь, что это проблема, я думаю, что это как-то связано с инициализацией объектов дронов и их взаимодействием. Я пытался отключить IntelligentFlightAssistant перед загрузкой видеопотока; однако это никак не повлияло.

1 ответ

Решение

Я понял, в чем проблема:

Я создавал новую тему каждый раз, когда создавался новый кадр для анализа изображения, и это вызывало сбой. Чтобы это исправить, я сделал так, чтобы новый поток создавался только в том случае, если текущий поток не используется. (Я знаю, что этот тип игнорирует назначение потоков, но я не хочу, чтобы это действие замедляло процессы, запускающие приложение). В любом случае это решило проблему, и теперь программа работает нормально.

Другие вопросы по тегам