Мы пытаемся интегрировать Reticulum Network Stack в CivTAK в рамках нашего старшего дизайнерского проекта и изначально пытались полностью работать с плагином, но в конечном итоге столкнулись с конфликтами между его средой и мостом, который мы использовали для интеграции сетевого стека на основе Python, Chaquopy.Это приведет к нам изучили, как аналогичные плагины решают эту проблему, и увидели, что Meshtastic решает ее, привязывая свой плагин CivTAK к удаленной службе Foreground Service, созданной их приложением Android, в котором размещается сетевой стек.
Мы решили продолжить этот подход и начали разработку отдельного приложения, основанного на их подходе к созданию службы, на которой будет размещаться RNS. Приложение успешно загружается и создает экземпляр службы на основе того, что происходит в отладчике, и отзывов от logcat; он также появляется в списке служб на наших телефонах с Android 12 (но не на наших телефонах с Android 13).
Когда плагин CivTAK пытается привязаться к службе, метод bindService возвращает false, а logcat отображает ошибку. сообщение
Невозможно запустить службу. Намерение { cmp="com.ed2group.RTAKService/.RNSService } U=0: не найдено
Приложение-служба MainActivity
Код: Выделить всё
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent(this, RNSService.class);
startForegroundService(intent);
finish();
}
}
Код: Выделить всё
package com.ed2group.RTAKService;
public class RNSService extends android.app.Service {
\\ Stripped out Binder Stub definitions, members, and assistive methods
@Override
public void onCreate() {
try {
// RNS & misc initialization code.
startForeground(21124, createNotification());
Log.i(TAG, "onCreate: Initialization successful!");
}
catch (Exception e) {
Log.e(TAG, "onCreate: ", e);
}
}
Код: Выделить всё
Код: Выделить всё
rtakServiceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
Toast.makeText(mapView.getContext(), "Successfully connected to RTAKService", Toast.LENGTH_LONG).show();
rtakService = IRNSService.Stub.asInterface(iBinder);
isConnected = true;
}
@Override
public void onServiceDisconnected(ComponentName componentName) {
Toast.makeText(mapView.getContext(), "Disconnected from RTAKService", Toast.LENGTH_LONG).show();
rtakService = null;
isConnected = false;
}
};
Intent serviceIntent = new Intent();
serviceIntent.setClassName("com.ed2group.RTAKService", ".RNSService");
if (!pluginContext.bindService(serviceIntent, rtakServiceConnection, Context.BIND_AUTO_CREATE)) {
Toast.makeText(mapView.getContext(), "Failed to connect to RTAKService", Toast.LENGTH_LONG).show();
return;
}
Код: Выделить всё
Я попробовал следуйте нескольким ресурсам, касающимся связанных сервисов, которые я смог найти в Google, Reddit и YouTube, но ошибка все равно останется прежней. Я также экспериментировал с тем, чтобы сделать его обычным фоновым сервисом, но тоже безуспешно.
Буду очень признателен за любую помощь в связывании нашего плагина с нашим Сервисом, TYVM.< /п>
Подробнее здесь: https://stackoverflow.com/questions/791 ... te-service
Мобильная версия