Getting the Most from the New Multi-Camera API (Android Dev Summit ’18)

안녕하세요, 모두들 새로운 멀티 카메라 API 세션에 오신 것을 환영합니다

내 이름은 Vinit Modi이고 저는 제품 관리자입니다 카메라 플랫폼에 이 잠시 후, 샌드 박스 영역 바깥으로 나 오세요 더 궁금한 점이 있으시면 새로운 API에 대해 이야기하기 전에, 카메라의 상태를 빠르게 업데이트하겠습니다 역사적으로 대부분의 카메라 앱은 기본 카메라 앱에 초점을 맞 춥니 다

장치와 함께 제공됩니다 그러나 금액의 두 배가 넘는 것으로 나타났습니다 카메라 사용량은 사용자가 구축 한 앱에서 발생합니다 그리고 당신이 새로운 기능을 지원합니다 새로운 Android API에서 사용할 수 있습니다

우리가 많은 개발자들과 이야기 할 때 우리가 찾은 것 가장 큰 문제는 카메라 2 API의 상태입니다 그리고 우리는 앞으로 나아갈 것입니다 우리는 열심히 노력해 왔습니다 Android P부터 시작하여 찾을 수있는 항목 거의 모든 새 장치가 camera2 및 HALv3을 지원합니다 이것이 의미하는 바는 카메라의 특성을 볼 때, 기기가 자체 광고를하는 것을 알게 될 것입니다

어느 한 점과 비슷한 camera2 LIMITED 촬영하고 카메라 2를 FULL로 설정하면 프레임 단위 제어와 같은 고급 기능, YUV 재 처리 및 RAW를 가능하게하는 LEVEL_3이 있습니다 또한 여러 OEM 업체와 협력 해 왔으며, 또는 제조업체가 출시 될 때 새로운 API를 열 수 있습니다 올해 Google Pixel 3 및 화웨이 메이트 20 시리즈 지원 새로운 멀티 카메라 API 자, 왜 물러서서 이유를 말해 줄까? 이 새로운 API는 매우 중요합니다 Android P 이전에는 개발자로서 물리적 센서 중 하나에 액세스 할 수 있습니다 네이티브 카메라 앱이 전체 하드웨어에 액세스합니다

능력 하지만 P로 시작하면 동일한 액세스 권한을 얻게됩니다 네이티브 카메라 앱으로 여기에는 모든 물리적 센서가 포함됩니다 논리적 인 카메라 더하기

논리적 인 카메라는 추상화입니다 당신이 쉽게 잡을 수있는 모든 물리적 센서들 하드웨어의 이점 몇 가지 새로운 사용 사례와 가능성이 있습니다 새로운 멀티 카메라 API로 오늘날 오스카 (Oscar)는 광학 줌 (optical zoom) 에밀리가 보케를 덮을거야 고맙습니다

오스카가 다음입니다 [박수 갈채] OSCAR WAHLTINEZ : 안녕하세요, 제 이름은 오스카입니다 저는 개발자 관계 팀에서 일하고 있습니다 라이브 데모에서 시작하겠습니다 무엇이 잘못 될 수 있습니까? [웃음] 그래서 여기에 메이트 20 전화가 있습니다

멀티 카메라 줌을 구현 중입니다 여기에서 우리가하고있는 일은 UI 레이어를 바꾸는 것입니다 두 카메라 스트림 나는 어떤 종류의 세부 확대 또는 자르기를하고 있지 않다 나는 단순히 시내를 교환하고있다

보시다시피, 거의 순간적입니다 내가 쓰러 뜨리면 찢어지지 않아 카메라 세션 그것은 단지 하나의 세션이고, 저는 두 대의 카메라를 교체하고 있습니다 스트림

아이디어는, 내가 말했듯이, 단일 카메라 세션입니다 – 두 개의 스트림 그리고 우리는 시내 사이에서 교환 할 것입니다, 이것이 어떻게 구축되었는지 보여 드리겠습니다 하지만 핵심 구성 요소는 동일한 코드를 사용한다는 것입니다 두 장치에서 실행 중입니다 많은 카메라 개발자들이 알고 있듯이, 그것은 아주 위업입니다 같은 다른 장치에서 동일한 코드를 실행하려면 특히 하드웨어에 묶여있는 것 그것이 멀티 카메라이기 때문에

먼저, 다중 카메라를 사용하는 방법에 대해 이야기 해 봅시다 동시에 스트림 프레임 워크가 제공하는 기본 보증 멀티 카메라 API에서 최소한 두 개의 실제 카메라를 사용할 수 있습니다 동시에 스트림 보증 된 스트림 구성을 생각해 내십시오

단일 카메라 장치 용 하드웨어 수준, 대상을 기반으로하는 일련의 규칙입니다 유형 및 대상 크기 멀티 카메라 API를 올바르게 사용한다면, 우리는이 규칙에 대한 예외를 얻을 수 있습니다 이것을 예제로 설명해 보겠습니다 YouTube에는 최대 크기의 단일 YUV 스트림이 있습니다

이전 표와 같이 하드웨어가 제한적인 장치 레벨은 단일 스트림을 사용할 수 있습니다 그 구성으로 멀티 카메라 API를 사용하면 실제로 동일한 구성의 두 스트림을 사용할 수 있습니다 기본 물리적 카메라에서 우리가해야 할 일을 따라 가자

이전에 데모 한 앱을 구현할 수 있습니다 우리는 5 단계로 나누었습니다 준비 되었나요? 1 단계 – 실제 카메라를 찾으십시오 물리적 카메라 쌍을 식별하여 시작합니다 동시에 열 수 있습니다

피사체로 카메라 문자를 사용하여, 우리는 [? 요청 기능] 논리적 인 멀티 카메라가 그들 중 하나라면, 우리는이 장치가 논리적 인 카메라라는 것을 압니다 논리적 인 카메라를 발견 했으므로 저장합니다 우리는 나중에 ID를 필요로 할 것입니다 그리고 우리는 그것과 관련된 물리적 인 카메라를 얻습니다 그런 다음 다음 단계로 넘어갈 수 있습니다

여기에 방금 설명한 내용을 시각화했습니다 우리는 논리적 인 카메라 ID를 가지고, 우리는 실제 카메라 ID를 가져오고 이제는 연관된 실제 카메라 검색 논리 카메라 그룹과 다음 단계로 논리 카메라를 엽니 다 두 번째 단계는 새로운 것이 아닙니다 우리는 카메라를 엽니 다

이전에 저장 한 논리적 카메라 ID를 상기하십시오 이것이 우리가 카메라 관리자에게 전달하는 유일한 방법입니다 다시 말하면 논리적 인 카메라 만 엽니 다 장치가 준비되면 단계 콜백이 트리거됩니다 논리적 인 카메라를 열었습니다

다음 단계에서는 출력 구성을 만듭니다 업데이트 카메라 세션을 만드는 데 사용됩니다 원하는 출력 목표마다 이전에 찾은 목록의 실제 카메라 ID가있을 수 있습니다 특정 하드웨어에서 프레임을 검색하려는 경우 카메라

자세한 내용을 살펴 보겠습니다 우리는 다음을 사용하여 출력 설정 객체를 생성합니다 우리가 원하는 출력 목표 그리고 만약 우리가 그 결과를 특정 실제 카메라를 사용하면 설정된 실제 카메라 ID API에서 ID를 전달하십시오 논리적 인 카메라를 사용하고 싶다면, 이 단계를 건너 뛸 수 있습니다

우리는 둘 다 조합 할 수도 있습니다 하루가 끝나면 목록이 있습니다 출력 구성 중 일부는 물리적 카메라와 관련이있을 수 있습니다 그 중 일부는 – 논리적 인 카메라 목표는 모든 구성을 넣는 것입니다

단일 세션 구성으로 방금 설명한대로 각 출력 구성 관련 출력 목표 및 선택적으로, 실제 카메라 ID 이제 캡처 세션을 만듭니다 새 세션을 사용하여 캡처 세션을 만드는 방법 구성 개체? 우리는 출력 구성 목록으로 시작합니다 우리가 방금 만든거야 이를 통해 세션 구성을 인스턴스화하고, 여기에는 캡처 세션 콜백이 포함됩니다 콜백에서 인스턴스를 가져옵니다

카메라 세션 만들기 우리는 그 세션 설정 객체 우리가 2 번에서 얻은 카메라 장치 논리적 인 카메라를 열었을 때 요청이있는 프레임을 보냅니다 원하는 구성으로 새 세션을 만듭니다 세션 구성 객체에서 제공되는 콜백 지금 방아쇠를 당길 것이다

그리고 나서 우리는 우리 카메라 세션을 사용할 준비가 될 것입니다 마지막 단계 요청을 캡처합니다 그런 일이 발생하면 프레임을 가져올 수 있습니다 카메라의 예를 들어 두 프레임에서 프레임을 캡처하려면 실제 카메라를 동시에 사용하면 우리가 전에 만든 세션을 가져 가라

한 쌍의 출력 대상 이 특별한 경우, 각 타겟 특정 카메라 ID와 연결됩니다 우리는 일반적으로 캡처 요청을 생성합니다 이 경우 템플릿 미리보기를 사용하십시오 우리는 평상시와 마찬가지로 출력 목표를 그것에 첨부합니다 이제 캡처 요청을 전달합니다

여기 다른 것은 없습니다 이 경우를 제외하고, 출력면 각각에서 이미지 데이터를 수신합니다 관련 실제 카메라의 캡처 요청 콜백은 한 번만 트리거됩니다 다시 한번, 캡처 요청과 같습니다 가장 큰 차이점은 완료 콜백 대신에 두 개의 시작 노출 타임 스탬프를 돌려 줄 것입니다

일반 캡처 요청에서 단 하나의 값만 가져옵니다 요점을 되짚어 보겠습니다 우리의 광학 줌 데모 우리는 물리적 카메라를 발견했습니다 우리는 그 그룹의 일부인 논리적 인 카메라를 열었습니다

출력 구성을 만들었습니다 우리 [? 인쇄?] 목록 캡처 세션을 만듭니다 그런 다음 캡처 요청을 보내 게됩니다 내가 만지고 싶었던 또 하나의 주제는 렌즈 왜곡이다

렌즈 왜곡의 고전적인 예는 어안 렌즈입니다 이것은 실제 사례가 아닙니다 설명의 목적으로 만 여기에 있습니다 모든 렌즈에는 약간의 왜곡이 있습니다 논리 카메라의 경우, 왜곡이 있다고 가정 할 수 있습니다

최소가 될 것입니다 대부분의 경우 드라이버에 의해 수정됩니다 그러나 실제 카메라의 경우 왜곡 꽤 중요 할 수 있습니다 실제 렌즈 왜곡이 설명됩니다 방사형 및 접선 계수 집합 계수는 렌즈 왜곡을 사용하여 쿼리 할 수 ​​있습니다

카메라 특성 키 관심이 있으시면 문서에 더 많은 세부 정보가 있습니다 좋은 소식은 왜곡을 수정하는 방법이 있다는 것입니다 수학을하지 않고 간단히 왜곡 보정 모드를 설정할 수 있습니다

캡처 요청에 OFF는 왜곡이 가해지지 않았 음을 의미합니다 우리가 원한다면 이것을 사용해야 할 수도 있습니다 [INAUDIBLE] 동기화와 같은 작업을 수행 할 수 있습니다 Emilie는 나중에 그것에 대해서 이야기 할 것입니다

FAST는 최선의 교정이 가능하다는 것을 의미합니다 광고 된 프레임 속도를 충족시키면서 적용됩니다 FAST 보정이 불가능할 경우, 이것은 OFF와 같을 수 있습니다 고화질은 왜곡을 의미합니다 렌즈가 허용하는만큼 수정 될 것이며 잠재적으로 프레임 속도의 비용으로

수정 모드를 지정하지 않은 경우, 그것은 FAST 또는 HIGH QUALITY 중 하나입니다 구현 세부 사항에 달려 있습니다 기본값입니다 당신은 개발자로서, 귀하의 캡처에 어느 것이 적용되었는지 확인하려면 쿼리 할 수 ​​있습니다 의뢰

시연하는 코드 스 니펫을 보자 이 렌즈 왜곡이 어떻게 고품질로 설정되었는지 우리가 정지 이미지 캡처를 원할 것입니다 우리가 이미 카메라 세션을 시작했다고 가정하면, 캡처 요청 빌더를 인스턴스화합니다 원하는 템플릿을 사용합니다이 경우, 내가 말했듯이, 이미지 캡처

그런 다음 카메라 특성을 사용합니다 고 품질 왜곡 보정을 결정하는 방법 모드를 사용할 수 있습니다 이제 우리는 우리가 높은 품질을 가지고 있음을 알게되었습니다 왜곡에 대한 수정, 우리는 캡처 요청에 그것을 설정, 그리고 우리는 항상 우리가하는 일을합니다 – 포획 요청을 파견하십시오 샘플 코드 및 기술 세부 사항은, 우리의 블로그 게시물을보십시오

우리는 이것과 그 이상을 다뤘습니다 우리는 이번 주 초에 그것을 출판했습니다 그리고 지금, 나는 Emilie에게 그것을 넘겨 줄 것이다 [박수 갈채] 고마워, 오스카 제 이름은 Emilie Roberts입니다

