본문 바로가기
버킷리스트/앱 만들기

오공완(with 코드팩토리의 플러터 프로그래밍) #12 (영상 통화)

by 또또도전 2024. 8. 5.
반응형

// 이곳에 쓴 내용은 앱 만들기라는 버킷리스트를 달성하기 위해 플러터를 공부하면서 정리하고 있는 내용입니다.

플러터에 대해 아는 것이 거의 없기 때문에 정리하면서 오류가 있을 수 있습니다.

오류를 발견하신 분은 댓글 남겨 주시면 감사하겠습니다.

 

카메라 플러그인, WebRTC(음성통화, 영사통화, P2P 파일 공유), 아고라 API 등 새로운 개념이 들어왔다.

이 앱은 내가 필요한 기능이 없을 거라고 생각했는데, 내비게이션 기능은 사용할 것 같다.

 

  사전 준비

 

1. 아고라 회원가입

- http://www.agora.io

 

Agora.io Real-Time Voice and Video Engagement

The Real-Time Engagement Platform for meaningful human connections.People engage longer when they see, hear, and interact with each other. With Agora, you can embed vivid voice and video in any application, on any device, anywhere.

www.agora.io

-회원가입할 때 홈페이지를 물어보는데, 그냥 티스토리 주소를 넣었다. 이메일 인증하고, 맞춤 설정하면 끝.

-config-features(generate temp RTC token)-적당한 채널명 입력 후 generate

 (토큰값은 24시간만 유용)

-플러터로 돌아와 lib/const폴더 생성 후 agora다트 파일 생성(app id, channel name, temp token 필요)

 

2. 이미지 추가, pubspec 설정

 

3. 네이티브 설정

 - read_phone_state, access_network_state, internet, record_audio, modify_audio_setting, camera, bluetooth_connect

 - build.gradle 파일 변경

 

4. 프로젝트 준비하기

 

  구현하기

 

1. 홈 스크린 위젯

2. 캠 스크린 위젯

 

 

일단, 작동은 되는 듯하다.

 

 

<추가내용>

ResolutionPreset값

-low: 안드로이드와 웹 240p, 아이폰 352*288

-medium: 모두 480p

-high: 모드 720p

-veryHigh: 모두 1080p

-ultraHigh: 안드로이드, 아이폰 2160p, 웹 4096*2160

-max: 최대 해상도

 

스택구조: LIFO(Last In First Out), 마지막에 들어간 자료가 맨 먼저 나가는 방식, 뒤돌리기 기능

 

내비게이션

-push(): 새로운 스크린 추가

-pushReplacement(): 다른 스크린으로 대체

-pushAndRemoveUntil(): 새로운 스크린 추가, 기존 스크린 삭제할지 여부 선택

-pop(): 현재 스크린 삭제, LIFO

-maybePop(): 마지막 남은 스크린이 아닐 때만 pop() 함수를 실행. 마지막 남은 스크린이라면 아무것도 실행하지 않음.

-popUntil(): 모든 스크린을 대상으로 삭제할지 여부 선택

 

permissionStatus

-denied: 권한이 거절된 상태

-granted 권한이 허가된 상태

-restricted: iOS만 해당, 청소년, 자녀 보호 기능

-limited: iOS만 해당, 제한적인 권한

-permanentlyDenied: 권한이 거절된 상태, 사용자가 직접 권한을 허가해줘야 함.

 

FutureBuilder의 ConnectionState

-.none: 비동기 함수 제공하지 않은 상태

-.waiting: 로딩 중

-.active: 스트림이 실행 되고 있는 상태

-.done: 요청이 끝난 상태

 

 

시간은 없고, 따라 해볼 건 많고.. 이해는 나중에 한다고 했지만 마음이 조급해진다.

내일은 더 열심히 해 보자~^^

반응형