2019.03.02 21:07


[JAVA] Base64 인코딩, 디코딩 (Java8+, java.util.Base64)


Base64는 64문자의 영숫자를 이용하여 멀티 바이트 문자열이나 이진 데이터를 다루기 위한 인코딩 방식.

인코딩에는 java.util.Base64.Encoded#encode() 메소드, 디코딩에는 java.util.Base64.Decode#decode() 메소드를 사용.


API Documentation


Base64 https://docs.oracle.com/javase/8/docs/api/java/util/Base64.html




import java.io.UnsupportedEncodingException; import java.util.Base64; import java.util.Base64.Decoder; import java.util.Base64.Encoder; public class Base64EncodeDecodeSample { public static void main(String[] args) throws UnsupportedEncodingException { String target = "암호화할내용을적어주세요"; byte[] targetBytes = target.getBytes("UTF-8"); // Base64 인코딩 /////////////////////////////////////////////////// Encoder encoder = Base64.getEncoder(); // Encoder#encode(byte[] src) :: 바이트배열로 반환 byte[] encodedBytes = encoder.encode(targetBytes); System.out.println(new String(encodedBytes)); // Encoder#encodeToString(byte[] src) :: 문자열로 반환 String encodedString = encoder.encodeToString(targetBytes); System.out.println(encodedString); // Base64 디코딩 /////////////////////////////////////////////////// Decoder decoder = Base64.getDecoder(); // Decoder#decode(bytes[] src) byte[] decodedBytes1 = decoder.decode(encodedBytes); // Decoder#decode(String src) byte[] decodedBytes2 = decoder.decode(encodedString); // 디코딩한 문자열을 표시 String decodedString = new String(decodedBytes1, "UTF-8"); System.out.println(decodedString); System.out.println(new String(decodedBytes2, "UTF-8")); } }




Posted by injunech
2019.02.21 19:21


SAMSUNG Galaxy Fold 갤럭시폴드 (삼성 폴더블폰)


삼성전자는 20일 미국 샌프란시스코 빌 그레이엄 시빅 센터에서 열린 '삼성 갤럭시 언팩 2019'에서 접었다 펴는 '인피니티 플렉스 디스플레이'를 탑재한 '갤럭시 폴드'를 공개했다. 




'Life > IT' 카테고리의 다른 글

SAMSUNG Galaxy Fold 갤럭시폴드  (0) 2019.02.21
기계식 키보드 스위치 종류  (0) 2018.03.26
Gear S3 Design  (0) 2017.05.29
Gear S3 시계화면 추천  (0) 2016.12.16
[앱추천] 촛불시위 어플  (0) 2016.11.29
기어 S3 프론티어 개봉&리뷰  (0) 2016.11.16


Posted by injunech
2019.02.13 00:48


[Android] calling ui thread from worker thread



Method compress must be called from the worker thread, currently inferred thread is UI thread less... (Ctrl+F1)  

Inspection info:Ensures that a method which expects to be called on a specific thread, is actually called from that thread. For example, calls on methods in widgets should always be made on the UI thread


위와 같이 View와 같은 Class내에서 Bitmap Compress 함수 사용시

Activity의 context 의 runOnUiThread 에서 수행해주도록 아래와 같이 구현한다.


public static Bitmap croppedBitmap;
public static File croppedFile;

File sdCard = Environment.getExternalStorageDirectory();
File dir = new File(sdCard.getAbsolutePath() + "/" + Data.PIC_FOLDERNAME + "/" + Data.PIC_FILENAME);
if (dir.exists() == false) {
dir.mkdir();
}

String path = sdCard.getAbsolutePath() + "/" + Data.PIC_FOLDERNAME + "/" + Data.PIC_FILENAME + "/" + Data.CROP_FILENAME;
croppedFile = new File(path);

((CropActivity) getContext()).runOnUiThread(new Runnable() {
public void run() {
// things need to work on ui thread
Bitmap croppedBitmap = CropImageView.croppedBitmap;
FileOutputStream out;
try {
out = new FileOutputStream(croppedFile);
croppedBitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
} catch (Exception e) {
e.printStackTrace();
}
}
});


아래와 같이  UI Thread 이용하며 CropActivity는 위의 코드가 동작하는 View와 같은 Class가 호출되어 Activity 로 동작하는 Class 이다.

    ((CropActivity) getContext()).runOnUiThread(new Runnable() {
public void run() {
// things need to work on ui thread


}
});







Posted by injunech