SlideShare ist ein Scribd-Unternehmen logo
1 von 39
Downloaden Sie, um offline zu lesen
Flu$er ❤ ML Kit
Flu$er ❤ ML Kit
조성윤
ParkingBrother CTO

GDG Busan Organizer

@extJo
개발 하다 보면 힘든 점?
Android iOS
Web Desktop
Flu$er? ML Kit?
SDK for Mobile App

based on DaC language
Flu$er is…
Flu$er has…
Built-in beautiful Material Design

and CupeCino widget, rich motion

APIs, smooth natural scrolling, and

plaJorm awareness
Flu$er has…
Develop iOS and Android

App with single code base
Flu$er developed on…
The Fastest growing language

DaC 싫어하지 마세요 ㅠㅠ 

DaC 2.0 좋습니다
Everything is Widget
Declarative UI
// Imperative style

b.setColor(red)

b.clearChildren()

ViewC c3 = new ViewC(...)

b.add(c3)
// Declarative style

return ViewB(

color: red,

child: ViewC(...),

)
Native
Binary
Code
Canvas
Events
Flutter Application
Service
Location
Camera
Bluetooth
Sensors
Platform
Channels
Flutter Widgets
Material Design
Cupertino
Android iOS
Web

(Technical Preview)
Desktop
Android iOS
Web

(Technical Preview)
Desktop
Do You Know…?
Open CV
Object Detection
RNN
CNN
Face Detection
NLP
GAN
그거 인공지능으로 하면 되지않나요?

다른데도 다 하던데…
• Text Recognition - OCR

• Face Detection

• Barcode Scan

• Label Images (Cloud)

• Landmark Detection (Cloud)
Vision
• Identify the language of text (Cloud)

• Generate SmaC replies (Cloud)
Natural Language
• Use Custom Model

• Use custom TensorFlow Lite Build
Custom Model
• Text Recognition - OCR

• Face Detection

• Barcode Scan

• Label Images (Cloud)

• Landmark Detection (Cloud)
Vision
• Identify the language of text (Cloud)

• Generate SmaC replies (Cloud)
Natural Language
• Use Custom Model

• Use custom TensorFlow Lite Build
Custom Model
Let’s Do This 😎
extended
Camera Module

Firebase ML Vision
extended
dependencies:

u]er:

sdk: u]er

camera: ^0.5.1

arebase_ml_vision: ^0.7.0
pubspec.yaml
extended
Firebase Se$ing…😅
extended
void main() => runApp(MaterialApp(home: MLKitSamplePage()));

class MLKitSamplePage extends StatefulWidget {

@override

MLKitSampleState createState() => MLKitSampleState();

}

class MLKitSampleState extends State<MLKitSamplePage> {

...

}
extended
void _initializeCamera() async {

CameraDescription description = await getCamera(_direction);

ImageRotation rotation = rotationIntToImageRotation(

description.sensorOrientation,

);

_cameraController = CameraController(

description,

ResolutionPreset.medium,

);

await _cameraController.initialize();

…

}
extended
@override

Widget build(BuildContext context) {

return Scakold(

appBar: AppBar(

title: const Text('Flu]er ❤ ML Kit'),

),

body: _buildImage(),

oatingActionBu]on: FloatingActionBu]on(

onPressed: _toggleCameraDirection,

child: _direction == CameraLensDirection.back

? const Icon(Icons.camera_front)

: const Icon(Icons.camera_rear),

),

);

}
extended
Widget _buildPopUpMenuBu]on() {

return PopupMenuBu]on<Detector>(

onSelected: ...

itemBuilder: (BuildContext context) => <PopupMenuEntry<Detector>>[

const PopupMenuItem<Detector>(

child: Text('Detect Face'),

value: Detector.face,

),

const PopupMenuItem<Detector>(

child: Text('Detect Text'),

value: Detector.text,

),

],

);

}
extended
@override

