본문 바로가기

프로그래밍258

[WebRTC] Real time communication with WebRTC 1 https://codelabs.developers.google.com/codelabs/webrtc-web 1. 소개 WebRTC는 실시간 소통을 위한 오픈 소스 프로젝트로 Web과 Native App에서 사용할 수 있습니다. WebRTC는 다양한 JavaScript API를 가지고 있습니다. getUserMedia(): capture audio and video. // 오디오와 비디오를 캡처합니다. MediaRecorder: record audio and video. // 오디오와 비디오를 기록합니다. RTCPeerConnection: stream audio and video between users. // 유저간 오디오와 비디오를 전송합니다. RTCDataChannel: stream data betwe.. 2022. 6. 5.
[Flutter] 화면 전환 애니메이션 추가(Screen, Dialog) MaterialPageRoute를 상속받아서 처리하는 방식으로 했다. 밑에 buldTransitions를 override해서 slide 애니메이션을 적용한다. (위 아래) my_page_route.dart import 'package:flutter/material.dart'; SlideTransition getSlideTransition(Animation animation, Widget child) { final tween = Tween(begin: const Offset(0.0, 1.0), end: Offset.zero); final offsetAnimation = animation.drive(tween); return SlideTransition( position: offsetAnimation, ch.. 2022. 6. 2.
[Flutter] ScrollToWidget Flutter 개발을 하다보면 특정 위젯의 위치로 Scroll을 하고 싶은 순간이 있다. 이럴 때 다음과 같이 사용을 할 수 있는데 특정 키를 가진 widget을 보이도록 하는 것이다. Scrollable.ensureVisible(key.currentContext!, duration: const Duration(milliseconds: 200), curve: Curves.ease); 예를 들어 스크롤을 해서 내가 원하는 위젯이 중간에 있도록 하고 싶다면, 그 상단에 있는 위젯에 GlobalKey를 주고 해당 키를 이용하여 함수를 호출하면 된다. final scrollKey = GlobalKey(); Container( key: scrollKey, child: null ), 2022. 6. 1.
[Flutter] List<Widget>을 ListView로 사용하는 방법 SmartRefresher(controller: notifier.refreshController, enablePullDown: true, enablePullUp: false, header: const ClassicHeader(), onRefresh: () { notifier.loadConf(context); }, child: ListView( children: notifier.confList, ) ), Android로 치면 RefreshLayout 부분을 개발을 하고 있었는데 주어진 형태는 List의 형태가 들어가길 원하고 있었다. pull to refresh라는 라이브러리를 사용하여 개발을 하고 있었고 child에 Column을 감싸고 children에 List의 형태를 주고 있는데 오류를 계속 뿜어내.. 2022. 5. 16.
[Flutter] AES 암호화 encrypt 패키지를 사용하고 있습니다. AESKey를 넣어주면 16자리 키보다 작으면 늘리고 크면 16자리로 잘라서 사용합니다. (키를 16자리로 맞춰야 함) 그 외 empty값이 들어오면 죽어가지고 예외 처리 해주고 있습니다. import 'package:encrypt/encrypt.dart'; String encrypt(String strAesKey, String strValue) { if(strValue.isEmpty) { return ""; } if(strAesKey.length < 16) { strAesKey = strAesKey + ' ' * (16 - strAesKey.length); } else { strAesKey = strAesKey.substring(0, 16); } final e.. 2022. 5. 13.
[Android] Resize Bitmap 이미지가 들어왔을 때 원하는 width, height로 비율에 맞게 잘라준다. https://stackoverflow.com/questions/4837715/how-to-resize-a-bitmap-in-android 스택오버플로우에서 scale처리하는 함수 토대로 만들었다. private fun getResizedBitmap(bm: Bitmap, destWidth: Int, destHeight: Int): Bitmap? { val width = bm.width val height = bm.height if(width >= height) { // 세로 기준으로 비율을 잡아 확대하고 이미지 좌우를 자른다. val heightRatio = (destHeight / height.toFloat()) val ma.. 2022. 5. 11.
[Flutter] Flavor 처리(Old version) https://medium.com/@dev.juyoung/flutter-flavor%EB%A5%BC-%ED%86%B5%ED%95%9C-%EB%B9%8C%EB%93%9C-%EB%B3%80%ED%98%95-part-3-ba94fa1b4985 아래 내용은 모두 Native에서 직접 Flavor 및 스킴 처리를 하는 방식을 기반으로 합니다. 현재 회사 Meetings 프로젝트에서는 다양한 회사들에 따른 BuildConfig 정보가 분리되어 있고 리소스도 분리가 되어 있는 상태이다. 지금까지 조사한 방식에 대해서 정리한다. 아직 직접 적용하는 과정을 거치지는 않았고 테스트를 위한 사전 조사 과정까지 진행했다. 고려사항으로는 ApplicationId(BundleID), BuildConfig, 리소스(이미지) 분리,.. 2022. 5. 5.
[Flutter] 날씨 정보 받아오기(weather, geolocator) 개발하고 있는 프로젝트에서 날씨 정보가 ... 한 줄이 필요한데 날씨 API에다가 위치 처리를 package를 같이 연동해야 하는 형태입니다. weather 패키지에서 geolocator 패키지를 사용하길 추천하고 있습니다. weather 패키지에서는 위도, 경도 정보를 토대로 정보를 받아오는 방식과 도시 이름을 가지고 받아오는 형태가 있는데 각 사용자의 위치에 따른 처리를 하기 위해서는 geolocator 패키지를 사용하는 방식으로 가야 합니다. 1. 위치 정보 알아오기(geolocator) A Flutter geolocation plugin which provides easy access to platform specific location services (FusedLocationProviderCl.. 2022. 5. 2.
[Android] Network status Manifest에 추가 Deprecated on Android 10(api 29) val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager val activeNetwork: NetworkInfo? = cm.activeNetworkInfo val isConnected: Boolean = activeNetwork?.isConnectedOrConnecting == true Android 11이상을 타겟팅하고 있는 경우 var isNetworkActive = false private val networkCallBack = object : ConnectivityManager.NetworkCallback() { ove.. 2022. 5. 1.
[Flutter] 난독화 # Flutter 난독화 How to obfuscate Flutter apps? https://stackoverflow.com/questions/50542764/how-to-obfuscate-flutter-apps Flutter’s code obfuscation, when supported, works only on a release build. https://docs.flutter.dev/deployment/obfuscate Android/iOS/macOS — Supported. Linux/Windows — Not yet supported. Web — Obfuscation is not supported for web apps, but a web app can be minified, which is si.. 2022. 4. 28.