Skip to content

[Camera] Add lens type information (iOS) #8723

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 25 commits into from
Mar 25, 2025

Conversation

lenzpaul
Copy link
Contributor

This PR adds lens type information. The goal is to identify whether the lens type is wide, ultra-wide, telephoto, etc., as discussed in flutter/flutter#119908. The iOS implementation is complete, so lens data will now be populated on iOS.

  • Introduces a new CameraLensType enum to provide lens type information about the camera (e.g.: ultra-wide, telephoto, ...)
  • Adds lensType in the PlatformCameraDescription and CameraDescription classes
  • Implements utility functions to convert between PlatformCameraLensType and CameraLensType.
  • Updates auto-generated code (using Pigeon) to reflect these changes.

Current CameraDescription for iPhone 11

[
    CameraDescription(
        com.apple.avfoundation.avcapturedevice.built-in_video:0,
        CameraLensDirection.back,
        90
    ),
    CameraDescription(
        com.apple.avfoundation.avcapturedevice.built-in_video:1,
        CameraLensDirection.front,
        90
    ),
    CameraDescription(
        com.apple.avfoundation.avcapturedevice.built-in_video:5,
        CameraLensDirection.back,
        90
    )
]

New CameraDescription for iPhone 11

[
    CameraDescription(
        com.apple.avfoundation.avcapturedevice.built-in_video:0,
        CameraLensDirection.back,
        90,
        CameraLensType.wide
    ),
    CameraDescription(
        com.apple.avfoundation.avcapturedevice.built-in_video:1,
        CameraLensDirection.front,
        90,
        CameraLensType.wide
    ),
    CameraDescription(
        com.apple.avfoundation.avcapturedevice.built-in_video:5,
        CameraLensDirection.back,
        90,
        CameraLensType.ultraWide
    )
]

Pre-launch Checklist

If you need help, consider asking for advice on the #hackers-new channel on Discord.

@lenzpaul lenzpaul force-pushed the camera_package_patch_2 branch from e4fedcb to 119beaa Compare March 6, 2025 21:22
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Apr 1, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Apr 1, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Apr 1, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Apr 1, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Apr 1, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Apr 2, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Apr 2, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Apr 2, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Apr 2, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Apr 2, 2025
github-merge-queue bot pushed a commit to flutter/flutter that referenced this pull request Apr 2, 2025
flutter/packages@125c117...07496eb

