RichUtils 2.0.0 :: Dreaming Bird:: Release Note English (2017. 11. 23)

한글로 된 릴리즈 노트를 원하신다면, 여기에서 보세요.

Introduction

from May 30, 2017 to Nov 26, 2017, RichUtils meet D+180 from first release. Also I celebrate 22th birthday on Nov 26, 2017. Nov 26, 2017 is special day for me.

To celebrate that day, I decided to release RichUtils 2.0.0 to want to be a good library for Android developers.

Release name of 2.0.0 is Dreaming Bird, the song name 夢魅鳥’s english name that wrote by ‘azuma’ in May 2012 using VOCALOID 結月ゆかり. (Yuzuki Yukari) I mean, it’s not much to reveal, but I’ve chosen to find something missing.

After release 2.0.0, i receive any idea to improve this library by Issue Tracker or Pull Request. If you give me code written in java, i will convert them and insert library with original credit. Many ideas please!

Release Note

Release Date: Nov 23, 2017 14:25 (UST), 23:25(KST)

Release Name: Dreaming Bird (夢魅鳥, Yumemidori)

Release Note

  • Adding ‘Application Context’: It make using global Context to some methods instead of explicit Context by declare RichUtilsGlobal.initializeApplication(this) in Application class. Note, this feature is dedicated to Java. Most methods need Context declare as Extension Methods of Context in Kotlin. You don’t need to declare Context to use methods in Kotlin.
  • Adding ‘Crash Handler’: Integrate RichCrashCollector library can collect crash log as Markdown
  • Make Code Index Demo Application: Remove old sample, sampleJava, i write new application. In new application, it provides code snippets written in Kotlin, Java.
  • Inquiry Network State: inquiry Network State by isConnected(), isWifiConnected()
  • Inquiry Foreground State: check application is foreground state.
  • Generate ViewId: generate new View ID
  • Inquiry Width, Height, Mimetype of Image: inquiry Width, Height, Mimetype of Image without load bitmap to memory. it support String (file path) and Drawable Resources.
  • Intent to Browse, call: browse, makeCall, dialCall
  • Change JVMName of Assets.asList : asAssetsList
  • SAM Conversion: adding compatible sam conversion methods in JSONArray.forObjectList
  • Oreo Responding: fix force crash using RPickMedia, RPermission in Oreo
  • RPickMedia.RESULT_FAILED: it return FAILED when user action back event
  • CheckPermissionGranted: check given StringArray is granted
  • Generate Notification Channel: generate Notification Chanel which feature from Oreo
  • Remove nullable object: remove useless nullable property
  • Inquiry Width, Height of Video: inquiry Width, Height of Video. it support String (file path)
  • File Size: convert size to human-readable string using given file
  • update README
  • update KDoc

RichUtils 2.0.0 :: Dreaming Bird:: Release Note 한글 (2017. 11. 23)

for ‘Release Note in English’, link is here.

도입

2017년 5월 30일부터 시작하여, 2017년 11월 26일이 되면 RichUtils 는 180일을 맞이하게 됩니다. 그리고 이 블로그의 저자도 11월 26일이 되면 22번째 생일을 맞이해 어느 면으로는 많은 의미를 포함하고 있는 날입니다.

그런 날을 기념으로 RichUtils 의 2.0.0을 배포하여 안드로이드 개발자를 위한 좋은 라이브러리로 남으려 합니다.

2.0.0 의 릴리즈 네임은 Dreaming BirdVOCALOID 結月ゆかり를 사용해 azuma 가 2012년 5월에 작곡한 곡의 이름인 ‘夢魅鳥’의 영문 이름입니다. 뜻은 그다지 공개할 만큼은 아니지만, 지금은 없어진 어떤 것을 다시 찾고 싶다는 의미에서 선택하였습니다.

2.0.0 이후에도 이슈 트래커Pull Request로 라이브러리를 좀 더 발전시키기 위한 아이디어를 받습니다! Java 로 제공해주실 경우에도 직접 의도에 맞게 변환하여 편입시키니, 많은 아이디어 부탁드립니다!

내역

배포일: 2017년 11월 23일 14:25 (UST), 23:25(KST)

릴리즈 네임: Dreaming Bird (夢魅鳥, Yumemidori)

업데이트 내역

  • Application Context 기능 추가: RichUtilsGlobal.initializeApplication(this)를  Application내부에 사용해서 몇몇 메서드에 Context를 명시적으로 선언하지 않아도 작동합니다. 이 기능은 Java 전용으로, Kotlin 에서는 대부분의 Context 를 필요로 하는 메서드가 Context의 확장 메서드로서 선언되었습니다.
  • CrashHandler 기능 추가: 강제 종료 로그를 Markdown 문서로서 수집하는 RichCrashCollector 라이브러리가 통합되었습니다.
  • Sample / Code Index 앱 구현: 이전 sample, samplejava 를 제거하고 새로운 데모 앱을 작성했습니다. 해당 앱에서 대부분의 기능에 대한 Code Snippet 와 목록이 제공됩니다.
  • 네트워크 상태 조회: isConnected(), isWifiConnected() 등 메서드로 네트워크 상태를 조회할 수 있습니다.
  • Foreground 상태 조회: 앱이 Foreground 에 있는지 체크합니다. :: isProcessRunning()
  • ViewId 생성: 새로운 ViewId를 생성합니다. :: generateViewId()
  • 이미지 가로, 세로, mimetype 조회: 비트맵을 메모리에 불러오지 않고 가로, 세로, mimetype를 조회할 수 있습니다. String 및 Drawable Resources 를 지원합니다. :: getImageWidth()
  • 인터넷, 전화 인텐트: browse, makeCall, dialCall
  • Assets.asList 의 JvmName 변경: asAssetsList
  • SAM Conversion: JSONArray.forObjectList 에 SAM Conversion 호환 메서드가 추가되었습니다.
  • Oreo 대응: Oreo에서 RPickMedia, RPermission 사용시 종료되던 문제를 해결했습니다.
  • RPickMedia.RESULT_FAILED: 선택 창에서 뒤로 가면 FAILED 를 반환합니다.
  • CheckPermissionGranted: 주어진 권한 String[] 이 전부 허용되었는지 체크합니다.
  • Notification Channel 생성: Oreo부터 추가된 Notification Channel 를 생성합니다.
  • Nullable object 제거: 필요없는 nullable 속성을 제거했습니다.
  • 영상 가로, 세로 조회: 영상의 가로, 세로를 조회할 수 있습니다. String만 지원합니다.
  • 파일 사이즈: 주어진 파일의 크기를 사람이 알아볼 수 있게 변경합니다.
  • README 업데이트
  • KDoc 업데이트

RichUtils 1.8.0 Update (2017. 10. 23.)

RichUtils 1.8.0 Update

  • Remove singleton of RPermission
  • Add ‘textPrimaryStyle’ / ‘textSecondaryStyle’ in CombinedTextView
  • Implement F1 ~ F20 generic type listener
  • Add equivalent attrs attribute in CombinedButton / CheckBox / RadioButton
  • Implement RSystemService to get ‘getSystemService’ manager within built-in variables. (Example #1)
  • Implement convertChildrenList in RView
  • Implement saveBitmapToFile(File, Bitmap) in RFile
  • Implement HTMLTextView
  • Bumped SDK Version into 26 (Android Oreo)
  • Implement RThumbnail: get Thumbnail image of given File / Uri
  • Refactor LOC

I get a recommendation for new ideas to improve this utils.

RichUtils 1.8.0 업데이트

  • RPermission에서의 싱글톤 제거
  • CombinedTextView 에 textPrimaryStyle, textSecondaryStyle를 추가하였습니다.
  • F1 ~ F20 으로 비롯되는 제너릭 타입형 인터페이스를 구현하였습니다.
  • CombinedButton / CheckBox / RadioButton 에 적절한 attrs를 추가하였습니다.
  • GetSystemService 로 얻어오는 모든 객체 변수를 내장한 RSystemService를 구현했습니다 (예제 #1)
  • ViewGroup 내부 자식 뷰의 리스트를 반환하는 convertChildrenList 가 RView에 추가되었습니다.
  • SaveBitmapToFile 메서드에 file 객체를 넘길 수 있도록 변경하였습니다.
  • HTMLTextView 란 이름의 커스텀 텍스트뷰 위젯을 추가하였습니다.
  • TargetSDKVersion 가 26으로 변경되었습니다.
  • 주어진 파일 / 경로의 섬네일 이미지를 가져오는 RThumbnail 를 구현하였습니다.
  • LOC 최적화

 

유틸을 발전시키기 위한 다양한 아이디어를 추천받고 있습니다.

언제든지 이슈트래커를 이용해 새로운 아이디어를 주시면 바로 구현하겠습니다.

Example #1

Log.d("goat", userManager.isUserAGoat.toString() + "") // Kotlin
Log.d("goat", RichUtils.getUserManager(this).isUserAGoat() + ""); // Java