Как сохранить запись микрофона Flutter активной, когда приложение находится в фоновом режиме?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как сохранить запись микрофона Flutter активной, когда приложение находится в фоновом режиме?

Сообщение Anonymous »

Я создаю приложение для записи звука с помощью Flutter, где я хочу записывать звук непрерывно, даже когда приложение работает в фоновом режиме. Я использую пакеты flutter_sound и path_provider для записи звука, как показано в моем коде ниже:

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

import 'package:flutter/material.dart';
import 'package:flutter_sound/flutter_sound.dart';
import 'package:path_provider/path_provider.dart';
import 'dart:io';

class MyApp extends StatelessWidget {
const MyApp({super.key});

@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Audio Recorder',
theme: ThemeData(primarySwatch: Colors.blue),
home: AudioRecorderWidget(),
);
}
}

class AudioRecorderWidget extends StatefulWidget {
@override
_AudioRecorderWidgetState createState() => _AudioRecorderWidgetState();
}

class _AudioRecorderWidgetState extends State {
final FlutterSoundRecorder _recorder = FlutterSoundRecorder();
final FlutterSoundPlayer _player = FlutterSoundPlayer();
bool isRecording = false;
String? filePath;

@override
void initState() {
super.initState();
initAudio();
}

Future initAudio() async {
await _recorder.openRecorder();
await _player.openPlayer();
}

Future startRecording() async {
try {
Directory appDocDir = await getApplicationDocumentsDirectory();
filePath = '${appDocDir.path}/recorded_audio.aac';
await _recorder.startRecorder(toFile: filePath);
setState(() {
isRecording = true;
});
} catch (e) {
print("Error starting recording: $e");
}
}

Future stopRecording() async {
try {
await _recorder.stopRecorder();
setState(() {
isRecording = false;
});
} catch (e) {
print("Error stopping recording: $e");
}
}

Future playRecording() async {
if (filePath != null) {
await _player.startPlayer(fromURI: filePath);
}
}

@override
void dispose() {
_recorder.closeRecorder();
_player.closePlayer();
super.dispose();
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Audio Recorder')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: isRecording ? null : startRecording,
child: Text('Start Recording'),
),
ElevatedButton(
onPressed: isRecording ? stopRecording : null,
child: Text('Stop Recording'),
),
ElevatedButton(
onPressed: !isRecording && filePath != null ? playRecording : null,
child: Text('Play Recording'),
),
if (isRecording)
Padding(
padding: const EdgeInsets.all(8.0),
child: CircularProgressIndicator(),
),
],
),
),
);
}
}

Проблема
Когда я запускаю это приложение, вход микрофона перестает улавливать звук через несколько секунд, когда приложение переходит в фоновый режим. Как только я снова открываю приложение, микрофон возобновляет запись правильно.
Что я пробовал

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

I've read about using Picture-in-Picture mode to keep the app "active," but I would like to explore other options.
I've looked into Flutter's documentation but couldn't find a way to keep the audio recording active in the background.
Требования

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

I want to continue recording audio even when the app is in the background.
I'm aware that iOS and Android have some restrictions regarding background services for battery optimization, but I'd like to know if there is a workaround or permission that allows continuous microphone usage.
Моя среда

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

Flutter version: 3.x
Plugin: flutter_sound for audio recording
Вопрос
Как сохранить запись звука активной, когда приложение работает в фоновом режиме? Существуют ли разрешения, настройки или какие-либо конкретные пакеты, которые мне следует использовать для достижения такого поведения во Flutter?
Будем очень признательны за любые рекомендации или решения!

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

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

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

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

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

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

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