2025-04-02 alexander.irion@siemens.com [multicast_dns]
MDnsClient::listen supports onError callback (flutter/packages#8888)
2025-04-02 15619084+vashworth@users.noreply.github.com Upgrade tests to
use Xcode 16 and iOS 18 (flutter/packages#8968)
2025-04-01 engine-flutter-autoroll@skia.org Manual roll Flutter from
1d954f4 to 05b5e79 (225 revisions) (flutter/packages#8960)
2025-04-01 kevmoo@users.noreply.github.com Drop deprecated HTML head
meta tags (flutter/packages#8970)
2025-04-01 stuartmorgan@google.com Adjust PR checklist formatter
discussion (flutter/packages#8924)
2025-04-01 stuartmorgan@google.com Update CODEOWNERS username
(flutter/packages#8933)
2025-04-01 69054810+M97Chahboun@users.noreply.github.com
[flutter_markdown] Added sizedImageBuilder to Markdown widget
(flutter/packages#6739)
2025-04-01 stuartmorgan@google.com [google_maps_flutter] Skip impl copy
of iOS tests (flutter/packages#8975)
2025-04-01 stuartmorgan@google.com [google_maps_flutter] Skip more
hanging iOS tests (flutter/packages#8967)
2025-04-01 stanleycocoa@gmail.com [url_launcher] When not fully loaded,
clicking close causes the callback to not be triggered correctly.
(flutter/packages#8582)
2025-04-01 robert.odrowaz@leancode.pl [camera_avfoundation] Test utils
and mocks swift migration - part 2 (flutter/packages#8892)
2025-03-31 15619084+vashworth@users.noreply.github.com [webview_flutter]
Skip flaky legacy tests on iOS (flutter/packages#8911)
2025-03-31 davidmartos96@gmail.com [camera_android] Don't override
default fps range when not recording (flutter/packages#8891)
2025-03-31 filiph@users.noreply.github.com [google_maps_flutter] Fix
typo and remove duplicitous CHANGELOG entry (flutter/packages#8754)
2025-03-31 kevmoo@users.noreply.github.com [extension_gsi] Support the
latest version of googleapis_auth (flutter/packages#8931)
2025-03-31 49699333+dependabot[bot]@users.noreply.github.com
[dependabot]: Bump com.android.tools.build:gradle from 8.0.0 to 8.9.1 in
/packages/pigeon/platform_tests/test_plugin/android
(flutter/packages#8955)
2025-03-31 linxunfeng@yeah.net [webview_flutter_wkwebview] Fixes crash
when sending undefined message via javascript channel
(flutter/packages#8776)
2025-03-31 49699333+dependabot[bot]@users.noreply.github.com
[dependabot]: Bump com.android.tools.build:gradle from 8.0.0 to 8.9.1 in
/packages/pigeon/platform_tests/alternate_language_test_plugin/android
(flutter/packages#8946)
2025-03-31 10687576+bparrishMines@users.noreply.github.com
[interactive_media_ads] Fixes `AdEventType`s not triggering on iOS in
release mode (flutter/packages#8918)
2025-03-31 stuartmorgan@google.com [google_maps_flutter] Skip test that
hangs iOS CI (flutter/packages#8958)
2025-03-28 engine-flutter-autoroll@skia.org Manual roll Flutter from
b16430b to 1d954f4 (114 revisions) (flutter/packages#8922)
2025-03-28 robert.odrowaz@leancode.pl [camera_avfoundation] Test utils
and mocks swift migration - part 3 (flutter/packages#8912)
2025-03-27 jacksongardner@google.com Use a more deterministic way of
waiting for ad widgets to be ready. (flutter/packages#8920)
2025-03-27 robert.odrowaz@leancode.pl [camera_avfoundation] Test utils
and mocks swift migration - part 1 (flutter/packages#8890)
2025-03-27 tarrinneal@gmail.com [pigeon] correct usage of extended
generics in generator methods (flutter/packages#8910)
2025-03-27 34892635+fa0311@users.noreply.github.com [video_player] Fix
layout issue caused by `Transform.rotate` not affecting space
calculation. (flutter/packages#8685)
2025-03-27 43759233+kenzieschmoll@users.noreply.github.com
[shared_preferences] Fix a late initialized error with the example app
(flutter/packages#8540)
2025-03-26 stuartmorgan@google.com [various] Disable sandbox in Chrome
dart tests (flutter/packages#8909)
2025-03-25 stuartmorgan@google.com [tool] Move changed file detection to
base command class (flutter/packages#8730)
2025-03-25 34327253+lenzpaul@users.noreply.github.com [Camera] Add lens
type information (iOS) (flutter/packages#8723)
2025-03-25 tarrinneal@gmail.com [pigeon] kotlin equality methods
(flutter/packages#8887)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC flutter-ecosystem@google.com on the revert to ensure that a
human
is aware of the problem.

To file a bug in Flutter:
https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

---------

Co-authored-by: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com>
github-merge-queue bot pushed a commit to flutter/flutter that referenced this pull request Apr 3, 2025
flutter/packages@125c117...07496eb

2025-04-02 alexander.irion@siemens.com [multicast_dns]
MDnsClient::listen supports onError callback (flutter/packages#8888)
2025-04-02 15619084+vashworth@users.noreply.github.com Upgrade tests to
use Xcode 16 and iOS 18 (flutter/packages#8968)
2025-04-01 engine-flutter-autoroll@skia.org Manual roll Flutter from
1d954f4 to 05b5e79 (225 revisions) (flutter/packages#8960)
2025-04-01 kevmoo@users.noreply.github.com Drop deprecated HTML head
meta tags (flutter/packages#8970)
2025-04-01 stuartmorgan@google.com Adjust PR checklist formatter
discussion (flutter/packages#8924)
2025-04-01 stuartmorgan@google.com Update CODEOWNERS username
(flutter/packages#8933)
2025-04-01 69054810+M97Chahboun@users.noreply.github.com
[flutter_markdown] Added sizedImageBuilder to Markdown widget
(flutter/packages#6739)
2025-04-01 stuartmorgan@google.com [google_maps_flutter] Skip impl copy
of iOS tests (flutter/packages#8975)
2025-04-01 stuartmorgan@google.com [google_maps_flutter] Skip more
hanging iOS tests (flutter/packages#8967)
2025-04-01 stanleycocoa@gmail.com [url_launcher] When not fully loaded,
clicking close causes the callback to not be triggered correctly.
(flutter/packages#8582)
2025-04-01 robert.odrowaz@leancode.pl [camera_avfoundation] Test utils
and mocks swift migration - part 2 (flutter/packages#8892)
2025-03-31 15619084+vashworth@users.noreply.github.com [webview_flutter]
Skip flaky legacy tests on iOS (flutter/packages#8911)
2025-03-31 davidmartos96@gmail.com [camera_android] Don't override
default fps range when not recording (flutter/packages#8891)
2025-03-31 filiph@users.noreply.github.com [google_maps_flutter] Fix
typo and remove duplicitous CHANGELOG entry (flutter/packages#8754)
2025-03-31 kevmoo@users.noreply.github.com [extension_gsi] Support the
latest version of googleapis_auth (flutter/packages#8931)
2025-03-31 49699333+dependabot[bot]@users.noreply.github.com
[dependabot]: Bump com.android.tools.build:gradle from 8.0.0 to 8.9.1 in
/packages/pigeon/platform_tests/test_plugin/android
(flutter/packages#8955)
2025-03-31 linxunfeng@yeah.net [webview_flutter_wkwebview] Fixes crash
when sending undefined message via javascript channel
(flutter/packages#8776)
2025-03-31 49699333+dependabot[bot]@users.noreply.github.com
[dependabot]: Bump com.android.tools.build:gradle from 8.0.0 to 8.9.1 in
/packages/pigeon/platform_tests/alternate_language_test_plugin/android
(flutter/packages#8946)
2025-03-31 10687576+bparrishMines@users.noreply.github.com
[interactive_media_ads] Fixes `AdEventType`s not triggering on iOS in
release mode (flutter/packages#8918)
2025-03-31 stuartmorgan@google.com [google_maps_flutter] Skip test that
hangs iOS CI (flutter/packages#8958)
2025-03-28 engine-flutter-autoroll@skia.org Manual roll Flutter from
b16430b to 1d954f4 (114 revisions) (flutter/packages#8922)
2025-03-28 robert.odrowaz@leancode.pl [camera_avfoundation] Test utils
and mocks swift migration - part 3 (flutter/packages#8912)
2025-03-27 jacksongardner@google.com Use a more deterministic way of
waiting for ad widgets to be ready. (flutter/packages#8920)
2025-03-27 robert.odrowaz@leancode.pl [camera_avfoundation] Test utils
and mocks swift migration - part 1 (flutter/packages#8890)
2025-03-27 tarrinneal@gmail.com [pigeon] correct usage of extended
generics in generator methods (flutter/packages#8910)
2025-03-27 34892635+fa0311@users.noreply.github.com [video_player] Fix
layout issue caused by `Transform.rotate` not affecting space
calculation. (flutter/packages#8685)
2025-03-27 43759233+kenzieschmoll@users.noreply.github.com
[shared_preferences] Fix a late initialized error with the example app
(flutter/packages#8540)
2025-03-26 stuartmorgan@google.com [various] Disable sandbox in Chrome
dart tests (flutter/packages#8909)
2025-03-25 stuartmorgan@google.com [tool] Move changed file detection to
base command class (flutter/packages#8730)
2025-03-25 34327253+lenzpaul@users.noreply.github.com [Camera] Add lens
type information (iOS) (flutter/packages#8723)
2025-03-25 tarrinneal@gmail.com [pigeon] kotlin equality methods
(flutter/packages#8887)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC flutter-ecosystem@google.com on the revert to ensure that a
human
is aware of the problem.

To file a bug in Flutter:
https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

---------

Co-authored-by: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com>
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Apr 3, 2025
CodixNinja pushed a commit to CodixNinja/packages that referenced this pull request May 15, 2025
A unit test in the app-facing package that predates federation is asserting an expected string that includes constant text that is controlled by a `toString` method from the platform interface package. This fixes the test to only assert the parts that are within the package's control.

Unblocks flutter/packages#8723

## Pre-Review Checklist
androidseb pushed a commit to androidseb/packages that referenced this pull request Jun 8, 2025
A unit test in the app-facing package that predates federation is asserting an expected string that includes constant text that is controlled by a `toString` method from the platform interface package. This fixes the test to only assert the parts that are within the package's control.

Unblocks flutter#8723

## Pre-Review Checklist
androidseb pushed a commit to androidseb/packages that referenced this pull request Jun 8, 2025
This PR adds lens type information. The goal is to identify whether the lens type is wide, ultra-wide, telephoto, etc., as discussed in flutter/flutter#119908. The iOS implementation is complete, so lens data will now be populated on iOS.

- Introduces a new CameraLensType enum to provide lens type information about the camera (e.g.: ultra-wide, telephoto, ...)
- Adds lensType in the PlatformCameraDescription and CameraDescription classes 
- Implements utility functions to convert between PlatformCameraLensType and CameraLensType.
- Updates auto-generated code (using Pigeon) to reflect these changes.

**Current CameraDescription for iPhone 11**
```
[
    CameraDescription(
        com.apple.avfoundation.avcapturedevice.built-in_video:0,
        CameraLensDirection.back,
        90
    ),
    CameraDescription(
        com.apple.avfoundation.avcapturedevice.built-in_video:1,
        CameraLensDirection.front,
        90
    ),
    CameraDescription(
        com.apple.avfoundation.avcapturedevice.built-in_video:5,
        CameraLensDirection.back,
        90
    )
]
```

**New CameraDescription for iPhone 11**
```
[
    CameraDescription(
        com.apple.avfoundation.avcapturedevice.built-in_video:0,
        CameraLensDirection.back,
        90,
        CameraLensType.wide
    ),
    CameraDescription(
        com.apple.avfoundation.avcapturedevice.built-in_video:1,
        CameraLensDirection.front,
        90,
        CameraLensType.wide
    ),
    CameraDescription(
        com.apple.avfoundation.avcapturedevice.built-in_video:5,
        CameraLensDirection.back,
        90,
        CameraLensType.ultraWide
    )
]
```
zhangyuang pushed a commit to zhangyuang/flutter-fork that referenced this pull request Jun 9, 2025
…er#166457)

flutter/packages@125c117...07496eb

2025-04-02 alexander.irion@siemens.com [multicast_dns]
MDnsClient::listen supports onError callback (flutter/packages#8888)
2025-04-02 15619084+vashworth@users.noreply.github.com Upgrade tests to
use Xcode 16 and iOS 18 (flutter/packages#8968)
2025-04-01 engine-flutter-autoroll@skia.org Manual roll Flutter from
1d954f4 to 05b5e79 (225 revisions) (flutter/packages#8960)
2025-04-01 kevmoo@users.noreply.github.com Drop deprecated HTML head
meta tags (flutter/packages#8970)
2025-04-01 stuartmorgan@google.com Adjust PR checklist formatter
discussion (flutter/packages#8924)
2025-04-01 stuartmorgan@google.com Update CODEOWNERS username
(flutter/packages#8933)
2025-04-01 69054810+M97Chahboun@users.noreply.github.com
[flutter_markdown] Added sizedImageBuilder to Markdown widget
(flutter/packages#6739)
2025-04-01 stuartmorgan@google.com [google_maps_flutter] Skip impl copy
of iOS tests (flutter/packages#8975)
2025-04-01 stuartmorgan@google.com [google_maps_flutter] Skip more
hanging iOS tests (flutter/packages#8967)
2025-04-01 stanleycocoa@gmail.com [url_launcher] When not fully loaded,
clicking close causes the callback to not be triggered correctly.
(flutter/packages#8582)
2025-04-01 robert.odrowaz@leancode.pl [camera_avfoundation] Test utils
and mocks swift migration - part 2 (flutter/packages#8892)
2025-03-31 15619084+vashworth@users.noreply.github.com [webview_flutter]
Skip flaky legacy tests on iOS (flutter/packages#8911)
2025-03-31 davidmartos96@gmail.com [camera_android] Don't override
default fps range when not recording (flutter/packages#8891)
2025-03-31 filiph@users.noreply.github.com [google_maps_flutter] Fix
typo and remove duplicitous CHANGELOG entry (flutter/packages#8754)
2025-03-31 kevmoo@users.noreply.github.com [extension_gsi] Support the
latest version of googleapis_auth (flutter/packages#8931)
2025-03-31 49699333+dependabot[bot]@users.noreply.github.com
[dependabot]: Bump com.android.tools.build:gradle from 8.0.0 to 8.9.1 in
/packages/pigeon/platform_tests/test_plugin/android
(flutter/packages#8955)
2025-03-31 linxunfeng@yeah.net [webview_flutter_wkwebview] Fixes crash
when sending undefined message via javascript channel
(flutter/packages#8776)
2025-03-31 49699333+dependabot[bot]@users.noreply.github.com
[dependabot]: Bump com.android.tools.build:gradle from 8.0.0 to 8.9.1 in
/packages/pigeon/platform_tests/alternate_language_test_plugin/android
(flutter/packages#8946)
2025-03-31 10687576+bparrishMines@users.noreply.github.com
[interactive_media_ads] Fixes `AdEventType`s not triggering on iOS in
release mode (flutter/packages#8918)
2025-03-31 stuartmorgan@google.com [google_maps_flutter] Skip test that
hangs iOS CI (flutter/packages#8958)
2025-03-28 engine-flutter-autoroll@skia.org Manual roll Flutter from
b16430b to 1d954f4 (114 revisions) (flutter/packages#8922)
2025-03-28 robert.odrowaz@leancode.pl [camera_avfoundation] Test utils
and mocks swift migration - part 3 (flutter/packages#8912)
2025-03-27 jacksongardner@google.com Use a more deterministic way of
waiting for ad widgets to be ready. (flutter/packages#8920)
2025-03-27 robert.odrowaz@leancode.pl [camera_avfoundation] Test utils
and mocks swift migration - part 1 (flutter/packages#8890)
2025-03-27 tarrinneal@gmail.com [pigeon] correct usage of extended
generics in generator methods (flutter/packages#8910)
2025-03-27 34892635+fa0311@users.noreply.github.com [video_player] Fix
layout issue caused by `Transform.rotate` not affecting space
calculation. (flutter/packages#8685)
2025-03-27 43759233+kenzieschmoll@users.noreply.github.com
[shared_preferences] Fix a late initialized error with the example app
(flutter/packages#8540)
2025-03-26 stuartmorgan@google.com [various] Disable sandbox in Chrome
dart tests (flutter/packages#8909)
2025-03-25 stuartmorgan@google.com [tool] Move changed file detection to
base command class (flutter/packages#8730)
2025-03-25 34327253+lenzpaul@users.noreply.github.com [Camera] Add lens
type information (iOS) (flutter/packages#8723)
2025-03-25 tarrinneal@gmail.com [pigeon] kotlin equality methods
(flutter/packages#8887)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC flutter-ecosystem@google.com on the revert to ensure that a
human
is aware of the problem.

To file a bug in Flutter:
https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

---------

Co-authored-by: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com>
FMorschel pushed a commit to FMorschel/packages that referenced this pull request Jun 9, 2025
A unit test in the app-facing package that predates federation is asserting an expected string that includes constant text that is controlled by a `toString` method from the platform interface package. This fixes the test to only assert the parts that are within the package's control.

Unblocks flutter#8723

## Pre-Review Checklist
FMorschel pushed a commit to FMorschel/packages that referenced this pull request Jun 9, 2025
This PR adds lens type information. The goal is to identify whether the lens type is wide, ultra-wide, telephoto, etc., as discussed in flutter/flutter#119908. The iOS implementation is complete, so lens data will now be populated on iOS.

- Introduces a new CameraLensType enum to provide lens type information about the camera (e.g.: ultra-wide, telephoto, ...)
- Adds lensType in the PlatformCameraDescription and CameraDescription classes 
- Implements utility functions to convert between PlatformCameraLensType and CameraLensType.
- Updates auto-generated code (using Pigeon) to reflect these changes.

**Current CameraDescription for iPhone 11**
```
[
    CameraDescription(
        com.apple.avfoundation.avcapturedevice.built-in_video:0,
        CameraLensDirection.back,
        90
    ),
    CameraDescription(
        com.apple.avfoundation.avcapturedevice.built-in_video:1,
        CameraLensDirection.front,
        90
    ),
    CameraDescription(
        com.apple.avfoundation.avcapturedevice.built-in_video:5,
        CameraLensDirection.back,
        90
    )
]
```

**New CameraDescription for iPhone 11**
```
[
    CameraDescription(
        com.apple.avfoundation.avcapturedevice.built-in_video:0,
        CameraLensDirection.back,
        90,
        CameraLensType.wide
    ),
    CameraDescription(
        com.apple.avfoundation.avcapturedevice.built-in_video:1,
        CameraLensDirection.front,
        90,
        CameraLensType.wide
    ),
    CameraDescription(
        com.apple.avfoundation.avcapturedevice.built-in_video:5,
        CameraLensDirection.back,
        90,
        CameraLensType.ultraWide
    )
]
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
autosubmit Merge PR when tree becomes green via auto submit App p: camera
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants