Flutter MissingPluginException во второй точке входа при запуске из Android FSAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Flutter MissingPluginException во второй точке входа при запуске из Android FS

Сообщение Anonymous »

Я хочу разработать аудиорекордер с пользовательскими моделями машинного обучения, используя onnx во Flutter, в настоящее время я ориентируюсь на Android, а позже я хочу расширить его до IO. В Android я хочу запустить свой дартс-код в службе Android Foreground Service. Я попробовал оба плагина dart pub.dev, с помощью которых могу запустить Flutter_foreground_task и flutter_background_service для Android FS. Однако оба они выдают ошибку «Отсутствует разрешение» из плагина записи, хотя у меня есть разрешение и я могу записывать за пределами ФС.
Сейчас я пытаюсь сделать это напрямую, вызвав Android FS с использованием MethodChannel, а затем запуск Dart Isolate внутри FS. Однако когда вызывается моя вторая точка входа, она не имеет доступа к моим плагинам, таким как Permission_handler и Record.
Вот как я запускаю DartIsolate из своей файловой системы в Kotlin, и это работает!

Код: Выделить всё

private fun startDartIsolate() {

val loader: FlutterLoader = FlutterInjector.instance().flutterLoader()

if (!loader.initialized()) {
loader.startInitialization(applicationContext)
}

applicationContext.let { ctx ->
loader.apply {
startInitialization(ctx)
ensureInitializationComplete(ctx, emptyArray())
}

flutterEngine = FlutterEngine(ctx, null, false, false)
flutterEngine?.serviceControlSurface?.attachToService(this, null, true)
val args: MutableList = MutableList(0) { "" }

val callbackLibraryPath = null
val callbackName = "second"

val entryPoint = DartExecutor.DartEntrypoint(
loader.findAppBundlePath(),
callbackName)

flutterEngine?.getDartExecutor()?.executeDartEntrypoint(entryPoint)
}
Это моя вторая точка входа, определенная в файле main.dart. Он вызывается, и это здорово, но при использовании pmerission_handler или плагина записи выдается эта ошибка.

Код: Выделить всё

Exception has occurred.
MissingPluginException (MissingPluginException(No implementation found for method checkPermissionStatus on channel flutter.baseflow.com/permissions/methods))

Код: Выделить всё

@pragma('vm:entry-point')
void second() async {

WidgetsFlutterBinding.ensureInitialized();
DartPluginRegistrant.ensureInitialized();

final microphonePermission = await Permission.microphone.isGranted;
print("microphonePermission = $microphonePermission");

final accessNotificationPolicy = await Permission.accessNotificationPolicy.isGranted;
print("accessNotificationPolicy = $accessNotificationPolicy");

final notification = await Permission.notification.isGranted;
print("notification = $notification");

final record = AudioRecorder();

final inputDevices = await record.listInputDevices();
final inputDevice = inputDevices[1];
print(inputDevice);

if (await record.hasPermission()) {
print("Permission granted");
} else {
print("Permission denied");
return;
}

final recordConfig = RecordConfig(
encoder: AudioEncoder.pcm16bits, sampleRate: 16000, numChannels: 1, device: inputDevice);

final stream = await record.startStream(recordConfig);
int counter = 0;

stream.listen(
(data) async {
print(data.elementSizeInBytes);
counter++;
if (counter == 100) {
await record.stop();
}
},
onError: (error) {
print("onError error = ${error.toString()}");
},
onDone: () {
print("onDone");
},
);
}
Для ясности: все плагины работают совершенно нормально, но внутри вторичной точки входа — нет. Если у кого-то есть опыт работы с Flutter и Android FS и есть время мне помочь, я буду очень признателен.
Я попробовал все основные плагины Flutter для Android FS, а затем переключился на руководство из:
https://plugfox.dev/android-background- ... h-flutter/
Внутри второй точки входа из в этом руководстве по-прежнему выдается исключение «Отсутствует плагин».

Подробнее здесь: https://stackoverflow.com/questions/787 ... android-fs
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»