본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] 잘 쓰지 않지만 유용한 android library 들 ( Spell Checker,Text Recognizer, TimeLogger, MediaProjection, PDF Creation )

by 돼지왕 왕돼지 2018. 3. 14.
반응형

[android] 잘 쓰지 않지만 유용한 android library 들 ( Spell Checker,Text Recognizer, TimeLogger, MediaProjection, PDF Creation )


https://blog.autsoft.hu/discovering-the-android-api-part-1/

adb shell, addSplit, android library, api level, api level 14, api level 16, barcode scanning, Callback, camera, detector, Detector.Processor, disable, dumpToLog, extends, Face Recognition, Falcon, Google Play Service API, gradle, gradle compile, import, MediaProjection, MediaRecorder, MyOcrDetectorProcessor, newSpellCheckerSession, onGetSentenceSuggestions, onGetSuggestions, Page, PageInfo, PDF Creation ), PDF Creation API, PdfDocument, processor, receiveDetections, Sample Code, ScreenShot 찍기, SentenceSuggestionsInfo, setDrawingCacheEnabled, setprop, spell checker, SpellCheckerSession, SpellCheckerSessionListener, text recognition, Text Recognizer, TextRecognizer, textservicemanager, textservicesmanager, TEXT_SERVICES_MANAGER_SERVICE, TimeLogger, TimingLogger, vision api, vision library, Vision Library Intro Page, [android] 잘 쓰지 않지만 유용한 android library 들 ( Spell Checker, 단어 오타 체크, 문장 오타 체크


Spell Checker


-

TextServicesManager 를 통해 접근 가능하며, API Level 14 부터 사용 가능하며, API Level 16 부터는 문장에 대해서도 check 가능하다.



-

TextServicesManager.newSpellCheckerSession

https://developer.android.com/reference/android/view/textservice/TextServicesManager.html#newSpellCheckerSession(android.os.Bundle,%20java.util.Locale,%20android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener,%20boolean)


사용법은 아래와 같이 심플하다.

TextServicesManager tsm = (TextServicesManager) getSystemService(Context.TEXT_SERVICES_MANAGER_SERVICE);  

SpellCheckerSession spellCheckerSession = tsm.newSpellCheckerSession(/*Bundle*/ null, /*Locale*/ null, /*SpellCheckerSessionListener*/ this, /*referToSpellCheckerLanguageSettings*/ true);  



-

SpellCheckerSessionListener

https://developer.android.com/reference/android/view/textservice/SpellCheckerSession.SpellCheckerSessionListener.html


SentenceSuggestionsInfo

https://developer.android.com/reference/android/view/textservice/SentenceSuggestionsInfo.html


SpellCheckerSessionListener 는 아래의 Callback 들을 갖는다.

onGetSuggestions(SentenceSuggestionsInfo[] sentenceSuggestionsInfos) 

onGetSentenceSuggestions(SentenceSuggestionsInfo[] sentenceSuggestionsInfos)





Text Recognizer


-

Vision Library Intro Page

https://developers.google.com/vision/


Google Play Service API 의 Vision API 를 통해서 아래의 Recognition 들이 가능하다.

1. Face recognition

2. Barcode scanning

3. Text recognition



-

먼저 gradle 에 compile 을 통해 import 시켜야 한다.

compile 'com.google.android.gms:play-services-vision:10.0.1’  // version 은 알아서..



-

Detector

https://developers.google.com/android/reference/com/google/android/gms/vision/Detector


Detector.Processor

https://developers.google.com/android/reference/com/google/android/gms/vision/Detector.Processor


TextRecognizer

https://developers.google.com/android/reference/com/google/android/gms/vision/text/TextRecognizer




다음은 Recognizer 를 생성하고, Detector.Processor 를 구현한 Processor 를 설정해준다.

TextRecognizer textRecognizer = new TextRecognizer.Builder(context).build();

MyOcrDetectorProcessor ocrDetectorProcessor = new MyOcrDetectorProcessor();

textRecognizer.setProcessor(ocrDetectorProcessor);


Detector.Processor 는 아래 함수를 구현해준다.

public abstract void receiveDetections (Detections<T> detections)


Recognizer 는 Camera 와 함께 연동된다.


자세한 것은 아래 source code 참조

https://github.com/peekler/GDG/tree/master/AndroidAPIDemos/app/src/main/java/hu/autsoft/androidapidemos







TimeLogger


-

TimingLogger

https://developer.android.com/reference/android/util/TimingLogger.html


TimingLogger 를 사용하기 위해서는 adb shell 을 통해서 enable 되어야 한다.

setprop log.tag.MY_TAG VERBOSE // verbose 에 대해서 enable 되어야만 한다.


혹은 TimingLogger 를 extends 해서 reset 의 disable 관련된 항목을 false 로 바꿔주어도 된다.



-

TimingLogger timings = new TimingLogger(“MY_TAG”, “JobName”);

// do phase1 work

timings.addSplit(“Phase1 ready”);

// do phase2 work

timings.addSplit(“Phase2 ready”);

timings.dumpToLog();





ScreenShot 찍기


-

MediaProjection

https://developer.android.com/reference/android/media/projection/MediaProjection.html


Falcon

https://github.com/jraska/Falcon


Falcon 이라는 3rd-party lib 혹은 API 21 부터는 MediaProjection 을 사용해서 스샷을 찍을 수 있다.


혹은 아래의 코드로 간단히 찍을 수도 있다.

View viewRoot = getWindow().getDecorView().getRootView();  

viewRoot.setDrawingCacheEnabled(true);  

Bitmap screenShotAsBitmap = Bitmap.createBitmap(viewRoot.getDrawingCache());  

viewRoot.setDrawingCacheEnabled(false);  



-

MediaProjection 에 대한 Example 은 아래 링크에서 찾을 수 있다.


http://thdev.tech/androiddev/2016/04/09/Android-MediaProjection-Exmple.html



아래는 MediaRecorder 를 이용해 녹화로 기능을 확장한 예제이다.


http://www.truiton.com/2015/05/capture-record-android-screen-using-mediaprojection-apis/





PDF Creation API


-

PdfDocument

https://developer.android.com/reference/android/graphics/pdf/PdfDocument.html


API 19 부터 API 를 통해 Native contents 를 PDF 로 생성 가능하다.


FileOutputStream out = null;

try {

    out = new FileOutputStream(file);


    PdfDocument document = new PdfDocument();

    Point windowSize = new Point();

    getWindowManager().getDefaultDisplay().getSize(windowSize);

    PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(windowSize.x, windowSize.y, 1).create();


    PdfDocument.Page page = document.startPage(pageInfo);

    View content = getWindow().getDecorView();

    content.draw(page.getCanvas());

    document.finishPage(page);


    // do insert page more..


    document.writeTo(out);

    document.close();


    out.flush();

} catch(Exception e){

    // exception handling.

}




반응형

댓글