1

Я создал системный сервис, который связывается с устройством zigbee. Обновлены API и создали system.img и вспыхнули на устройстве и создали пользовательский SDK для программирования на Android.Контекстная ошибка пользовательского системного обслуживания

В классе Mainactivity,

try { 
     ZigbeeManager zm = (ZigbeeManager) getSystemService(Context.ZIGBEE_SERVICE); 
     zm.write("Hello World!\r"); 
    } catch (Exception ex) { 
     Log.d(TAG, "Error in Zigbee Service: " + ex.toString()); 
    } 

Я получаю сообщение об ошибке над словами "Context.ZIGBEE_SERVICE". В нем говорится: «Должно быть одним из следующих: список всех системных служб», когда я наводил на него курсор. Использование других системных служб. Также Zigbee Service доступен в файле Context.class так же, как и другие системные службы.

... 
public static final String WIFI_SERVICE = "wifi"; 
public static final String WINDOW_SERVICE = "window"; 
public static final String ZIGBEE_SERVICE = "zigbee"; 

Теперь при работе на устройстве. Я получаю это сообщение об ошибке на logcat.

01-01 12:09:24.126 6874-6874/com.jcxmej.uartcontrol D/UARTControl: Error in Zigbee Service: java.lang.NullPointerException: Attempt to invoke interface method 'int android.os.IZigbeeService.write(java.lang.String)' on a null object reference 

Объект Null. Нужно ли быть интинизированным, но как? Но я думаю, что это Null, потому что контекст не связан должным образом. Как избавиться от ошибки контекста. Или правильно добавьте сервис Zigbee в контекст.

Я использовал это как справка. https://github.com/nayobix/add-new-hardware-hal-android-5-lollipop

+0

Ссылка, которую вы опубликовали, имеет служебный вызов следующим образом: «SensorHubMgmtManager om = (SensorHubMgmtManager) getSystemService (Context.SENSORHUBMGMT_SERVICE);" – Jim

+0

@ Jim Да. Как и у меня. ZigbeeManager zm = (ZigbeeManager) getSystemService (Context.ZIGBEE_SERVICE); – jcxmej

+0

@UmarAta То не так. Что такое YourService? – jcxmej

ответ

1

Когда регистр системной службы в рамках (предполагается, что вы уже построили службу), вы должны сделать больше, чем добавить имя String вашей службы, вам необходимо выполнить следующие шаги:

  1. Зарегистрируйте свою услугу в SystemServer.java (скопируйте код и добавьте его в список try/catch Список всех услуг).
  2. Добавить AIDL в frameworks/base/core/java/android/os/.
  3. Добавьте свое имя файла serivce в конструкцию внутри frameworks/base/Android.mk.

Вы можете увидеть больше информации в this отличная статья.

+0

Да, проблема была в файле SystemServer, я допустил ошибку в написании getService вместо addService. Затем я столкнулся с проблемой с слоем HAL. Но разобрался только сейчас. Мое приложение взаимодействует с драйвером и оборудованием. Большое спасибо за помощь. – jcxmej

+0

Рад помочь! @JaffinMK –

 Смежные вопросы

  • Нет связанных вопросов^_^