Android

    Android # http 권한 허용하기

    Android에서 http 권한 허용하기 Spring boot 프로젝트를 AWS 서버에 올리고, AWS주소로 REST API를 호출하려고 했다. 외부 디바이스를 사용하기 전에는, 주소 접근에 가능했지만 외부 디바이스를 사용해서 REST API를 호출했을 떄는 에러가 발생했다. 에러명은 Cleartext HTTP traffic to ~~ not permitted 이다. 문제의 원인은 안드로이드에서는 기본적으로 Http 접근을 허용하지 않는다는 것 이다. Https로 접근하면 문제가 없지만, Https를 지원하지 않는 다면 예외처리를 해줘야한다. 안드로이드 Pie(API28)부터는 cleartext HTTP를 비활성화한다. 따라서 API28 이후에서 Http에 접근하려면 cleartext HTTP를 활성화 ..

    Android # SharedPreferences

    SharedPreference app의 간단한 설정 정보들을 저장하기 위해서 안드로이드에서는 SharedPreferences class를 제공한다. 파일시스템 기반으로서 XML 형태로 저장이 되며, SQLite를 사용하기에 부담스러운 것들을 저장하기에는 유용하다. 저장되는 값은 name,value 구조의 쌍으로 저장한다. 설정 파일은 data/data/패키지 이름/shared_prefs/ 의 경로에 고정되어 저장된다. 일반적으로는 실행하는 앱에서만 사용가능하지만, 파일 모드를 변경하여 다른 앱에서도 사용은 가능하긴 하다. 1. 설정 값 저장하기 12345SharedPreferences prefs = getSharedPreferences( (Stirng)Preferences_name , MODE_PRIVA..

    Android # Notification

    Notification 알람(Notification)은 화면 상단에 정보를 표시하여 사용자가 알 수 있도록 한다. 이 알림 기능은 주로 다른 사람에게서 메시지를 받았을 때나, 단말의 상태, 특정 앱의 상태변화 등의 목적으로 사용된다. 알림은 NotificationManager 시스템 서비스를 이용해 화면 상단에 띄울 수 있다. 알림을 띄우려면 Notification 객체를 만들어야 하는데, 이 객체는 NotificationCompat.Builder 객체를 이용해서 만든다. Example Notification을 발생시키는 버튼을 만들고, 버튼을 터치할 때마다 터치 횟수를 증가시키는 변수(count)를 만든다. 최종적으로 Notification에 의해서 전달되는 값은 마지막에 전달한 값이 되는 걸 확인하기..

    Android # 진동과 소리 울리기

    진동과 소리 울리기 진동(Vibrate) 진동은 얼마동안 울리도록 할 것인지 지정할 수 있으며, Vibrator라는 시스템 서비스 객체를 사용한다. Vibrator에는 vibrate라는 이름의 메서ㅓ드가 있어 진동이 울리는 패턴이나 시간을 지정할 수 있다. vibrate() 메서드의 파라미터로 long자료형의 값이 전달된다. 이 값은 시간을 의미하며 진동을 얼마나 지속시킬 것인지 지정한다. 그런데, 이 long 자료형의 값을 전달하는 vibrate()메서드가 버전에 따라 달라지게 되었다. 다음 포스팅을 참고. https://philipbox.tistory.com/69 소리 Ringtone 객체의 play() 메서드를 호출하면 소리가 울린다. API에서 제공하는 소리가 아닌, 다른 음원 파일을 재생시킬 수..

    Android # 진동(Vibrate) method 버전확인 후 적용시키기

    진동(Vibrate) method 버전확인 후 적용시키기 vibrate() 메서드는 안드로이드 버전 26부터 VibrationEffect를 파라미터로 전달하는 메서드로 변경되었다. 따라서, 이 변경된 내용을 반영하기 위해서는 Build.VERSION.SDK_INT 상수를 이용해 현재 단말의 버전을 체크하는 과정이 필요하다.

    Android # baseline(view)

    baseline 뷰 속성의 baseline이 적용되는 것을 확인해 볼 것이다. [baseline.xml] 1234567891011121314151617181920212223242526272829303132 Colored by Color Scriptercs 이렇게 속성을 수정하면 각각의 뷰에 들어 있는 텍스트의 아래쪽에 바닥면이 똑같이 맞춰진다. 이것은 baselineAligned의 디폴트 값이 true이기 때문이다. 다음은 baselineAligned의 값을 false로 바꿔본 결과이다. baselineAligned의 속성은 LinearLayout에서 지정한다. (아래 코드 7번줄) [baseline.xml] 12345678910111213141516171819 ... Colored by Color Sc..

    Android # gravity 속성들

    Gravity 속성 정렬 속성 값 설 명 top 대상 객체를 위쪽 끝에 배치하기 bottom 대상 객체를 아래쪽 끝에 배치하기 left 대상 객체를 왼쪽 끝에 배치하기 right 대상 객체를 오른쪽 끝에 배치하기 center_vertical 대상 객체를 수직 방향의 중앙에 배치하기 center_horizontal 대상 객체를 수평 방향의 중앙에 배치하기 fill_vertical 대상 객체를 수직 방향으로 여유 공간만큼 확대하여 채우기 fill_horizontal 대상 객체를 수평 방향으로 여유 공간만큼 확대하여 채우기 center 대상 객체를 수직 방향과 수평 방향의 중앙에 배치하기 fill 대상 객체를 수직 방향과 수평 방향으로 여유 공간만큼 확대하여 채우기 clip_vertical 대상 객체의 상하 ..

    Android # layout_gravity 와 gravity

    layout_gravity와 gravity 정렬 속성 설 명 layout_gravity 부모 컨테이너의 여유 공간에 뷰가 모두 채워지지 않아 여유 공간이 생겼을 때 여유 공간 안에서 뷰를 정렬함 gravity 뷰 안에 표시하는 내용물을 정렬함(텍스트 뷰의 경우 내용물은 글자, 이미지뷰의 경우 내용물은 이미지) [gravity.xml] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 Colored by Color Scripter cs 위의 버튼 3개는 layout_gravi..