camfocus 0.0.7
camfocus: ^0.0.7 copied to clipboard
A Flutter plugin to control the camera's focus distance, autofocus, and zoom levels (0.5x, 1x, etc.) on Android devices.
CamfocusPlugin #
CamfocusPlugin é uma biblioteca Flutter para controlar a câmera do dispositivo utilizando APIs nativas do Android. Com essa biblioteca, você pode ajustar manualmente o foco, controlar o zoom, capturar imagens e pré-visualizar a câmera dentro do seu aplicativo Flutter.
Funcionalidades #
- Pré-visualização da Câmera: Exibe a imagem da câmera dentro de um
TextureView. - Ajuste Manual do Foco: Define a distância de foco da câmera manualmente.
- Foco Automático: Ativa ou desativa o foco automático.
- Controle de Zoom: Ajusta o nível de zoom da câmera.
- Captura de Imagem: Tira fotos e salva no armazenamento externo do dispositivo.
Instalação #
-
Adicione a biblioteca ao seu projeto Flutter: Adicione a dependência ao arquivo
pubspec.yaml:dependencies: camfocus: ^1.0.0 -
Configure o AndroidManifest.xml: No seu projeto Flutter, adicione as seguintes permissões ao arquivo
AndroidManifest.xml:<uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> -
Configuração mínima do SDK: Verifique se você definiu o nível mínimo de SDK para 21 no arquivo
android/app/build.gradle:defaultConfig { minSdkVersion 21 }
Utilização #
1. Pré-visualização da Câmera #
Para exibir a pré-visualização da câmera no seu aplicativo Flutter, adicione um PlatformView em sua interface:
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
class CameraPreviewWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
height: 400,
child: AndroidView(
viewType: 'camfocus_preview',
creationParamsCodec: StandardMessageCodec(),
),
);
}
}
2. Ajuste Manual do Foco #
Você pode ajustar a distância de foco da câmera utilizando o método setFocusDistance. O valor da distância é fornecido em metros (float).
import 'package:flutter/services.dart';
class CameraController {
static const platform = MethodChannel('camfocus');
Future<void> setFocusDistance(double distance) async {
try {
await platform.invokeMethod('setFocusDistance', {'distance': distance});
} catch (e) {
print("Erro ao ajustar o foco: $e");
}
}
}
3. Ativar/Desativar o Foco Automático #
Use o método setAutoFocus para ativar ou desativar o foco automático da câmera:
Future<void> setAutoFocus(bool enabled) async {
try {
await platform.invokeMethod('setAutoFocus', {'enabled': enabled});
} catch (e) {
print("Erro ao ajustar o foco automático: $e");
}
}
4. Ajuste de Zoom #
Você pode ajustar o zoom da câmera utilizando o método setZoom. O valor de zoom deve ser um float, onde 1.0 é o zoom padrão.
Future<void> setZoom(double zoomFactor) async {
try {
await platform.invokeMethod('setZoom', {'zoomFactor': zoomFactor});
} catch (e) {
print("Erro ao ajustar o zoom: $e");
}
}
5. Captura de Imagem #
Para capturar uma imagem e salvá-la no armazenamento externo, use o método takePicture. A função retorna o caminho do arquivo salvo:
Future<String?> takePicture() async {
try {
final String? imagePath = await platform.invokeMethod('takePicture');
return imagePath;
} catch (e) {
print("Erro ao capturar imagem: $e");
return null;
}
}
6. Verificar se a Câmera está Pronta #
Para verificar se a câmera já foi inicializada e está pronta para uso, utilize o método isCameraReady:
Future<bool> isCameraReady() async {
try {
final bool isReady = await platform.invokeMethod('isCameraReady');
return isReady;
} catch (e) {
print("Erro ao verificar o estado da câmera: $e");
return false;
}
}
API de Métodos #
| Método | Descrição | Parâmetros |
|---|---|---|
setFocusDistance |
Ajusta a distância de foco da câmera (manual). | distance (float): distância de foco em metros. |
setAutoFocus |
Ativa ou desativa o foco automático. | enabled (bool): true para ativar o foco automático, false para desativar. |
setZoom |
Ajusta o nível de zoom da câmera. | zoomFactor (float): nível de zoom, onde 1.0 é o valor padrão. |
takePicture |
Captura uma imagem e salva no armazenamento externo. | Nenhum. Retorna o caminho da imagem capturada. |
isCameraReady |
Verifica se a câmera foi inicializada e está pronta. | Nenhum. Retorna true se a câmera estiver pronta, false caso contrário. |
Requisitos #
- Flutter 2.0+
- Android SDK 21+
- Permissões: A câmera requer permissões de câmera e armazenamento para funcionar corretamente.
Contribuindo #
Se você quiser contribuir para o desenvolvimento da biblioteca, sinta-se à vontade para abrir issues ou pull requests no repositório.
Licença #
Esta biblioteca está licenciada sob a licença MIT. Para mais informações, consulte o arquivo LICENSE.