저는 파트너 개발자 옹호자입니다 멋진 데모를 보여 드리겠습니다 이 다중 카메라 API 중 일부를 사용합니다 픽셀 3에 보케 효과를 적용합니다 그래서 우리는 실제로 3 개의 – 잘, 2 개의 데모를 가지고 있습니다

25 데모 첫 번째는 하나의 캠 데모입니다 멀티 카메라가 전혀 없습니다 그러나 나는 그 메커니즘을 보여주기를 원했다

보케 효과를 만들기위한 것입니다 그런 다음 듀얼 캠 데모에 들어가면 정확히 볼 수 있습니다 – 멀티 카메라 측면에 집중할 수 있습니다 보케 효과 자체에 대해 그렇게 걱정하지 않아도됩니다 그리고 곧 출판 될 예정입니다 오픈 소스

너무 많은 코드를 낙서하는 것에 대해 걱정하지 마십시오 그럼이 전화에 갈 수 있을까요? 데모 실례합니다 오키 그래서 우리는 – 나는 이것을 올바르게 설정하지 않았다

좋아, 싱글 캠 보케 효과를 보자 셀카를 여기로 데려가 그리고 당신이 화면에서 볼 수 있다고 생각합니다 그것은 내 얼굴을 찾는 것입니다 그것은 그것을 절단하고 있습니다

최종 결과를 높이 보자 그리고 그것은 거기에 인물 사진 모드를 붙이는 것 이것은 거친 인물 사진 모드의 일종입니다 그리고 이것에 대한 최적화가 있습니다 그게 어떻게되는지 보자

여기서 출력 단계를 보여 드리겠습니다 그래서 전경을 찾는 더 나은 일을하려고합니다 이봐, 그렇게 나쁘지 않았어 전경 이미지, 배경, 그것은 단색이고 조금 흐려져 있습니다 어서, 애플 리케이션

우리를 실망시키지 마라 최종 결과에 붙여 넣기 한 대의 캠에 비해 그렇게 나쁘지 않습니다 듀얼 캠 데모를 사용해 봅시다 그리고이 무대 조명으로 저는 확신하지 못합니다

어서 이봐, 나쁘지 않아 우린 잘하고있어 따라서 왼쪽 하단에 깊이 맵이 생성 된 것을 볼 수 있습니다 전경에서 나를 감지하고있는 코너 너희 모두의 나머지는 조금 쭈그러 들었다

가까운 사람들이 회색임을 알 수 있습니다 그리고 나서 검은 색이 바로 뒤로갑니다 또한 혼란을 야기하는 빛을 볼 수 있습니다 마지막 결과를 보여 드리겠습니다 분명히 일어날 수있는 몇 가지 최적화가 있습니다

하지만 꽤 잘 작동합니다 다시 한번, 이는 Pixel 2에서 두 개의 전면 카메라를 사용하고 있습니다 한 번에 두 개의 스트림을 볼 수 있습니다 죄송합니다 이 연결이 다시 연결됩니까? 아니

어쨌든, 한 번에 두 스트림 광각 렌즈 및 법선 렌즈 같은 시간에 슬라이드로 돌아갈 수 있을까요? 그럼 우리가 어떻게하는지 이야기 해 봅시다 오, 우리가있다 어쨌든, 그래서 우리는 정상적인 카메라를 가졌습니다

광각 렌즈는 동시에 작동합니다 다시 말하지만, 우리는 이것을 아마도 GitHub에 게시 할 것입니다 오픈 소스이므로 소스 코드를 파헤쳐 최적화 할 수 있습니다 더 나아지게하십시오 첫 번째 경우는 단일 캠입니다

빨리 살펴 봅시다 떠 다니는 머리 보케 효과 나는 그것을 부릅니다 우리는 얼굴 탐지 장치로 사진을 찍을 것입니다 우리는 두 장을 만들 것입니다 그래서 배경, 전경이 있습니다

환상적인 배경 효과를 내기 그 플로팅 헤드를 속한 곳에 붙여 넣으십시오 Face2는 Camera2 API에 내장되어 있습니다 코드를 구현하는 것은 매우 쉽습니다 우리가하고 싶은 일은 카메라를 점검하는 것입니다 카메라 장치가 지원하는지 확인하기위한 특성 FaceDetect

그럴 경우 원하는 모드를 찾으십시오 떨어져 있고, 그 다음 간단하고, 가득하다, 카메라 장치에 따라 다릅니다 그런 다음 카메라 캡처 요청을 할 때, 우리는 요청에 그 것을 포함시킵니다 우리가 결과를 얻을 때, 당신은 모드가 설정된 경우 얼굴을 찾았습니까? 이 예에서는 검색 만합니다 그것이 찾은 첫 번째 얼굴은 제가 사용했던 얼굴입니다

우리는 이것을 확장하여 여러면을 가질 수 있다고 상상할 수 있습니다 그냥 메모 – FaceDetect 정말 얼굴을 잡아 그래서 나는 그 경계들을 조금씩 부딪쳤다 그래서 머리가 잘려나 간다 그것은 나쁘게 들린다

배경에 붙여 넣기되는 머리 재미있는 배경 효과에 대해 이야기 해 봅시다 그래서 여기서 원하는 것을 할 수 있습니다 나는 몇 가지 일을했다 먼저 RenderScript를 사용하여 배경에 흐리게했다

멀티 카메라 이야기이기 때문에, 일부 카메라에는 수동 줌이 있습니다 다중 캠으로 작업한다면, 당신은 다른 카메라로 배경을 할 수 있습니다 초점을 벗어나는 방식으로 확대 / 축소 할 수 있습니다 따라서 실제로 광학 흐림을 할 수 있습니다 멋지다

그리고 또한 멋지다 소프트웨어 단계를 저장하십시오 이 데모에서는 사용자 정의 소프트웨어 세피아 효과도 수행했습니다 RenderScript를 사용합니다 하지만 멀티캠을 다시 사용한다면 많은 카메라가 필요합니다

단색이나 세피아 같은 효과를 내장하고있다 캡처 요청에 쿼리하고 포함 할 수 있습니다 게다가 이전에 RenderScript를 사용하지 않았다면, 이런 식으로 보입니다 흐림 효과 때문에 우리는 가장 신경을 쓴다

중간 선 3 개 정도 그리고 내장 스크립트, 본질적인 흐림입니다 그것은 꽤 편리합니다 기본적으로 상자에서 작동합니다 이 경우 상자 외부에서 흐려집니다

상자가 흐릿하지 않기 때문에 세피아 효과를위한 사용자 지정 RenderScript 스크립트입니다 처음 세 줄에서 볼 수 있습니다 기본적으로 우리는 입력 빨강, 녹색, 및 파란 채널, 색깔을 음소거하는 종류, 그들을 조금 노랗게 만들고, 그들을 보내는 출력 채널에 연결합니다 오키

그래서 우리는 배경을 가지고 있습니다 이 멋진 보케 효과가 있습니다 포 그라운드로 무엇을할까요? FaceDetect에서 우리는 얼굴을 잘라 냈습니다 그리고 우리는 PorterDuff를 선형 그래디언트로 적용합니다 가장자리를 약간 부드럽게 만드십시오

그래서 우리가 그것을 붙여 넣을 때, 그것은 그 거친 라인이 아닙니다 그리고 타다 붙여 넣기하면 상황이 꽤 좋아 보입니다 몇 가지 최적화가 있습니다 하나는 GrabCut 알고리즘을 사용하여 본 것입니다

이것은 OpenCV, Open Computer Vision 라이브러리에 내장되어 있습니다 우리는 깊이 맵 데모를 위해 나중에 사용하고 있습니다 기본적으로 나는 얼굴을 발견했다 그리고 조금 더 큰 사각형을 선택했습니다 시체가 어디 있는지 추측하려고합니다

그리고 나서 그랩 컷이 최선을 다합니다 좋아하는 사진 편집기의 Magic Wand 도구처럼 – 전경을 실제 전경으로 축소시키는 것 범위 앞에서 언급했듯이 여러 얼굴을 추가 할 수도 있습니다 이제, 당신이 모두 기다리고있는 순간 깊이지도가있는 듀얼 캠 보케에 대해 이야기 해 봅시다

우리는 카메라에 동시에 사용할 것입니다 그리고 우리는 깊이를 만들 것입니다 지도, 어려운 부분입니다 나는 그것을 굵게 강조했다 그런 다음 동일한 메커니즘을 사용합니다

우리는 이미 이야기했다 오키 이게 어떻게 작동합니까? 우선, 이중 캡처 그래서, 왼쪽에, 나는 애완 동물과 어울리고있다 집에서

왼쪽은 Pixel 3 전면 카메라의 일반 카메라입니다 그리고 오른쪽은 광각 촬영입니다 그것을하기 위해서, 오스카가 걸었던 것처럼, 여러 출력 구성을 설정했습니다 그래서 각 렌즈에 대해 우리는 여기, 우리는 이전의 표면뿐만 아니라 이미지를 가지고있다 정상 렌즈 용 판독기

우리는 정상적인 렌즈에 설정된 실제 카메라 ID를 사용합니다 그리고 우리는 광각 렌즈에 대해서도 똑같은 작업을합니다 따라서 우리는 4 가지 출력 설정으로 끝납니다 우리의 구성에 투입 그때부터 – 또는 거기에서, 그것은 단지 캡처를위한 출력 목표를 선택해야합니다

이 경우, 우리는 그 사진들을 원한다 그래서 우리는 그들을 조작 할 수 있습니다 그래서 우리는 정상적인 렌즈에서 이미지 리더를 원한다고 말합니다 및 광각 렌즈를 포함한다 좋아, 그래서 우리는 우리의 이미지를 가지고있다

이제 수학과 마법을 다해야합니다 그 bokeh 효과가 일어나게하십시오 나는 스테레오 비전에 대해 간략히 소개하고자한다 우리가 모든 코드에 들어가기 전에 하지만 나는이 슬라이드를 보면서, 이 슬라이드를 작업하면서 조금 지루해졌습니다

나는 기하학을 좋아하지만, 그것은 많은 편지입니다 P는 어쨌든 무엇을 의미합니까? 분명히, 그것은 초콜릿 더미입니다 P는 초콜릿 더미를 나타냅니다 그리고 이것이 우리가 집중하게 될 것입니다 이 데모의 나머지 부분에 관해서

그리고 카메라 하나는 조금 지루한 카메라입니다 여기 S는 상어로 바꿀 것입니다 내 친구, Pepper the Shark입니다 그리고 H는 하마입니다 그래서 이들은 우리의 도우미입니다

우리가 스테레오 비전에 관해 이야기하는 것을 도울 것입니다 왼쪽 카메라, 보통 렌즈는 상어 후추입니다 광각 렌즈는 소파 하마 인 Susie Loo입니다 그리고 그들은 그 두꺼운 초콜릿 뭉치에 두 가지 모두 들어가고 있습니다 그리고 이미, 그것은 훨씬 더 재미 있습니다

나는 당신이 동의하기를 바랍니다 그래서 그곳에는 왜곡 된 직사각형들이 있습니다 그것은 2D 표면입니다 그것은 카메라가 포착 할 이미지와 같습니다 즉, 2D 표현 우리가 가진 실제 살아있는 3D 물체의 어떻게 생겼는지 살펴 보겠습니다

상어의 시선이 바로 거기에 있습니다 아몬드, 바다 소금, 다크 초콜릿, 하마 캠은 라스베리 크런치에 집중합니다 그래서 그들은 같은 3D 객체를보고 있습니다 그러나 그들은이 2D 표현을 가지고 있습니다 우리가 정말로하고 싶은 것은 별도의 견해를 취하는 것입니다

그들을 결합 할 수 있으니 조금만 더 그 2D보기보다 더 많은 정보 훌륭한 깊이 맵을 만들 수 있어야합니다 그래서 우리는 다시 정상적인 시야, 넓은 시야각을 갖습니다 이 경우에는 둘 다 정상입니다 그러나 왼쪽, 오른쪽 오버레이 서로에게 당신은 그런 종류의 3D 눈금자 효과를 얻습니다 내가 희망하는 초등학교에서

당신은 어린 시절 즐겁게 지내야합니다 그리고 거기에서 우리는 깊이 맵을 만들 수 있습니다 당신이 굉장한 bokeh와 같은 정말로 시원한 물건을하는 것을 허락하는 효과뿐만 아니라 초콜릿이 얼마나 멀리 있는지 알 수 있습니다 그래서 분명히 손을 뻗어 잡을 수 있습니다 오키

그 두 대의 카메라, 두 장의 사진, 서로 다른 방향에있다 그리고 그들은 공간에서 분리되어 있습니다 그래서 우리는 서로를 꼭대기에 올려야합니다 이것이 우리가 카메라 외재라고 부르는 것입니다 두 카메라가 서로 어떻게 관련되어 있는지

그래서 우리는 각각의 이미지들을 회전시키고 번역 할 필요가 있습니다 그래서 그들은 서로의 위에 나타납니다 일반적으로 우리는 일반적으로 회전 및 평행 이동 매개 변수를 제공합니다 세계와 관련된 카메라 카메라 1 대 세계 대신, 우리는 상어와 세계와 하마가있다

그러나 우리가 스테레오 비전을 수행 할 때 우리가 실제로 Shark to Hippo는 걱정할 필요가 있습니다 그렇다면이 두 카메라는 어떻게 서로 관련이 있습니까? 좋은 엔지니어처럼, 내가 아는 전부는 나는 하마를 World to Hippo로 전환해야합니다 그리고 이제 저는 상어에서부터 세계에 이르기까지 하피에 이르는 통로가 있습니다 그게 수학에 대한 재미있는 소개 였으면 좋겠어 위키피디아에 대한 모든 것을 읽을 수 있습니다

이런 모습 회전 행렬을 얻으려면 카메라 2의 회전 행렬을 역으로 변환하려고합니다 카메라 1과 교차 곱합니다 그리고 번역을 위해, 그것은 이와 같은 것입니다 내부 제품을 가지고 빼십시오

Wikipedia 또는 다른 출처에서이 모든 것을 읽을 수 있습니다 그래서 내가 지적하고 싶은 것은 이 일을 직접하고 있다면 번역이 있습니다 일반 카메라의 픽셀 3에 대한 행렬 와이드 카메라 이것은 내가 꺼낸 것입니다 그것에 대해 무엇을 눈치 챘 을까요? 카메라들 사이의 9 밀리미터 간격 약 오른쪽에 보인다

전화를 보면, 좋은 점이 있다는 것을 알 수 있습니다 미국인은 뭐니? 좋은 어쨌든 좋은 9 밀리미터가 있습니다

그 카메라들 사이에 그건 완벽하게 이해가됩니다 하지만 내가 눈치 채지 못한 것은 약 1 주일의 시간을 들여야합니다 그것이 y 좌표에있는 것입니다 그래서 카메라는 서로 위에 있습니다

그래서 저는이 전화로 일하는 동안, 서로 옆에있는 두 대의 카메라를보고, 나는 그들이 분명히 그들이라고 생각했다 수평으로 옮겨졌다 중요한 점은, 깊이 맵 기능 내가 사용하고있는 것은 그들이 서로 옆에있을거야 수평 이동을 가정합니다 그래서 당신은 – 왜냐하면

오, 나는 중요한 부분을 말하지 않았어 카메라 센서는 종종 풍경, 그것은 의미가 있습니다 잘못했을 경우 깊이지도가 작동하지 않습니다

너는 머리카락을 꺼내 내가 한 것처럼 위대한 주를 보내 셨습니다 어쨌든, 만약 당신이 이것을 구현한다면 단지 메모 그래서 우리는 카메라 외재를 가지고 있습니다 우리가 서로의 위에 카메라로부터 그림을 얻는 방법, 서로 어떻게 관련되어 있는지

카메라 내장 함수는 카메라 자체의 속성입니다 그래서 우리는 일반 렌즈와 광각 렌즈를 가지고 있다는 것을 알고 있습니다 그리고 그들은 다른 속성을 가지고 있습니다 그래서 두 가지가 있습니다 하나는 카메라의 특성입니다

이것은 초점 길이, 주축, 그리고 그 축이 어떤 이유로 왜곡 된 경우 이것은 종종 3 행 3 행렬에 나타납니다 그리고 왜곡 – 광각 렌즈와 광각 렌즈 – 특히 가장자리 근처에서 약간의 왜곡이 생길 것입니다 우리가 매핑 할 때 고려해야 할 사항이 있습니다 두 이미지는 서로에게

또 다른 메모 – 그래서 우리는 내장 된 왜곡을 사용할 것입니다 이미지를 왜곡되지 않게하기위한 렌즈의 특성 그러나 오스카가 우리에게 말했듯이, 기본적으로, 카메라가 이미지를 왜곡시킵니다 그래서 우리는 그것을 찌그러 뜨릴 것입니다 reundistort, 그것은 우리가 실제로 그것을 왜곡 할 것이라는 것을 의미합니다, 그것은 나쁜 소식입니다

따라서 실제로 왜곡 보정을 해제해야합니다 당신이 깊이지도를 원한다면 카메라 요청으로 충분히 쉽습니다 왜곡 모드가 해제되어 있는지 확인합니다 오키

여기 네 가지가 있습니다 회전, 평행 이동, 카메라 특성 행렬, 및 렌즈 왜곡 이 속성들을 어떻게 얻습니까? 꽤 쉽습니다 너는 오후 내내, 바둑판 용지를 인쇄해라 이 방에서 전에 이걸 했니? 카메라 라

– 응? 재미 있겠지? 카메라 교정 두 카메라 모두에서 일련의 사진을 찍으십시오 당신은 많은 알고리즘을 실행합니다 이 네 가지 카메라 특성을 알아 냈습니다

그리고 그때부터 깊이지도를 만들기 시작할 수 있습니다 카메라에서 당신은 내 쾌활한 얼굴에서 말할 수 있습니다 실제로 그 재미가 아닙니다 하지 마

별로 좋지 않다 다행히 카메라 2 멀티 카메라 API에서, 우리는이 위대한 들판을 가지고 있습니다 회전, 평행 이동, 교정 및 왜곡 따라서 API를 바로 사용할 수 있습니다 네가 간다면 몇 마디 만 말해 줄께

자신을 구현합니다 그래서 카메라의 특성, 초점 거리, 액세스 정보는 다섯 개의 매개 변수로 제공됩니다 이것은 Android 설명서에 있습니다 그러나 3×3 행렬을 생성하려면, 당신은 단지 문서를 따라야 만합니다 번호를 플러그인하십시오

너를 버릴지도 모르는 또 다른 일 왜곡 계수는 다시 5 가지 값입니다 그러나 OpenCV 라이브러리는 다른 순서로 사용합니다 API에서 얻은 값보다 따라서 0, 1, 3, 4, 2가되는지 알아야합니다 희소식은 당신이 0, 1, 2, 3, 4 주문, 당신이 이미지를 왜곡하지 않을 때, 그들은 마치 소용돌이에 빠져있는 것처럼 보입니다

따라서 여러분은 이러한 계수에 잘못된 것이 있다는 것을 확신합니다 어쨌든, 일단 우리가 모든 매개 변수를 갖게되면, 우리는 우리 이미지를 준비하기 시작할 수 있습니다 깊이 맵 비교를 할 수 있습니다 이건 내 부엌에있는 나야 그리고 네가 거기에서 볼 수 있는지 모르겠다

하지만 천장을 보시면 거기에 어떤 종류의 커브가 있음을 주목하십시오 우리는 재미있는 집에 살지 않습니다 우리가 말하고있는 왜곡 효과입니다 왜곡 보정 기능이 해제 된 광각 렌즈를 사용하십시오 두 이미지를 비교할 때도 마찬가지입니다

직선들 – 우물과 곡선 선들 – 각 이미지에 줄을서야합니다 당신이 깊이지도를 만들 때 우리는 그것을 정류라고 부릅니다 그리고 우리는 카메라 특성을 사용합니다 그것은 구부러진 지붕을 보여주는 것입니다

이 모든 기능은 OpenCV 라이브러리에 있습니다 Open 컴퓨터 비전 라이브러리 첫 번째는 Stereo Rectify입니다 이것은 우리에게 일련의 매개 변수를 가져옵니다 이 계산을 수행하는 데 사용할 수 있습니다

그래서 우리는 – 죄송합니다 API에서 얻은 값, 카메라 매트릭스, 왜곡 계수, 회전 및 평행 이동 우리가 전에 계산 한 것 우리는 이러한 매개 변수를 제거하고, 우리는 변형되지 않은 수정 맵을 호출합니다 우리에게 말하는 방법을 알려주는지도를 만든다 이 두 개의 서로 다른 카메라에서 두 개의 이미지를 가져올 수 있습니다

그들을 서로에 매핑하십시오 그리고 Remap 기능은 바로 이것을합니다 그럼 그게 우리에게주는 것을 보자 여기 왼쪽에서 다시 정상적인 캠, 앞쪽 캠, Pixel 3의 광각 렌즈 및 Pixel 3의 광각 렌즈 당신은 그들이 꽤 잘 어울리는 것을 볼 수 있습니다

상어 줄이 줄 지어 있습니다 작물에 대한 권리입니다 넓은 각도에는 더 많은 수확 지역이 있습니다 그게 전부 줄 지어있다 지붕 라인, 도어 라인은 직선입니다

엉뚱한 왜곡이 없습니다 그리고 실제로, 나는 당신이 앉아있는 곳에서, 당신은 아마 밀접하게보아야 만합니다 왼쪽 그림이 조금 더 가깝다는 것을 알기 위해 프레임의 왼쪽에 그래서 그들은 실제로 조금씩 상쇄됩니다 두 대의 카메라가 있다면 무엇을 기대할 것인가 9 밀리미터 간격

그래서 우리는 이미지를 얻었다 우리는 왜곡되지 않았습니다 우리는 그들을 바로 잡았습니다 우리는 깊이 맵을 작성하는 데 아주 가깝습니다 깊이 맵 기능을 호출하면됩니다

우리는 stereoBM 또는 stereoSGBM을 사용합니다 하나는 다른 것보다 몇 가지 매개 변수가 있습니다 오픈 소스 데모로 게임을 할 때, 이 매개 변수가 어떻게 작동 하는지를 볼 수 있고, 최적화, 변경 사항 커밋, 그 앱을 더 잘 만드는 데 도움이됩니다 그리고 우리는 계산을 호출하고이 깊이 맵을 만듭니다 그리고 그렇게하면 놀라운 사진을 얻을 수 있습니다

이렇게 실제로, 때로는 그것보다 훨씬 나아 보입니다 하지만 어쨌든 이것은 우리가 함께 일하기를 원하는 것이 아닙니다 우리가 정말로하고 싶은 것은 필터입니다

이 경우, 가중치 최소 제곱 필터를 사용하여 그것을 부드럽게하고 조금 더 유용한 깊이를줍니다 지도 따라서 우리가 데모에서 본 어두운 픽셀은, 더 먼 사람들입니다 흰색 픽셀이 가까운 픽셀입니다 그리고 아마도 조금보기가 어려울 것입니다

상어의 주둥이와 하마의 주둥이를 볼 수 있습니다 조금 회색으로 변했다 그래서 실제로 어느 정도 거기에서 일하고 있습니다 필터를 호출하는 방법입니다 OpenCV 라이브러리에도 포함되어 있습니다

기여 모듈에서 그것은 모두 오픈 소스입니다 그리고 정말 멋집니다 완벽한 깊이 맵을 얻으면 기분이 좋아집니다 좋아, 여기서 우리는 깊이 맵을 가지고있다

우리는 무엇을 할 것인가? 따라서이 깊이 맵을 마스크로 적용 할 수 있습니다 그리고 검은 영역, 우리는 페이드 아웃하고 싶습니다 전경을 강조하고 싶습니다 PorterDuff을 사용하면 꽤 쉽습니다 결과는 이와 같습니다

실제로 전경이 더 많이 존재합니다 그런 다음 배경이 희미합니다 개인적으로 나는 높은 기준을 가지고있다 반투명 플로팅처럼 보입니다 내 어깨 너머에 상어

내 얼굴이 조금 희미 해지고 내 안구가 없어 졌어 그래서 저는 이것을 통해 큰 또 하나의 붉은 색 X를 넣고 말할 것입니다 충분하지 않습니다 좋은 시작입니다 그러나 우리가 정말로 원하는 것은 이것과 같은 깊이 맵입니다

그래서 우리는 깊이 맵에 어려운 문턱을 놓을 것입니다 전경, 배경을 결정합니다 다른 앱에서는 비슷한 것을하고 싶을 수 있습니다 그러나 어쩌면 그렇게 가혹한 차이는 아닙니다 더 부드러운 곡선이 될 수 있습니다

이를 위해 OpenCV 함수 인 임계 값을 사용할 수 있습니다 우리는 그만한 가치를 부여합니다 앱의 경우 255 개에서 80 ~ 140 개 정도입니다 그리고 그것은 무엇인가가 고려되는 바로 그 한계입니다 전경 또는 배경

너를 위해 이것의 구현 내가 너에게 보여준 것처럼 마스크를 적용했을 때, 당신은 실제로 그 검은 픽셀을 돌릴 필요가 있습니다 투명 픽셀로 따라서이 함수는 모든 검은 색을 투명하게 변환합니다 우리가 간다

거의 다 왔어 그래서 저는이 슬라이드에서 한 가지만 기억하고 싶었습니다 중간 그림 – 내 눈이 조금 어둡다는 것을 알 수 있습니다 3 개의 슬라이드 이상을 기억하십시오 그래서 우리는 초기 그림을 가지고 깊이지도를 얻었습니다

우리는 그것에 대한이 어려운 문턱을합니다 그리고 배경을 다시 만들 수 있습니다 첫 번째 데모에서했던 것처럼, 그것을 흐리게하고 단색으로 그 전경을 잘라냅니다 붙여 넣기에 필요한 모든 조각이 있습니다 그리고 이것은 우리의 놀라운, 마지막, 인물 사진입니다, 그것은 꽤 좋다

나는 그것을 자랑스럽게 생각합니다 그럼 최적화에 대해 이야기 해 봅시다 내가 말하고있는 안구를 기억해? 그래서 어떤 종류의 반짝 반짝 빛나는 이 현재 반복에서 엉망이 될 수있다 응용 프로그램의 또는 밝은 빛이 깊이 맵 생성을 버릴 수 있습니다 그래서 최적화를 한 번했습니다

FaceDetect 영역이 있어야합니다 나는 전경에서 얼굴을 원한다고 확신한다 그래서 나는 그것을 사용하고 그것을 단호하게 잘라 말했습니다 얼굴에있는 모든 것이 전경에있게 될 것입니다 그래서 내 이빨과 내 눈처럼 보호 받았다

그 마스킹 아웃 효과에서 네가 알아 차렸는지 모르겠다 내가 돌아갈 수 있을까? 내 퍼지 붉은 머리카락과 빨간 소파 – 거기 우리는 간다 그들은 종류가 섞여있다 그리 블 컷을 사용할 수 있다고 생각합니다

정확하게 알아내는 것의 조금 더 나은 일을하는 것 전경에 뭐가 있는지 고마워 우리는 이것이 당신에게 깊은 잠수함을 준 것을 정말로 희망합니다 카메라 2와 멀티 카메라 API를 사용하여, 당신에게 흥미 진진한 창의적인 아이디어를 제공합니다

우리는 당신의 아이디어를 정말로 듣고 싶습니다 우리는 앱에서 그들을보고 싶습니다 그리고 우리는 또한 당신이 찾고있는 기능을 알고 싶습니다 우리는 그들이 위대하다고 생각합니다 카메라 생태계를 계속 추진하고 정말 생태계가 점점 더 커지고 있습니다

다시 한번 고마워 그리고 샌드 박스, 카메라 샌드 박스, 질문이 있으시면 후속 조치를 원할 경우이 앱을 사용해보고 싶습니다 작동하는지 확인하십시오 그리고 곧 오픈 소스를 찾으십시오 고마워

[박수 갈채] [음악 재생]

GAPID Graphics Debugger (Android Game Developer Summit 2018)

벤 클레이튼 : 안녕하세요, 저는 벤입니다 나는 잘 생겼어

이것은 파스칼입니다 파스칼은 또한 그것에 대해 거의 작업하고 있습니다 내가 가진 한 그래서이 슬라이드는 아마 지금은 조금 무의미합니다 GAPID, 오픈 소스, 개발 된 GL ES 및 Vulkan을위한 열린, 추적 및 재생 도구 현재 디버거입니다

많은 그래픽을 진단하고 수정하는 데 사용할 수 있습니다 게임 개발시 문제 우리는 현장에서 사용 해왔고 아주 바보 같은 것을 발견했습니다 일부 게임 엔진들 그렇지 않으면 완전히 숨겨 질 것입니다 개발자로부터

그것은 크로스 플랫폼입니다 Windows, Mac Linux를 실행하며 디버깅 할 수있는 Android 애플리케이션을 추적하는 데 사용할 수 있습니다 Vulkan에게는 실제로 데스크톱도 지원합니다 Windows에서 Vulkan 응용 프로그램을 추적 할 수 있습니다 또는 Linux, 분명히 Mac이 아닙니다

그리고 네, 지금 가서 다운로드 할 수 있습니다 GitHub에 있습니다 따라서 githubcom/google/gapid, 그런 다음 릴리스를 살펴볼 수 있습니다 그래서 그것에 대해 이야기하는 대신에, 결국 그래픽입니다

뿐만 아니라 몇 가지 물건을 보여줍니다 그래서 파스칼에게 가져 가겠습니다 파스칼 뮐러 : 그래, 우리가 처음 시작할 때, 이 시작 대화 상자가 나타납니다 캡처와 같은 가장 일반적인 작업을 빠르게 수행 할 수 있습니다 및 추적

마우스를 볼 수 있는지 보겠습니다 캡처, 추적 대화 상자 추적 할 API를 선택합니다 그리고 GL을 추적합니다 Android 기기를 선택할 수 있습니다

우리는 USB 포트가 부족하기 때문에, 우리는 실제로 추적을하지 않을 것입니다 그것은 또한 꽤 지루합니다 APK를 선택하십시오 몇 가지 옵션이 있습니다 그리고 파일을 추적 할 수 있습니다

하지만 대신에 이전에 찍은 흔적을 열어 두겠습니다 이것은 Google의 유일한 게임 인 Sushi, Android에서 상단에서 캡처 된 프레임을 볼 수 있습니다 프레임의 일부 프레임 미리보기가 표시됩니다 이것은 대부분 메뉴에 지나지 않습니다 우리가 더 흥미로운 것을 발견 할 수 있는지 봅시다

신청서의 시작 왼쪽 하단에는 모든 명령이 표시됩니다 그리고 프레임 단위로 그룹화하고 콜을 그렸습니다 그리고 애플리케이션에 디버그 마커를 포함시키는 경우 여기에 표시되는 디버그 마커가 표시됩니다

우리는 모든 그룹을 볼 수 있습니다 이것은 나를 위해 작은 것입니다 예를 들어 프레임을 한 단계 씩 이동할 수 있습니다 어떻게 그것이 둘 다 일어나는 지보십시오 여기에 그룹화 된 모든 그리기 호출이 표시됩니다

물론 실제 그리기 호출도 볼 수 있습니다 하지만 전화를 받아야 할 수도 있습니다 하지만 분명히 우리는 또한 GL 드라이버 상태의 나머지 부분 예를 들어, 형상을 볼 수 있습니다 그것은 여기 렌더링되었습니다

이것은 단지 약간의 잎이다 여기에 새우 초밥을 골라 드리겠습니다 좀 더 흥미로운 지오메트리를 볼 수 있습니다 예를 들어, 법선을 디버깅 할 수 있습니다 그들이 좋아 보이지 않는다면

형상을 검사 할 수 있습니다 이 무승부에 하나가있었습니다 또한 모든 텍스처를 검사 할 수 있습니다 그래서 우리는 사용 된 텍스처를 봅니다 그리고 이것은 또한 당신에게 내용을 보여줄 것입니다

렌더링 된 타겟 텍스처가 정말 멋지다 일반적으로 그림자를 렌더링해야합니다 화면에지도 여기에서 검사 만하실 수 있습니다 그리고 우리는 당신과 같은 이미지 도구를 가지고 있습니다

채널을 비활성화 할 수 있으므로 다시 섀도우 맵에 유용합니다 다른 채널에 대해 다른 값이 있습니다 확대하고 검사 할 수 있습니다 물론 셰이더를 보여줍니다 그리고 우리가 할 수있는 일 중 하나 빠른 프로토 타이핑입니다

차광 할 문제가있을 때마다 그늘을 더하고 있습니다 너는 그것을 구할 수있다 응용 프로그램을 다시 빌드해야합니다 그런 다음 패키지를 패키지로 만들어 장치에 배포해야합니다

단지 당신이 그 점 0 또는 무엇을 잊어 버린 것을 알아내는 것입니다 그래서 여기에서 쉐이더를 편집 할 수 있습니다 여기에 내가 전에 구한 것을 붙여 넣으십시오 변경 사항을 푸시합니다 몇 초 후에 변경 사항을 볼 수 있습니다

그 일이 일어나고 우리의 Skybox가 멋진 일몰으로 변하게됩니다 빨간 모든 프레임에서 변경되었음을 알 수 있습니다 우리는 작은 하늘 상자를 멋지고 붉은 색으로 바 꾸었습니다 우리는 GL 드라이버의 전체 상태를 추적했습니다