Widget build(BuildContext context) {

return Scakold(

appBar: AppBar(

title: const Text('Flu]er ❤ ML Kit'),

actions: <Widget>[

_buildPopUpMenuBu]on()

],

),

...

);

}
extended
HandleDetection _getDetectionMethod() {

anal FirebaseVision mlVision = FirebaseVision.instance;

switch (_currentDetector) {

case Detector.text:

return mlVision.textRecognizer().processImage;

default:

asseC(_currentDetector == Detector.face);

return mlVision.faceDetector().processImage;

}

}
extended
Future<dynamic> detect(

CameraImage image,

HandleDetection handleDetection,

ImageRotation rotation,

) async {

return handleDetection(

FirebaseVisionImage.fromBytes(

concatenatePlanes(image.planes),

buildMetaData(image, rotation),

),

);

}
extended
void _staCImageDetect(ImageRotation rotation) {

_cameraController.staCImageStream((CameraImage image) {

if (_isDetecting) return;

_isDetecting = true;

detect(image, _getDetectionMethod(), rotation).then(

(dynamic result) {

setState(() {

_scanResults = result;

});



…

}
extended
class FaceDetectorPainter extends CustomPainter {

…

@override

void paint(Canvas canvas, Size size) {

anal Paint paint = Paint()

..style = PaintingStyle.stroke

..strokeWidth = 2.0

..color = Colors.red;

for (Face face in faces) {

canvas.drawRect(

…

…

}
extended
class TextDetectorPainter extends CustomPainter {

...

@override

void paint(Canvas canvas, Size size) {

anal Paint paint = Paint()

..style = PaintingStyle.stroke

..strokeWidth = 2.0;

for (TextBlock block in visionText.blocks) {

for (TextLine line in block.lines) {

for (TextElement element in line.elements) {

...

...

}
extended
🤩 Demo 🤩
extended
Less Code

More Functions
Thank You 😎
조성윤
ParkingBrother CTO

GDG Busan Organizer

@extJo

Weitere ähnliche Inhalte

Ähnlich wie io 19 extended android flutter&mlkit

React native introduction
React native introductionReact native introduction
React native introductionInnerFood
 
Leaving Flatland: getting started with WebGL
Leaving Flatland: getting started with WebGLLeaving Flatland: getting started with WebGL
Leaving Flatland: getting started with WebGLgerbille
 
Responsive mobile design in practice
Responsive mobile design in practiceResponsive mobile design in practice
Responsive mobile design in practiceKirill Grouchnikov
 
Shape12 6
Shape12 6Shape12 6
Shape12 6pslulli
 
BlackBerry10 apps with Adobe AIR & Apache Flex - BlackBerry JAM Europe
BlackBerry10 apps with Adobe AIR & Apache Flex - BlackBerry JAM EuropeBlackBerry10 apps with Adobe AIR & Apache Flex - BlackBerry JAM Europe
BlackBerry10 apps with Adobe AIR & Apache Flex - BlackBerry JAM EuropeMariano Carrizo
 
Non Conventional Android Programming (English)
Non Conventional Android Programming (English)Non Conventional Android Programming (English)
Non Conventional Android Programming (English)Davide Cerbo
 
Non Conventional Android Programming En
Non Conventional Android Programming EnNon Conventional Android Programming En
Non Conventional Android Programming Enguest9bcef2f
 
Android Development with Flash Builder Burrito
Android Development with Flash Builder BurritoAndroid Development with Flash Builder Burrito
Android Development with Flash Builder BurritoJeff Bollinger
 
426 lecture 4: AR Developer Tools
426 lecture 4: AR Developer Tools426 lecture 4: AR Developer Tools
426 lecture 4: AR Developer ToolsMark Billinghurst
 
I phone勉強会 (2011.11.23)
I phone勉強会 (2011.11.23)I phone勉強会 (2011.11.23)
I phone勉強会 (2011.11.23)Katsumi Kishikawa
 
Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics Eliran Eliassy
 
React native introduction
React native introductionReact native introduction
React native introductionInnerFood
 
Tools and practices for rapid application development
Tools and practices for rapid application developmentTools and practices for rapid application development
Tools and practices for rapid application developmentZoltán Váradi
 
WebGL: GPU acceleration for the open web
WebGL: GPU acceleration for the open webWebGL: GPU acceleration for the open web
WebGL: GPU acceleration for the open webpjcozzi
 
SVCC 2013 D3.js Presentation (10/05/2013)
SVCC 2013 D3.js Presentation (10/05/2013)SVCC 2013 D3.js Presentation (10/05/2013)
SVCC 2013 D3.js Presentation (10/05/2013)Oswald Campesato
 
GDG Kuwait - Modern android development
GDG Kuwait - Modern android developmentGDG Kuwait - Modern android development
GDG Kuwait - Modern android developmentGDGKuwaitGoogleDevel
 
Android Camera Architecture
Android Camera ArchitectureAndroid Camera Architecture
Android Camera ArchitecturePicker Weng
 

Ähnlich wie io 19 extended android flutter&mlkit (20)

React native introduction
React native introductionReact native introduction
React native introduction
 
Leaving Flatland: getting started with WebGL
Leaving Flatland: getting started with WebGLLeaving Flatland: getting started with WebGL
Leaving Flatland: getting started with WebGL
 
Responsive mobile design in practice
Responsive mobile design in practiceResponsive mobile design in practice
Responsive mobile design in practice
 
Shape12 6
Shape12 6Shape12 6
Shape12 6
 
BlackBerry10 apps with Adobe AIR & Apache Flex - BlackBerry JAM Europe
BlackBerry10 apps with Adobe AIR & Apache Flex - BlackBerry JAM EuropeBlackBerry10 apps with Adobe AIR & Apache Flex - BlackBerry JAM Europe
BlackBerry10 apps with Adobe AIR & Apache Flex - BlackBerry JAM Europe
 
Non Conventional Android Programming (English)
Non Conventional Android Programming (English)Non Conventional Android Programming (English)
Non Conventional Android Programming (English)
 
Non Conventional Android Programming En
Non Conventional Android Programming EnNon Conventional Android Programming En
Non Conventional Android Programming En
 
Android Development with Flash Builder Burrito
Android Development with Flash Builder BurritoAndroid Development with Flash Builder Burrito
Android Development with Flash Builder Burrito
 
426 lecture 4: AR Developer Tools
426 lecture 4: AR Developer Tools426 lecture 4: AR Developer Tools
426 lecture 4: AR Developer Tools
 
I phone勉強会 (2011.11.23)
I phone勉強会 (2011.11.23)I phone勉強会 (2011.11.23)
I phone勉強会 (2011.11.23)
 
mobl
moblmobl
mobl
 
Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics
 
3.2 ws WMS.pdf
3.2 ws WMS.pdf3.2 ws WMS.pdf
3.2 ws WMS.pdf
 
React native introduction
React native introductionReact native introduction
React native introduction
 
Tools and practices for rapid application development
Tools and practices for rapid application developmentTools and practices for rapid application development
Tools and practices for rapid application development
 
WebGL: GPU acceleration for the open web
WebGL: GPU acceleration for the open webWebGL: GPU acceleration for the open web
WebGL: GPU acceleration for the open web
 
Svcc 2013-d3
Svcc 2013-d3Svcc 2013-d3
Svcc 2013-d3
 
SVCC 2013 D3.js Presentation (10/05/2013)
SVCC 2013 D3.js Presentation (10/05/2013)SVCC 2013 D3.js Presentation (10/05/2013)
SVCC 2013 D3.js Presentation (10/05/2013)
 
GDG Kuwait - Modern android development
GDG Kuwait - Modern android developmentGDG Kuwait - Modern android development
GDG Kuwait - Modern android development
 
Android Camera Architecture
Android Camera ArchitectureAndroid Camera Architecture
Android Camera Architecture
 

Kürzlich hochgeladen

Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost LoverPowerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost LoverPsychicRuben LoveSpells
 
Leading Mobile App Development Companies in India (2).pdf
Leading Mobile App Development Companies in India (2).pdfLeading Mobile App Development Companies in India (2).pdf
Leading Mobile App Development Companies in India (2).pdfCWS Technology
 
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort ServiceBDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort ServiceDelhi Call girls
 
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCRFULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCRnishacall1
 
9999266834 Call Girls In Noida Sector 52 (Delhi) Call Girl Service
9999266834 Call Girls In Noida Sector 52 (Delhi) Call Girl Service9999266834 Call Girls In Noida Sector 52 (Delhi) Call Girl Service
9999266834 Call Girls In Noida Sector 52 (Delhi) Call Girl Servicenishacall1
 

Kürzlich hochgeladen (6)

Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost LoverPowerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
 
Obat Penggugur Kandungan Di Apotik Kimia Farma (087776558899)
Obat Penggugur Kandungan Di Apotik Kimia Farma (087776558899)Obat Penggugur Kandungan Di Apotik Kimia Farma (087776558899)
Obat Penggugur Kandungan Di Apotik Kimia Farma (087776558899)
 
Leading Mobile App Development Companies in India (2).pdf
Leading Mobile App Development Companies in India (2).pdfLeading Mobile App Development Companies in India (2).pdf
Leading Mobile App Development Companies in India (2).pdf
 
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort ServiceBDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
 
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCRFULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
 
9999266834 Call Girls In Noida Sector 52 (Delhi) Call Girl Service
9999266834 Call Girls In Noida Sector 52 (Delhi) Call Girl Service9999266834 Call Girls In Noida Sector 52 (Delhi) Call Girl Service
9999266834 Call Girls In Noida Sector 52 (Delhi) Call Girl Service
 

io 19 extended android flutter&mlkit