Index: examples/dart/camera_video/lib/main.dart |
diff --git a/examples/dart/camera_roll/lib/main.dart b/examples/dart/camera_video/lib/main.dart |
similarity index 54% |
copy from examples/dart/camera_roll/lib/main.dart |
copy to examples/dart/camera_video/lib/main.dart |
index d0a1bd7061568f75d038a71838cfb756eecb66d9..4637a211271dbe9a30fbb4f41c295e357ed2cbe3 100644 |
--- a/examples/dart/camera_roll/lib/main.dart |
+++ b/examples/dart/camera_video/lib/main.dart |
@@ -2,8 +2,9 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-// This example makes use of mojo:camera_roll which is available only when |
-// running on Android. |
+// This example makes use of mojo:camera which is available only when |
+// running on Android. It repeatedly captures camera video frame images |
+// and displays it in a mojo view. |
// |
// Example usage: |
// pub get |
@@ -13,19 +14,20 @@ |
import 'dart:sky'; |
import 'dart:typed_data'; |
-import 'package:mojo_services/mojo/camera_roll.mojom.dart'; |
+import 'package:mojo_services/mojo/camera.mojom.dart'; |
import 'package:sky/services.dart'; |
-final CameraRollServiceProxy cameraRoll = new CameraRollServiceProxy.unbound(); |
-Image currentImage; |
-int photoIndex = 0; |
+Image image = null; |
+final CameraServiceProxy camera = new CameraServiceProxy.unbound(); |
Picture paint(Rect paintBounds) { |
PictureRecorder recorder = new PictureRecorder(); |
- Canvas canvas = new Canvas(recorder, paintBounds); |
- Paint paint = new Paint()..color = const Color.fromARGB(255, 0, 255, 0); |
- if (currentImage != null) { |
- canvas.drawImage(currentImage, new Point(0.0, 0.0), paint); |
+ if (image != null) { |
+ Canvas canvas = new Canvas(recorder, paintBounds); |
+ canvas.translate(paintBounds.width / 2.0, paintBounds.height / 2.0); |
+ canvas.scale(0.3, 0.3); |
+ Paint paint = new Paint()..color = const Color.fromARGB(255, 0, 255, 0); |
+ canvas.drawImage(image, new Point(-image.width / 2.0, -image.height / 2.0), paint); |
} |
return recorder.endRecording(); |
} |
@@ -53,44 +55,25 @@ void beginFrame(double timeStamp) { |
view.scene = scene; |
} |
-void getPhoto() { |
- var future = cameraRoll.ptr.getPhoto(photoIndex); |
+void drawNextPhoto() { |
+ var future = camera.ptr.getLatestFrame(); |
future.then((response) { |
- if (response.photo == null) { |
- print("Photo $photoIndex not found, returning to the first photo."); |
- cameraRoll.ptr.update(); |
- photoIndex = 0; |
- getPhoto(); |
+ if (response.content == null) { |
+ drawNextPhoto(); |
return; |
} |
- |
- new ImageDecoder(response.photo.content.handle.h, (image) { |
- if (image != null) { |
- currentImage = image; |
- print("view.scheduleFrame"); |
+ new ImageDecoder(response.content.handle.h, (frame) { |
+ if (frame != null) { |
+ image = frame; |
view.scheduleFrame(); |
+ drawNextPhoto(); |
} |
}); |
}); |
} |
-bool handleEvent(Event event) { |
- if (event.type == 'pointerdown') { |
- return true; |
- } |
- |
- if (event.type == 'pointerup') { |
- photoIndex++; |
- getPhoto(); |
- return true; |
- } |
- |
- return false; |
-} |
- |
void main() { |
- embedder.connectToService("mojo:camera_roll", cameraRoll); |
view.setFrameCallback(beginFrame); |
- view.setEventCallback(handleEvent); |
- getPhoto(); |
-} |
+ embedder.connectToService("mojo:camera", camera); |
+ drawNextPhoto(); |
+} |