추적의 어느 시점에서든 검사 할 수 있습니다 문제가 발생하여 원하는 경우 이 시점에서 계획 상태가 무엇인지 알기 위해, 당신은 들어가서 추적을 조사 할 수 있습니다 비행기 상태를 볼 수 있습니다 (예 : 여기 프레임 박스는 여기에 있습니다 설정 한 모든 값을 볼 수 있습니다 오, 이건 달라야합니다

우리는 또한보고 시스템의 시작을 가지고 있습니다 예를 들어, 오류를 추적합니다 감옥 오류 – 감옥 추적 오류가 발생합니다 여기에 예를 들어 설명하겠습니다 명령에 빨리 갈 수 있습니다

그리고이 get integer가 흥미있는 식별자를 가지고 있음을 보아라 존재하지 않습니다 그리고 우리는 다른 것들에 대해서도 계획하고 있습니다 우리가 당신의 흔적에서 발견하고 당신을 줄 수있는 하루를 어떻게 향상시킬 수 있는지에 대한 실용적인 피드백 나는 그것의 대부분을 다루고 있다고 생각합니다

BEN CLAYTON : 기억을 시도 했습니까? 파스칼 뮐러 : 분명히, 어떤 명령에 대해서는, GL 유니폼과 같은 것을 찾아 보자 기억을 보는 것은별로 흥미롭지 않습니다 바늘 그래서 우리는 분명히 기억을 추적합니다 그리고 어떤 기억이 통과되었는지 알 수 있습니다

그리고 [INAUDIBLE]에서 포맷 할 수 있습니다 여기에서 여러분은 그 행렬을 볼 수 있습니다 이 유니폼에 전달되었습니다 BEN CLAYTON : 메모리는 일종의 전동 공구입니다 그러나 선택한 특정 명령에 대해 당신은 그 모든 메모리를 볼 수 있습니다

명령에 의해 읽거나 썼다 그 시점에서 하나씩 벗어나는 오류에 유용합니다 그래, 그게 지금 그 도구에요 다른 몇 가지 그는 GL에 여러 맥락을 넣었습니다

맨 위에있는 바, 기본적으로, 가장 관련성이 높은 문맥을 고려 특정 게임 하지만 많은 엔진의 경우 스핀 업되는 다중 컨텍스트 그래서 그들 사이를 볼 수 있습니다 인터리빙 된 컨텍스트 모드에 대한 옵션으로서, 그래서 문맥이 어떻게되는지 볼 수 있습니다 그들 각각과 이야기하는 것

하지만 그래, 그게 우리가 지금하는 일이야 그런데 질문이 있으면, 방해해서는 안됩니다 파스칼 뮐러 : 예 청중 : 고해상도 CPU 타임 스탬프가 있습니까? 이에? 때로는 코드가 CPU 측에서 무엇을하는지 알고있는 것이 좋습니다 프레임을 만들 때

벤 클레이튼 : 현재, 아니 우리는 타임 스탬프와 같이 여분의 메타 데이터를 넣고 싶었습니다 정보 우리는 그 유용성에 관해서 울타리에 서있다 추적을하면 시간이 왜곡되기 때문입니다

따라서 실시간 정보를 갖는 것은 약간의기만 행위가 될 수 있습니다 그러나 스택 추적 정보 같은 것들 특히 유용 할 것입니다 특정 드로우 콜을 보는 것은 나쁘다 그게 어디서 온거야? 그래 관객 : [INAUDIBLE] BEN CLAYTON : 다시 한번 말하지만, 그들을 우리에게 보내주십시오

그리고 우리는 그들에게 행동 할 것입니다 청중 : 프레임 속도보기에 현재 렌더링이 표시됩니까? 바운드 된 타겟, 또는 백 버퍼가 될까요? 우리가 사용하는 프레임 버퍼는 현재 무엇이 있는지 보여줍니다 그 시점에서 흔적이 많다 BEN CLAYTON : 게시물 효과와 화면에서 벗어나면 모든 것을 디버깅 할 수 있습니다 관객 : 아마도 나는 그것을 놓쳤습니다

GPU 및 Android OS의 요구 사항은 무엇입니까? 지금 지원됩니까? Android 버전은 모든 GPU에서 작동합니까? BEN CLAYTON : 좋습니다, 이론적으로 그렇게 중요하지 않아야합니다 우리가 그 순간에 가로 챌 방법 드라이버를 패치하는 것입니다 그리고 패치 할 수있는 것에 몇 가지 제한이 있습니다 그래서 우리는 특정 바이트 수를 요구합니다 우리가 변경하려고하는 함수 당 명령 수

특정 운전자에게는 기능이 너무 짧습니다 Android 최신 버전 출시 및 곧 출시 예정 [INAUDIBLE] OS 지원입니다 그래서 우리는이 불쾌한 운전자에게 패치를하지 않을 것입니다 실제로 OS에 훅이 생깁니다 그래서 우리는 무엇이든 추적 할 수 있습니다

관객 : 안녕하세요 픽셀 버퍼 [INAUDIBLE]의 [INAUDIBLE] 확장 프레임에 있습니까 을지 지하다– BEN CLAYTON : 현재 깊이를 검사 할 수 있습니다 스텐실에 대한 견해가 없습니다 그러나 우리는 곧 그 일을 할 것입니다 관객 : 그것은 우리에게 매우 유용합니다

BEN CLAYTON : 우리가하는 일에 대해서 – 그 전에 도구가 꽤 모듈 식입니다 우리는 모든 현명한 사람들이 있습니다 하나의 특정 프로세스에서 그리고 UI는 사실 전혀 묶여 있지 않습니다 우리는 RPC 사용자 인터페이스를 사용하여 서버와 통신합니다

그리고 우리는 실제로 우리가 다른 도구를 가지고 있습니다 당신이 그것을 다운로드 할 때 배 그것은 GAPID라고합니다 실제로 동일한 기능을 많이 제공합니다 개발하는 데 정말 유용했습니다

이 명령을 사용하여 명령, 상태, 프레임, 그것을 사용하여 GL 오류 또는 Vulkan 문제를 찾으십시오 자동화 된 테스트에서이 점에서 많은 가치를 발견합니다 추적을 할 수 있습니다 명령 줄 도구를 사용할 수 있습니다 예를 들어 야간 빌드의 일부로 그렇지 않으면 실종 될 응용 프로그램의 문제

그래서 예를 들어, 나는 가지 않을거야 명령 행을 입력하십시오 그러나 우리가 단지 demoing하고 있었던 것과 같은 흔적이 주어지면서, 특정 시점에서 스크린 샷을 얻을 수 있습니다 우리는 또한 MP4 비디오를 만들 수 있습니다 네가 가진 건 뭐든간에

우리가 가지고있는 또 다른 모드가 있습니다 추적하는 동안 프레임 버퍼를 캡처합니다 그리고 나서 우리가 검증을 할 때, 우리는 실제로 리플레이가 일치하는지 확인할 수 있습니다 하나의 기기 재생이 진행될 때, 운전자와 운전자 사이의 변화에 ​​특히 유용 할 수 있습니다 예를 들면

그리고 내 슬라이드가 실패했습니다 예 그래서 우리가 현재하고있는 현재의 일, 시도해 본 사람들을 위해 이미 GAPID, 실망했을 수도 있습니다 도구의 성능 우리는 그것이되어야 할만큼 빠르지 않다는 것을 충분히 알고 있습니다

그리고 너무 많은 메모리를 차지합니다 이것이 우리의 가장 중요한 것입니다 지금 당장 노력하고있어 빨리해라 리소스를 덜 차지하게 만듭니다

GL ES의 중간 실행 캡처는 다음과 같습니다 우리는 사람들이 많이 많이 원한다는 말을 들었습니다 그래서 우리는 그것을 곧 풀어 나갈 것입니다 그리고 기기 재생시 – 우리가 간단히 언급했듯이 나는이 컴퓨터의 모든 USB 포트를 실제로 사용했습니다

GL ES에 대한 재생이이 컴퓨터에서 수행되고 있습니다 따라서 우리는 GL ES에서 다시 데스크톱 GL로 변환하여 재생합니다 우리가 할 수있는 한 멀리까지 가져 왔습니다 애플은 GL 드라이버를 더 이상 밀어 붙이지 않았다 우리는 현재 GL ES가 실제로 데스크톱 GL, 기본 포트를 초과하므로 데스크톱 재생, 번역을 통해 실제로는 불가능하기가 어렵다

불칸에게도 마찬가지입니다 공연 우리는 또한 그곳에서 유효성 확인을 원합니다 보고서의 일부로 따라서 레이어를 가질 필요가 없습니다 너는 흔적을 남겼다

그리고 같은 정보를 얻습니다 그리고 마지막은 Vulkan 데이터를 시각화하기위한 향상된 UI입니다 Vulkan은 GL ES의 매우 다른 짐승입니다 즉각적인 모드가 아닙니다 명령 버퍼가 있습니다

일련의 호출 순서로 항목을 표시하려고합니다 그것을하는 한 방법입니다 그러나 우리가 느끼는 최선의 방법은 아닙니다 그래서 우리는 지금 많은 연구를하고 있습니다 이 새로운 그래픽을 더 잘 시각화하는 방법 API를 사용하면 그래프 표현이 더 많을 수도 있습니다

그 후에 우리는 사물에 대한 많은 아이디어를 가지고 있습니다 우리가하고 싶은 것 그러나 우리는 당신으로부터 피드백을 받고 싶습니다 어디에 우리가 시간을 투자해야하는지 나는이 프로젝트를 수년 동안 이끌어 왔습니다

그리고 10 대 때, 나는 항상 RTS 게임을 너무 많이 사용했습니다 그래서 테크 나무는 일종의 방법입니다 나는 많은 것들이 있다는 점에서 내가하는 일을 시각화한다 내가 할 수 있고 어떤 것들은 잠금 해제 다른 것들 나머지 슬라이드는 우리가 할 수있는 일의 일부를 겪게 될 것입니다

그리고 어떻게 내 미친 gamey 두뇌에 그들을 분류합니다 당신이 기입 할 수있는 설문지가 있습니다 우리가 이것을 통과 할 때 함께 놀면 도움이 될 것입니다 너 내가 뭘 말하는지 알 수 있도록 질문이있을 때에 대해

원하지 않는다면 괜찮습니다 나 한테서 붙들지 않을거야 하지만 그걸 열 수 있다면 계속 해봐 슬라이드는 질문과 관련됩니다 그게 다가와

시원한 파스칼 뮐러 : 문제가 있습니다 벤 클레이튼 : 질문 하나? 청중 : 그래픽 프로파일 러에 대한 타임 라인이 있습니까? GPU를 위해? 파스칼 풋내기 : 타임 라인? 오늘부터 피드백이 무엇인지 알게 될 것입니다 우리는 타임 라인을 얻을 수 있을지도 모릅니다 시원한

첫 번째 그룹은 통계입니다 프로파일 링을 포함하지 않는 것들을 분류합니다 이 그룹에서는 여전히 의미있는 가치를 지니고 있습니다 그래서 우리가 지금 가지고 있어야만하는 가장 간단한 것, 일종의 x 물건입니다 프레임 당 그리기 호출 수입니다

가장 확실한 것입니다 기기에서 2,000 회의 무승부 전화 오직 몇 백에 대처할 수 있습니다 당신은 나쁜 시간을 보낼 것입니다 이것의 예는 프레임 당 분명히 드로우이며, 무승부 당 정점, 무엇이든간에 삼각형, 메모리 사용량의 추정치도 마찬가지입니다 가지고있는 텍스처의 수

우리는 또한 일종의 장치 예산을 생각해 내고 싶다 작년 내 작품의 일부 게임 회사에 나갔다 60 점을 얻는 데 도움을 주려고합니다 x 당 y 가지를 기반으로, 숫자 개발중인 도서 목록 어떤 종류의 합리적인 지침도없이 얼마나 많은 무승부를 요구해야하는지 특정 장치를 만들 수있다 조금 우울합니다

우리는 일종의 데이터를 제공 할 수 있습니다 특정 주력 장치의 경우, 프레임 당 x 개의 정점을 제출하는 것이 좋습니다 예를 들면 우리는 GAPID 내부의 자동 지식을 가질 수 있습니다 다른 장치 모음 네가 알면 경고 해 줄거야

그 예산 밖에서 FrameBuffer 시각화 – 이것들 당신이하는 오버 드로의 숫자 같은 것들입니다 여기에 물건을 넣을 수도 있습니다 심도가 떨어질 수있는 조각을 강조 표시하는 것과 같습니다 시험, 좋은 일이 될 수있다

또는 쉐이더 프로그램에 의해 프레임을 표시하는 것, 예를 들면, 이것은 좋은 알기 방법입니다 여기서 쉐이더를 최적화해야 할 곳을 찾아야합니다 관객 : [INAUDIBLE] 파스칼 뮌스터 : 네, 오버 드로가 그 일부입니다 관객 : [INAUDIBLE] 파스칼 뮌스터 : 이제오고 있습니다 셰이더 정적 분석 – 이것은 까다로운 문제입니다

그것은 공기 중 하나의 손가락이어야합니다 많은 다른 GPU가 있기 때문에 거기 밖으로, 귀하의 쉐이더 코드 사이에 많은 중간 레이어 셰이더가 실제로하는 일은 하드웨어가 수행하는 작업입니다 하지만, 우리는 숫자에 대한 대략적인 견적을 내놓을 수 있습니다 텍스트를 통한 ALU 작업의 예를 들어, 손을 물결 치는 데 도움이 될 수 있습니다 셰이더가하는 일 중 프로파일 링 – 큰 기능 요청은 여기에 있습니다

사람들이 생각하는 제일 먼저하는 것은 틀과 그림, 카운터, 나는 말했다 그러나 프레임과 드로 타임은 아주 좋습니다 불행히도 타일링 된 아키텍처는 통화 시간은 매우 어렵습니다 우리는 몇 가지 아이디어를 가지고 있습니다 유용한 일부 데이터를 찾을 수 있습니다

그러나 프레임 속도가 얼마인지 알면, 어떤 일들이 얼마나 오래 걸리고 있는지 아는 것 우리가하고 싶은 것이 분명합니다 IHV로부터 하드웨어 카운터를 얻을 수 있다면, 우리는 하드웨어의 거대한 바다를 맛보고 싶습니다 아무도 정말로 이해할 수없는 카운터 의미있는 시간이기 때문에 얼마나 많은 시간을 할 수 있는지 알려줄 수 있습니다 [INAUDIBLE]을 (를) 지출하면 얼마나 많은 시간을 할애 할 수 있습니다 예를 들어, 캐시 엉망진창

많은 IHV 도구들 드로우 콜 타임 (draw call time)과 같은 것을 제공하는 것은 상대적 셰이더 비용입니다 그래서 그들의 도구가 정확히 어떻게 말할 수 없을지라도 오랜 한 번의 무승부 요청이 걸렸습니다 그들은 더 많은 접근 방식을 취합니다 이것들은 당신이 가진 모든 쉐이더 프로그램들이다 그리고이 특별한 것은 실제로 당신의 시간의 30 %를 필요로합니다

최적화해야하는 곳입니다 이것은 내가 생각하기에 매우 소중한 것입니다 우리는 확실히해야합니다 우리가 처음 두 가지 일을 끝내면, 우리는 통계를 바탕으로 한 제안을하고 싶습니다 따라서 이전에 다른 도구를 사용한 적이 있다면, 그들은 종종 당신이 생각했는지 제안합니다

정점 형식을 변경하는 것에 대해 [INAUDIBLE] 그 (것)들을 분리하는 것과 반대로? 이러한 것들이 우리가 도구를 원할 것입니다 실제로 가서 당신을 위해 할 수 있습니다 도구에 실제로 사용할 수있는 패턴이 여러 개있는 경우 탐지하여 추적에 적용하고 시간을 정하십시오 우리는 일종의 정렬 된 목록을 제공 할 수 있습니다 영향으로 주문한 이익을 최적화하기 위해 할 수있는 일

나는 게임 개발자, 그들의 시간은 소중합니다 너는 삼일을 보내고 싶지 않아 절반 이상 향상시킬 수있는 무언가를 최적화합니다 이 한 가지 일을 보여줄 수 있다면 시간의 10 %를 절약 할 수 있습니다 자주 잊혀지는 또 다른 일 전력 사용 및 열전쌍입니다

정말 중요합니다 그래서 우리가 당신에게 어떤 프로파일 링을 줄 수 있다면 타이밍에 관한 정보, 우리도해야한다 얼마나 많은 힘을 사용하고 있는지 보아라 우리가 할 수있는 게 있는지 알아봐 그것을 줄이기 위해 제안하십시오

셰이더 디버깅 – 버텍스 나 프래그먼트를 클릭 할 수 있음 귀하의 FrameBuffer에서 단일 라인 스테핑 있습니다 그래서 이것은 아주 기본적인 버그입니다 우리는 당신이 전방과 후방으로 나아갈 수 있기를 원합니다 시계 창을 가지고, 당신이 따라갈 때 모든 값을보십시오 여기에도 큰 질문이 있습니다

당신이 더 많은 시뮬레이션을 할 수 있을지 여부 실제 하드웨어 대 두 가지 모두에 장단점이 있습니다 디버깅하려는 경우, 그리고 당신은 검은 색 픽셀을 얻고 있고 그것은 드라이버 또는 하드웨어입니다 문제를 제기 한 다음, 분명히, 실제로 하드웨어 문제가 있음을 여러분에게 증명할 수 있습니다 반면에, 실제 하드웨어에서 벗어나려고 할 때 같은 방식으로 왜곡 된 결과를 줄 수 있습니다 픽셀 역사 – 그것은 디버깅의 일부분이며, 하지만 FrameBuffer를 클릭하면 색깔에 영향을 미치는 모든 무승부, 또는 깊이 또는 스텐실

나는 그것들을 포함 시키거나 제외시킬 수있다 이후 겹쳐 썼다 셰이더 기능 및 성능 표 버텍스 폼에 더 일반적입니다 미친 버텍스가 하나 있다면 스크린에서 반 마일, 너 너 그 하나의 것을 식별 할 수 있고, 가서 가서 디버깅 할 수 있습니다 왜 당신이 [무관심한] 또는 무엇인가를 가지고 있는지 알아 내십시오

그리고 우리가 생각한 다른 것 너 괜찮 으면, 아주 좋을거야 특정 쉐이더 디버깅, 입력 강조하기 출력합니다 예를 들어 텍스쳐가 있다면, 당신이 당신의 쉐이더에서 샘플링하고 있다는 것, 실제로 조각을 강조 표시합니다 그 특별한 쉐이더 [INAUDIBLE]에 관련되어 있습니다 우리가 할 수 있다고 가정하면, 매우 좋을 것입니다

등방성 필터링이있는 경우 실제로 사용되는 모든 조각 그리고 마침내 레퍼런스 레서 라이저를 사용하게됩니다 그래서 우리 말의 문제를 만지십시오 데스크톱 리플레이를 우리가 할 수 있다고 생각하는 한 이제 대안을 찾고 있습니다

따라서 참조 복원 기가 매우 유용 할 수 있습니다 다른 것들을 위해서뿐만 아니라 보장 된 재생을 갖는 것 호스트 시스템에서 수행 할 수 있습니다 이제 첫 번째는 우리가 알고있는 것입니다 장치에는 문제가 있습니다 운전자는 버그가있을 수 있습니다

하드웨어에 실제로 결함이있을 수 있습니다 우리는 이것에 대해 정말로 듣고 싶습니다 우리는 얼마나 많이 원하는지 충분히 강조 할 수 없다 깨진 운전자에 대해 듣기 우리는 사람들이 나쁜 시간을 보내고 있다는 것을 압니다

그러나 우리는 나가서 당신 이야기를 많이해야합니다 그래서 당신이 흔적을 가지고 있다면, 당신이 그것을 가지고, 당신은 유휴 상태입니다, 우리는 우리가 백그라운드에서 재연 할 수 있다고 생각합니다 참조 수복물로 그 후에, 당신은 당신이 기기에서 재생되고있다 우리가해야한다고 생각하는 것과 일치합니다 그리고 그들이 같지 않으면, 우리는 당신을 제공 할 수 있습니다

원 클릭 리포터 버그 그것은 우리에게 우리가 운전수에게 줄 수있는 정확한 기록을줍니다 팀이이를 수정해야합니다 그래서 그것은 안드로이드 생태계에 좋은 방법이 될 것입니다 모든 주위에서 더 좋을 것

GL ES 및 Vulkan 등이 있습니다 그것에 물결 모양의면을, 특히 떠있는 주위에 포인트 정밀도 및 샘플링 우리가 참조 회복기를 가지고 있다면, 우리는 여기에 가치가 있다고 생각합니다 네가 할 수있는 손잡이가있어서 기본적으로 물건이 어떻게 보이는지 비교하는 것 다른 하드웨어 사양 그래서 부동 소수점 정밀도는 고전적인 것입니다

부동 소수점 정밀도를로드하는 경우, 그러면 셰이더가 갑자기 0으로 나누기 시작합니다 이것은 일어나고 무언가이다 우리가 너를 자동으로 잡을 수 있을지도 몰라 [INAUDIBLE]에서 On-host replay – 우리는 GL ES를 얻었습니다

우리는 Vulkan을 위해서도 그것을 원합니다 레퍼런스 레서 라이저로 확실히 가능합니다 우리가 지금 가지고있는 것보다 훨씬 견고합니다 그리고 나서 마침내 자동화 된 테스트가 시작됩니다 이런 종류의 GAPID 도구로 돌아갑니다

당신이 안식의 휴식을 취한다면 네가하고있는 야간 빌드를 가지고있어 기본적으로 GAPID를 기본적으로 가질 수 있습니다 게임의 흔적을 가져라 그래픽의 API를 잘못 사용하지 않았는지 확인하십시오 그리고 이것을 사용하여 참조를 얻을 수도 있습니다

게임이 어떻게 보이는지에 대한 비디오 그리고 도구를 사용하여 실제로 얻으십시오 관심을 보이는 여러 기기의 동영상 잠재 고객이 팝업으로 표시 할 때 문제가 될 수 있습니다 점점 지난 주와는 달리 문 밖으로 게임 그래서 그것은 내가 방금 만났던 많은 것들이었습니다

아주, 아주 빨리 덮여 내가 여기에서 놓친 것들이 있다면 당신은 생각합니다 매우 귀중합니다 제발, 제발, 알려주세요 그리고 그게 다야

질문 있니? 관객 : 파워 프로파일 링에 대해 이야기했습니다 BEN CLAYTON : 죄송합니다, 그를 위해 마이크 관객 : 방금 전원 프로파일 링에 대해 언급했습니다 당신은 정교 할 수 있습니까? BEN CLAYTON : 아직 연구 중에 있습니다 그러나 그 생각은 우리가 능력을 가질 수 있다는 것입니다

같은 프레임을 되풀이하여 재생합니다 실제로 하드웨어를 지원하여 배수관을 보았다면 열전자를 모니터링하면 적어도 게임을 꾸준히 계속한다면, 함께 올라와라 이 특정 프레임과 비슷한 네가 가질 특성의 종류 야 배터리 및 열전쌍 그리고 우리가 최적화를 위해 가지고있는 휴리스틱 중 하나는, 우리는 또한 그것을 시도 할 수 있습니다

너를 밤새껏 달려야하는 무언가일지도 모르다 시도하고 안정적인 결과를 얻을 수 있습니다 하지만 주와 주보다 좋습니다 너 자신을 파고 들었다 관객 : 질문지에 대한 URL을 백업 할 수 있습니까? BEN CLAYTON : 물론입니다

우리는 거기에 갈 관객 : 힘과 열기에 관해서는 그걸 묶을 방법이 될거야 코어 주파수 및 CPU 사용량, 거기 있는지 여부를 볼 수 있습니다 통화 제출 간의 절충 시간 대 실제 GPU 시간? 벤 클레이튼 : 좋은 제안 그래 어쩌면

이것들은 우리가 간단히 살펴 봤던 것들입니다 우리는 개발을 시작하지 않았습니다 그래, 그게 가치있는 일이라면

DevBytes: Android L Developer Preview – Camera2 API

ANKUR KOTWAL : Android L의 Camera2 API 카메라를 엄청나게 제어 할 수 있습니다 저는 Google 개발자 옹호자 Ankur Kotwal입니다

이 API가 얼마나 놀라운 지 보여 드리겠습니다 먼저 Kit Kat 카메라 API를 살펴 보겠습니다 그것은 정말로 직접적인 포인트를 위해 디자인되었고 촬영되었습니다 카메라 애플 리케이션, 그리고 이것 때문에, 스트리밍 이미지 데이터에 액세스하는 데에는 제한적인 방법이 있습니다 또한 API는 수동 캡처 제어 방법을 지원하지 않습니다

이러한 한계를 극복하기 위해 개발자들에게 능력을 부여한다 멋진 카메라 앱을 만들기 위해 완전히 새로운 API 세트를 도입했습니다 AndroidhardwareCamera2에서 꾸러미

한 번 보자 이 새로운 API는 파이프 라인으로 설계되었으며, 일방 통행 대신에 이제 출력 서피스를 미리 구성 할 수 있습니다 카메라에 부착하십시오 각 표면은 대상이 될 수 있습니다 이미지 버퍼의 스트림에 대한 요청을 전달할 수 있습니다

캡처 세션을 통해 각 요청은 하나의 결과 객체로 변환되며, 대상 표면이 이미지 버퍼로 채워집니다 여러 요청을 동시에 전달할 수 있지만, 이러한 요청은 비동기 적으로 처리됩니다 간단한 카메라를 만드는 데 필요한 것을 살펴 보겠습니다 이 새로운 API를 사용하여 먼저 카메라 하드웨어를 감지해야합니다 장치의 기존 카메라를 열거하고, 카메라에서 자세한 정보를 얻으십시오

CameraManager 서비스를 사용하여 그런 다음 열린 카메라 방법을 호출하여 카메라를 사용할 수 있습니다 ID와 콜백 목록이 있습니다 장치가 준비되면 onOpened 메서드 카메라 장치 인스턴스로 호출됩니다 이 순간은 하나의 카메라를 나타냅니다 요청을 제출하기 전에 버퍼 출력 타겟 세트를 정의한다

그들을 카메라 장치에 연결하십시오 이 작업은 카메라 캡처 세션을 시작하여 수행됩니다 예를 들어, TextureView를 사용하여 미리보기, 비디오 레코딩 용 MediaRecorder, 또는 YUV 처리를위한 RenderScriptAllocation 서페이스를 만들면 서페이스의 크기 중요하다 카메라 장치는 특정 유형의 크기 만 지원합니다

따라서 각 표면에 유효한 크기를 설정해야합니다 먼저 사용 가능한 스트림 구성을 얻습니다 카메라가 스칼라 스트림 구성을 지원하는지 여부 지도 크기는 결과 중 하나 여야합니다 getOutputSizes 메소드에서

이 예제에서는 첫 번째 예제를 가져와야합니다 하지만 실제 시나리오에서는 이 배열을 조사하고 싶을지도 모른다 적절한 크기를 선택하십시오 필요한 서페이스를 생성 한 후, createCaptureSession 메소드를 호출 할 수 있습니다 세션을 만들려면 다음을 요구할 수 있습니다

수백 밀리 초 세션이 준비되면 요청을 처리 할 수 ​​있습니다 필요에 따라 요청 빌더를 만들 수 있습니다 미리 정의 된 템플릿 중 하나를 사용하여 그런 다음 캡처 요청을 빌드 할 수 있습니다 빌드에서 build 메소드를 호출하여

여기서 TEMPLATE_PREVIEW는 미리보기 요청에 사용되며, TEMPLATE_STILL_CAPTURE는 JPEG 캡처에 사용됩니다 의뢰 이제는 세션과 요청을 모두 갖게됩니다 요청을 제출하는 데는 두 가지 옵션이 있습니다 캡처는 주어진 캡처 요청을 사용하여 하나의 이미지를 캡처하는 것입니다

한편, setRepeatingRequest 이미지를 연속적으로 캡처하기위한 것이다 명시된 요청을 반복적으로 사용함으로써 명시 적으로 멈춰 capture 및 setRepeatingRequests 모두 캡처 요청 목록을 가져 오는 오버로드가 있습니다 캡처를위한 CaptureBurst 및 setRepeatingBurst 반복 요청을 설정합니다 그러나 캡처 요청을 제출하기 전에, 카메라를 조정해야 할 수도 있습니다

귀하의 필요에 따라 설정 빌더의 속성을 수정할 수 있습니다 요청을 작성하기 전에 화이트 밸런스 모드, 효과, 심지어 플래시 설정 정말 큰 효과가 있습니다 음화와 세피아 같은 것을 적용 할 수 있습니다

태양 광 등 노출 및 초점 설정과 정확하게 상호 작용할 수 있습니다 CONTROL_AF_TRIGGER 및 CONTROL_AE_PRECAPTURE_TRIGGER을 (를) 사용합니다 그래도 조심해 초점을 올바르게 설정하는 것을 잊어 버린 경우, 당신은 조금 흐린 이미지로 끝날 수 있습니다

요청을 제출할 때마다 캡처 수신기 콜백을 전달할 수 있습니다 캡처 진행 상황을 추적합니다 예를 들어, onCaptureStarted를 사용할 수 있습니다 셔터 음 재생 또는 캡처 재생 생기 캡처 요청이 처리 된 후, onCaptureCompleted는 총 캡처로 호출됩니다

요청 결과 인스턴스 이 순간, TotalCaptureResult 캡처 프로세스의 최종 구성을 포함하며, 대상 표면이 곧 나타납니다 최종 캡처 데이터가 전송됩니다 표면을 통해 출력 이미지에 액세스 할 수 있습니다 그리고 그 이미지를 사용하는 방법은 당신에게 달린 것입니다

기본 카메라 응용 프로그램에서 바이트 버퍼를 얻을 수 있습니다 상기 화상 판독 부로부터의 화상 중, 그것을 SD 카드에 저장했습니다 그래서 이것은 새로운 Camera2 API입니다 매우 유연하고 통합 된 파이프 라인으로 설계되었습니다 모든 카메라 관련 작업에 대해 응용 프로그램의 기능을 향상시킵니다

카메라 서브 시스템을 제어한다 Camera2 API에 대한 자세한 내용을 확인할 수 있습니다 유용한 샘플은 developerAndroidcom에서 확인하십시오

Android 개발자를 확인하십시오 더 많은 새로운 API를 미리보기 고맙습니다

Android Studio 3.2, new APIs for ARCore, what’s new in Kubernetes 1.12, & more!

TIMOTHY JORDAN : 안녕하세요 저는 The Developer Show의 Timothy Jordan입니다

가장 멋진 개발자의 주간 업데이트입니다 Google의 뉴스 이제 Android Studio 32를 다운로드 할 수 있습니다 설명에 링크 된 게시물로 넘어가십시오

Android와 같은 주요 기능에 대한 최신 세부 정보는 아래를 참조하십시오 앱 번들, 에너지 프로파일 러 및 새로운 Android 에뮬레이터 스냅 샷 우리는 최근 ARCore 플랫폼 업데이트를 발표했습니다 증강 현실 체험을위한 Scene Form, 3D 렌더링도 업데이트했습니다 Android에서 AR 응용 프로그램을 작성하기위한 라이브러리 알고리즘 개선이 포함됩니다

그러면 앱에서 메모리와 CPU를 적게 소비 할 수 있습니다 더 긴 세션 동안의 사용뿐만 아니라 콘텐츠에 대한 유연성을 제공하는 새로운 기능 조치 코드 및 예제 스크린 샷이 게시물에 있습니다 클라우드 네이티브 커뮤니티 재단 지난 주 Kubernetes 112를 발표했다

이 게시물은 Kubernetes 오픈 소스에서 Google 클라우드가 주도하고 있습니다 프로젝트 (빠른 확장, 토폴로지 인식 스토리지 포함) 프로비저닝 및 고급 감사 기능을 제공합니다 최근에 Google은 Cloud Tasks를 발표했습니다 App Engine Flex의 작업 대기열 서비스입니다 2 세대 런타임 분산 작업의 모든 이점을 제공합니다

대기열 (작업 오프 로딩 포함) 서비스 간의 느슨한 결합 및 향상된 시스템 신뢰할 수 있음 시작하기위한 자세한 내용과 링크를 보려면, 게시물에 머리를 Google 글꼴 카탈로그에는 이제 일본어 웹 글꼴이 포함되어 있습니다 관련된 최적화에 대한 일부 세부 사항은, 게시물을 봐 Chrome을 출시한지 거의 10 년이 지났습니다

확장 시스템 및 거의 절반의 Chrome 데스크톱 사용자 확장 기능을 적극적으로 사용하여 맞춤 설정 Chrome과 웹에서의 경험 이러한 사용자는 신뢰할 수 있어야합니다 설치하는 확장 프로그램이 안전하고 개인 정보를 보호하며, 및 공연자 그래서 우리는 최근 몇 가지 변경 사항을 발표했습니다 호스트 권한에 대한 사용자 제어, 변경 사항 확장 검토 프로세스, 새로운 코드 가독성 요구 사항 설명에 링크 된 게시물을 클릭하십시오 모든 세부 사항은 아래를 참조하십시오

마음에 드시고 구독하고 공유하시는 것을 잊지 마십시오 저는 The Developer Show의 Timothy Jordan입니다 보고 주셔서 감사 드리며 다음 주에 다시 보겠습니다 안녕하세요 저는 The Developer Show의 Timothy Jordan입니다

한 번 더 – TIMOTHY JORDAN : [LAUGHING] 그래 좋아 지금? 그래 좋아

Introduction to Maps API on Android Wear (100 Days of Google Dev)

HOI LAM : Android Wear는 멋진 제품입니다 신속하고 눈에 잘 띄는 정보 당신이 연결되어있는 동안 현재에 머무를 수있게 해줍니다

자연스럽게 가장 많이 요청한 기능은지도에 위치를 표시하는 것입니다 저는 Hoi Lam이고 최신 Google Play 서비스 업데이트로, Google Maps API가 Android Wear에 도착했습니다 이것은 클래스 매핑 기능이 최고라는 것을 의미합니다 단 몇 줄의 코드 만 남기고 이 Tech Byte에서는 몇 가지 일반적인 사용 방법을 설명합니다 Android Wear에서지도 API에 대한 사례, 이를 구현하는 방법에 대한 첫 걸음을 제공합니다

시작하기 전에 좋은 소식이 있습니다 Android Wear의 Google Maps API Android 휴대 전화 및 태블릿과 동일한 API를 기반으로합니다 결과적으로 Android에서 Google Maps API를 사용한 경우 전에, 집에서 바로 느낄거야 가장 일반적인 사용 사례 중 하나는 단순히지도를 표시하는 것입니다 앱에서 획기적인 마크를 표시해야 할 수도 있습니다

또는 실행중인 경로를 표시 할 수 있습니다 이 경우, Map Fragment 또는 Map View에 사용할 수 있습니다 Google Maps API 키를 신청하십시오 필요한 경우 마커 및 폴리 라인을 추가합니다 이 모든 기능을 사용할 수 있습니다

이미 동일한지도 API를 사용하고 있습니다 Android에서 잘 알고 있지만 단 한 가지주의 사항 만 있습니다 Android Wear가 제스처를 예약합니다 해고를 위해 왼쪽에서 오른쪽으로 스 와이프하는 중 현재 응용 프로그램 주위를 둘러 볼 맵이 필요하지 않은 경우, 이것은 계속 작동 할 것입니다

그러나 주위를 돌아 다니며 이동하려는지도가 필요한 경우, 이 특정 해제 동작을 무시해야합니다 혼란을 줄이고 실제로 사용자가 앱을 나가게하십시오 이렇게하려면 Overly Dismissing을 구현해야합니다 보기, 십자가와 함께이 빨간색 동그라미, 긴 클릭 이벤트에 첨부하십시오 뷰는 닫는 동작을 처리합니다

또 다른 일반적인 사용 사례는지도에서 위치를 선택하는 것입니다 친구 또는 택시가 당신을 거기에서 만날 수 있도록 이를 구현하기 위해 마커를 배치 할 수 있습니다 화면의 한가운데에 놓고 사용자가 주변에서 놀 수있게하십시오 지도

이것은 맵 조각 내에서 선택된 위치를 나타냅니다 요소 그런 다음 Google지도 onCameraChange 리스너를 사용하십시오 사용자가지도 주변에서 이동했는지 여부를 감지합니다 새 위치는 다음을 통해 액세스 할 수 있습니다

cameraPositiontargetlatitude 그리고 경도 그런 다음이 정보를 수신자에게 보낼 수 있습니다 친구 나 택시 운전사가 되십시오

사용 방법을 구현하는 방법에 대한 자세한 기술 정보는 우리가이 기술 바이트에서 설명한 경우, Maps API 블로그 게시물로 이동하십시오 또한 심층적 인 참조 정보 Google 개발자에게 제공됩니다 이 두 번째 링크를 통해 나는 Hoi Lam입니다 Android Wear는 사용자를 위해 설계되었습니다 이동 중에도 연결 상태를 유지할 수 있습니다

Android Wear의 Google지도 API를 사용하면 개발자는 Google지도에 힘 입어 강력한 도구를 갖추고 있습니다 따라서 실제 사용자를 계속 움직여 보겠습니다

Google Play Android Publisher plugin: Credentials setup

Google Play 개발자 콘솔에서 설정, API 액세스를 차례로 선택합니다 버튼을 클릭하여 새 API 프로젝트를 만듭니다

단추를 클릭하여 API 프로젝트에서 새 서비스 계정을 만듭니다 Google Developers Console 링크를 클릭합니다 새 서비스 계정을 만듭니다 연결된 키 쌍으로 계정이 생성됩니다 브라우저가 개인 키를

p12 파일로 자동 다운로드합니다 서비스 계정의 전자 메일 주소를 복사합니다 Google Play Android 게시자 플러그인이 이미 설치되어있는 Jenkins로 전환합니다 새 자격 증명을 추가하십시오 드롭 다운 목록에서 '개인 키에서 Google 서비스 계정'을 선택하십시오

원하는 프로젝트 이름을 지정할 수 있습니다 P12 키 유형을 선택하십시오 Google Developers Console의 서비스 계정 이메일 주소를 붙여 넣습니다 Google Developers Console에서 다운로드 한 p12 파일을 업로드합니다

Jenkins는 이제 Google Play 게시자 API에 액세스하는 데 필요한 정보를 보유하고 있습니다 Google Play 개발자 콘솔로 다시 전환하면 새로 생성 된 서비스 계정이 표시됩니다 '액세스 권한 부여'버튼을 클릭하십시오 서비스 계정이 수행 할 수있는 작업을 제한하기 위해 일부 사용 권한을 제거하십시오 설치가 완료되었습니다

젠킨스는 이제이 서비스 계정을 사용하여 Google Play에서 Android 앱을 업데이트 할 수 있습니다

DevBytes: Google Fit APIs for Android – Setup and Sensors

안녕하세요 Lisa Wray입니다 오늘은 새 Google Fit API for Android에 대해 말씀 드리겠습니다 Google Fit은 열린 피트니스 에코시스템으로 개발자들에게 한 세트의 API를 제공해서 사용자 승인하에 활동 데이터를 발견, 기록, 저장 및 읽어들여 사용자들이 한 곳에 그들의 모든 데이터를 보관할 수 있게 해 줍니다 그리고 사용자들은 그 데이터를 소유하고 자신이 선택한 앱과 공유하여 데이터를 더욱 유용하게 활용할 수 있습니다 피트니스 앱은 이런 데이터를 어떤 웨어러블이나 센서로부터도 저장되도록 요청할 수 있습니다 그리고 사용자의 피트니스 데이터는 피트니스 장치를 업그레이드 하는 경우에도 유지됩니다 웹 혹은 다른 플랫폼에서 사용할 수 있는 REST API도 있습니다 하지만 오늘은 Fit APIs for Android를 사용할 겁니다 Google Play 서비스의 일부이므로, 지금 당장에도 Android Fit API는 Gingerbread까지의 모든 장치를 지원합니다 이건 API 레벨 9급 이상이죠 예를 들어, 제가 당신에게 제 휴대폰에 만보기 앱을 만들 거라고 했다고 해 보죠 사용자들에게는 실 생활에서 외출시 걸음을 확실히 걷게 움직이도록 일깨워 줄 수 있습니다 또 그들의 모든 데이터를 저장해서 차후 보면서 어떻게 하고 있는지를 앱에서만이 아니라 어쩌면 웹에서도 분석할 수 있도록 해 줄 겁니다 그런데 제가 데이터베이스나 백엔드 서버를 사용하지 않고 한다고 하면 어떨까요? 어떻게? 한 번 살펴 보죠 API는 크게 세 가지 주요 부분으로 나뉩니다 센서API, 기록API 그리고 히스토리API 즉각적 결과를 얻고자 하므로 먼저 센서API로 시작하도록 하겠습니다 센서API는 기초 센서 데이터 스트림에 대한 액세스를 제공합니다 Android 장치에서 사용 가능한 센서가 될 수도 있고 혹은 웨어러블 등의 동반자 장치에서 사용 가능한 센서일 수도 있죠 Fit은 스텝 카운터를 사용해서 걸음을 잽니다 핸드폰 혹은 웨어러블 등 가장 정확하다고 인지하는 것에서 걸음 수를 잽니다 일단, Google 계정이 있어야 합니다 계정이 없다면, 그건 쉽게 해결할 수 있죠 다음은 Google Developer Console 에서 당신의 앱으로 신규 프로젝트를 생성해야 합니다 Fit 웹사이트에는 단계별로 아주 상세한 지도를 받을 수 있습니다 개발 환경에서 있어서는 가장 최신의 Google Play Services 클라이언트 라이브러리를 설치했는지 확인하세요 Android Studio를 사용하신다면 Play Services 라이브러리를 gradle 파일에 종속으로 추가하기만 하면 됩니다 다음은 Google API 클라이언트로 Google Play Services에 접속합니다 Fit이 제공하는 기능을 사용하기 전에 Play Services에 접속해야 합니다 피트니스 API를 선택하고 피트니스 범위의 읽기 및 쓰기를 추가할 겁니다 이건 사용자에게 우리 앱이 그들의 데이터에 액세스할 승인을 요청한다는 걸 의미합니다 여기서 중요한 건 프라이버시입니다 그 승인 없이 우리 앱은 작동하지 않습니다 일단 Google API 클라이언트가 접속했다는 콜백을 받으면 Fit API를 호출할 수 있습니다 센서API는 여기서 필요합니다 SensorRequestBuilder를 사용해서 매 초마다 걸음 수의 변화를 추적하는 요청을 생성합니다 그런 다음 결과를 위해 listener와 Google API 클라이언트를 넣고 앞의 요청을 등록합니다 listener에 대해서는 조금 이따 다시 살펴보죠 이게 listener입니다 등록이 돼 있으므로 listener는 매 초마다 새 데이터를 콜백해 받을 겁니다 그리고 화면을 업데이트 할 수 있습니다 단순한 피트니스 앱을 생성했죠 물론 사용자가 핸드폰을 보고 있지 않을 때는 센서 등록을 꺼야 합니다 거의 똑같은 방식으로 하면 됩니다 developers

googlecom/fit/ android에서 저희게 제공하는 샘플과 문서를 바로 보실 수 있습니다 물론 저희 다음 DevByte를 시청해 주시면서 기록과 히스토리 API로부터 이들 데이터를 유지하고 되찾는 방법을 배우실 수도 있겠죠 시청해 주셔서 감사합니다

New APIs in M for Android for Work (100 Days of Google Dev)

JESSICA : 작년에 Android for Work, 안드로이드를 멋지게 만드는 새로운 방법 직원 및 비즈니스를위한 롤리팝에서는 설탕으로 덮인 노력을했습니다 Android 기기를 관리 대상으로 만들기 배포

이제 IT 관리자는 회사 소유 장치를 안전하게 배포 할 수 있습니다 그들은 또한 자신의 장치 또는 "BYOD"를 가져올 수 있습니다 나는 제시카 야 Android for Work를 어떻게 개선했는지 알려 드리겠습니다 M 릴리스에서는 장치 관리를위한 더 많은 API가 제공되므로, 더 나은, 더 세련된 BYOD 경험, 그리고 완전히 "COSU"라는 장치를 배포하는 새로운 방법 나중에 자세히 설명해 드리지만 앱을 제작하거나 배포하는 경우 비즈니스 용으로이 비디오를보고 싶을 것입니다

여기 당신을위한 간단한 요약 Android for Work에 대해 이미 모르는 사람들 수백만 명의 사람들이 자체 장치를 가져오고 있습니다 직장에 Android Lollipop에서는 안전한 업무용 프로필을 설정할 수 있습니다 IT 관리자가 관리합니다 업무용 프로필에는 별도로 관리합니다

사용자는 회사의 엔터프라이즈 모빌리티를 설치하기 만하면됩니다 관리 앱 및 로그인 만세 또 다른 두문자어 – "EMM" 우리는 위대한 EMM과 제휴했습니다 Android for Work 솔루션을 출시했습니다

우리는 또한 기업을위한 방법을 추가했습니다 기업 소유의 장치를 L 이 모델을 기기 소유자라고합니다 IT 부서가 요구할 때 완벽합니다 전체 장치를 제어 할 수 있습니다

이 모든 것은 직원에게 평소와 같이 꽤 사업 적입니다 일단 그들이 그들의 개인 장치를 등록하면, 워크 벤치 버전의 Play 스토어를 볼 수 있습니다 여기에서 기업용 앱을 다운로드 할 수 있습니다 고용주가 승인 한 개인용 및 업무용 앱을 사용할 수 있습니다 런처에서 나란히

업무용 앱과 알림은 일괄 처리되어 있으므로 즉시 알아볼 수있는 이제 M 릴리스의 새 API로 이동해 보겠습니다 IT 관리자는 모바일 데이터의 양을 관리해야합니다 직장 앱이 사용하고 있습니다 그래서 우리는 작업 프로필에 대한 새로운 네트워크 사용 API를 추가했습니다

IT는 응용 프로그램별로 데이터 사용량을 세분화 할 수도 있습니다 관리자는 엄청난 돈을 쓸 수 있습니다 기업 자원에 대한 액세스를 구성하는 시간 각 장치에 대해 새 API로이 문제를 해결했습니다 IT 승인 앱에서 인증서를 설치할 수 있습니다 이제 사용자는 기업 자격 증명을 한 번만 입력하면됩니다

및 작업 응용 프로그램에 필요한 인증서가 있습니다 리소스에 안전하게 액세스 할 수 있습니다 IT 부서의 업무를보다 쉽게하기 위해 그들은 지금 읽기 전용 Wi-Fi 구성을 추가 할 수 있어야합니다 기업 소유 기기에서 이렇게하면 장치를 확보 할 수 있습니다

번거 로움없이 기업 네트워크에 올라 타라 또는 우발적 인 삭제 또한 지원 요청 량이 줄어 듭니다 일을 결코 사용하지 말아야한다 당신이 알고 사랑하는 장치

그래서 우리는 약간의 개선 작업을했습니다 프로파일을 사용하여 M에서 BYOD 경험을 향상시킬 수 있습니다 첫째, 동일한 기기에 개인용 앱과 업무용 앱이 모두있는 경우, 사용자가 상태 표시 줄에 작업 아이콘을 볼 수 있습니다 그래서 그들은 그들이 일하는 앱에 언제 있는지 알고 있습니다 둘째, 가상 사설망을 설정하는 앱 소비자에게 인기가 높으며 비즈니스에 사용됩니다

IT 부서는 종종 업무용 프로필에 VPN 앱을 배포합니다 기업 서비스에 대한 보안 액세스를 제공합니다 이제 VPN 앱이 통합 설정 제어판에 나타납니다 Google은 사용자 경험을 개선했습니다 따라서 기업 VPN 애플리케이션은 분명합니다

개인적인 것들과 나란히 표시됩니다 마지막으로 연락처 공급자를 개선했습니다 이제 직장 연락처 이름을 시스템 앱에서 사용할 수있게되었습니다 그래서 당신의 상사로부터 신비가 더 이상 전화하지 않습니다 당신은 단지 숫자 대신 사장님의 이름을 보게 될 것입니다

지금까지 우리는 IT 관리자가보다 쉽게 ​​생활 할 수있는 방법을 모색했습니다 사용자에게 더 좋습니다 이제 Android 기기에 흥미로운 새로운 용도에 대해 이야기 해 보겠습니다 비행기에 탑승 해 체크인했는지, 차를 렌트했는지, 또는 주문 된 룸 서비스? 네가 할 수 있다면 좋지 않을까? 터미널에서 안전하게 관리되는 Android 기기에서이를 수행하고, 키오스크 또는 호텔 방에서? 이제 Android for Work를 통해 IT 부서에서 이러한 기기를 관리 할 수 ​​있습니다 우리는 이것을 COSU라고 부릅니다

기업 소유의 단일 사용 장치 NFC 범프와 같은 단일 프로비저닝 단계에서, 이제 IT 부서에서 새 기기를 설정하고 앱에 고정 할 수 있습니다 기기 소유자는 새로운 API를 사용하여 기기에서 앱을 관리 할 수 ​​있습니다 공공 장소에서 이것들을 좋아하십시오 Android 용 Work in M에서 업데이트 한 내용입니다

나는이 일과 관련된 좋은 것들이 당신을 흥분하게 만들길 바래요 우리는 그렇습니다 우리의 일은 당신의 직업을 조금 더 쉽게 만들어주는 것입니다 Android를 직장에서 더욱 맛있게 만들어줍니다 내 이름은 제시카 야

지켜봐 줘서 고마워 나는 그걸로 돌아가는 게 좋을거야 [음악 재생]

Unlocking Location Context with the Android Places API (100 Days of Google Dev)

[음악 재생] 앱을 더 스마트하게 만드시겠습니까? 사용자의 위치 이해하기 도움이 될 수있는 핵심 성분 중 하나입니다 보다 쉽고 직관적 인 사용자 환경을 만들 수 있습니다

나는 제임스 맥길이야, 너에게 보여줄거야 Android 용 Google Places API를 사용하는 방법 지능적으로 앱 동작을 기반으로 사용자의 현재 위치에서 얼마 동안 개발자들은 Android에서 위치 서비스를 사용할 수 있습니다 사용자의 위치를 ​​더 잘 이해할 수 있습니다 그러나 Google 사용자 및 API 두 가지 다른 언어로 말하고 있습니다 위치 API는 위도와 경도를 사용하여 통신합니다

하지만 너와 나는 만날 곳을 이야기 할 때, 우리는 특정 카페 나 레스토랑의 이름을 사용합니다 긴 숫자 Android 용 Google Places API 이 둘 사이의 번역에 필요한 누락 된 키를 제공합니다 언어 및 100 이상의 Google 데이터베이스에서 제공 백만 개 장소 이것을 당신이 이것으로 바꿀 수 있도록

우리가 응용 프로그램을 만들고 있다고 상상해 봅시다 피트니스 팁을 제공하여 사용자의 웰빙을 향상시킬 수 있습니다 그들이 어디에 있든 상관 없습니다 사용자가 앱을 열면 그들에게 가장 유용한 정보를 보여줄 수있다 그 당시와 그 특별한 장소에서

우리는 그들이 어디에 있는지 물어볼 수 있습니다 누가 다른 탭을 필요로하는지 우리의 애플 리케이션을 사용하는 방식으로? Google Places API 사용 현재 장소 가져 오기 방법 우리는 그 프롬프트를 건너 뛰고 자동으로 사용자가있는 장소를 결정하십시오 현재 장소 가져 오기는 장소 목록을 반환합니다 기기의 현재 위치를 기반으로 우도에 따라 정렬됩니다 유사한 기능이 웹을 통해 제공되었지만 몇 시간 동안 Places API를 사용하면 정확도와 정밀도 모두 향상 API를 Android로 가져 오는 과정에서 Google은 API를 깊이 통합함으로써이 목표를 달성했습니다

다양한 센서 사용 가능 Wi-Fi 및 블루투스를 포함한 최신 휴대 기기에서 가능한 장소 목록을 결합하여 앱의 맥락에서이 견적을 향상시킬 수 있습니다 더욱 여기서는 연결된 장소 유형을 사용할 수 있습니다 각 입장은 휘트니스 경기장 만 필터링 할 수 있습니다 공원과 체육관처럼

각 장소와 함께 현재 장소 방법을 얻습니다 우도를 반환합니다 0과 1 사이의 값입니다 장치가 얼마나 가능성이 높은지 나타내는 특정 장소에서 이 값을 앱에서 임계 값으로 사용할 수 있습니다

우리가 정말로 그 위치를 추론 할 수 있도록 말이된다 피트니스 앱의 경우 07 이상일 수 있습니다 체육관이나 공원으로 지정된 장소 매우 강한 신호입니다 사용자에게 그들이 어디에 있는지 묻지 않아도되도록 사용할 수 있습니다

굉장해 Google API 팀은 정확성 향상에 투자합니다 이러한 장소 검색 API 중 따라서 시간이 지남에 따라 첫 번째 장소의 가능성이 증가했다 우리가 더 빨리 거기에 도착할 수 있도록 돕고 싶다면, Place 메서드에서 Report Device를 호출하면됩니다

신호가 강한 경우 사용자가 특정 위치에 있다는 것을 나타냅니다 제출 된 데이터는 익명으로 처리되어 개선됩니다 우리의 세계 모델이지만 검색 할 수는 없다 귀하의 응용 프로그램이나 최종 사용자가 따라서이 데이터에 액세스하는 것이 중요한 경우, 영구 데이터 저장소에도 저장해야합니다 가장 좋은 점은이 기능 무료로 기본으로 제공됩니다

확인 된 개발자의 경우 하루에 최대 150,000 개의 쿼리가 허용됩니다 더 필요해? 걱정 마 이 URL에서 우리와 연락을 취하십시오 또는이 사이트에서 지침을 확인하십시오 개발 프로젝트를 검증하는 방법

Google Places API를 사용하면 의미 론적 위치 정보를 앱에 가져와야합니다 시작하려면 시작하기를 확인하십시오 이 URL의 안내 나는 James McGill이고, 나는 기다릴 수 없다 Android 용 Google Places API로 장소를보고 있습니다

[음악 재생]

ANDROID AUTO CarStream 2.0 – YOUTUBE APP

여보세요 루트 사용자에게 좋은 소식 이미 Android Auto 및 Google Play 서비스의 최신 버전에서 작동합니다 CarStream 앱 거기에서 볼 수 있습니다

이 애플리케이션은 YouTube 동영상 재생 용입니다 휴대 전화의 내부 메모리에있는 파일들 Kiran Kumar에게 감사드립니다 @slash_m_a_x에게 트릭을 알리는 데 감사 드리며, 뿌리가 낀 휴대폰에서 carstream을 여는 방법입니다 apk 다운로드 그것을 전화에 설치하십시오 이제 개발자가 말하는 단계를 따라갈 것입니다

다음 단계는 이미 완료되었을 수 있습니다 나는 그들을 초보자를위한 참조로 포함시키고있다 휴대 전화에서 Android Auto를 시작합니다 (현재 휴대 전화는 아무 것도 연결되어 있지 않음) 왼쪽 상단의 메뉴를 클릭하십시오 (세 개의 막대) '정보'를 클릭하십시오

개발자 모드를 사용하려면 "Android Auto 정보"표시 줄을 10 번 클릭하십시오 개발자 설정의 맨 아래로 가서 "알 수없는 소스"가 선택되어 있는지 확인하십시오 좋은 다시 클릭 한 다음 세 점 점 메뉴로 이동하십시오 "헤드 유닛 서버 시작"을 클릭하십시오 휴대 전화를 컴퓨터에 연결하고 휴대 전화의 개발자 설정에서 "USB 디버깅"을 사용하도록 설정하고 명령 셸을 엽니 다

유형 "adb forward tcp : 5277 tcp : 5277" 'c : users USERNAME AppData Local Android Sdk extras google auto'로 이동합니다 Android Auto SDK는 일반적으로 여기에 있습니다 이제 "desktop-head-unit"명령으로 데스크탑 헤드 유닛을 시작하십시오 명령 셸을 엽니 다 "adb forward tcp : 5277 tcp : 5277" 한 번 끝내다

저자는 "desktop-head-unit"명령으로 데스크탑 헤드 유닛을 시작한다고 말합니다 하지만 내가 본 명령을 복사하면 명령 셸을 엽니 다 우리는 오류를 본다 데스크탑 헤드 유닛을 시작하려면 " desktop-head-unit"명령을 사용하십시오

차안에서 볼 수있는 전형적인 헤드 유닛 디스플레이가 보일 것입니다 Android Auto의 오른쪽에있는 OEM 버튼을 누르면 'Carstream'이 표시됩니다 및 YouTube 동영상 내가 볼 수있는 메뉴에 다른 타사 응용 프로그램이 있습니다 데스크톱 헤드 유닛을 중지하십시오 (오른쪽 상단의 x 표시를 클릭하십시오) 그리고 나는 계단을 계속 나아갈 것이다

Carstream을 클릭하십시오 휴대 전화는 루트 액세스 권한을 부여하라는 메시지를 표시해야합니다 루트 액세스를 수락하십시오 "[루트] 잠금 해제"를 클릭하고 프롬프트가 표시되면 루트 액세스 권한을 부여하십시오 이제 Carstream을 시작하고 모든 허가증을 부여한 다음 "Unlock [Root]"를 클릭하십시오 grant root는 전화를 재부팅합니다 차에가

USB를 통해 연결하고 응용 프로그램이 시작될 때까지 기다립니다 Android Auto의 오른쪽에있는 OEM 버튼을 누르면 'Carstream'이 나열되어 있어야합니다 그렇지 않은 경우 '모든 자동차 앱'을 다시 클릭하십시오 나는 비디오를 연주한다 자동차와 터치 스크린의 컨트롤이 작동합니다

비디오를 보자 선택할 수있는 전체 화면 및 여러 가지 형식 이 앱은 Android Auto Music 메뉴에서도 사용할 수 있습니다 다음으로는 휴대 전화의 내부 메모리에있는 파일을 테스트 해 보겠습니다 오른쪽 상단의 버튼을 누릅니다 여기서 "내부 메모리"옵션을 볼 수 있습니다

이것들은 전화 폴더들입니다 나는 약간의 파일을 연주 할거야 전체 화면과 사운드를 테스트하는 방법 우리는 오직 소리 만 재현 할 수있다 이 앱의 좋은 점과 장점은 휴대 전화의 화면이 꺼져있는 것입니다 한 번 더 비디오 나도 Android Auto 용 다른 맞춤 앱을 사용할 수 있습니다

이전 동영상에서 볼 수 있습니다 AAMirror 우리 전화기의 화면을 볼 수 있습니다 모든 앱에 액세스 할 수 있습니다 OBD2AA 이전 동영상에서 볼 수 있습니다 그게 다야 당신이 그것을 즐긴다면 인사말