Android
-
Android Fused LocationAndroid/LBS 2019. 7. 26. 17:56
유저 디바이스의 위치를 획득하기 위해서는 API는 표준 라이브러리에 있는 LocationManager를 이용하여 LocationProvider 지정을 통해 getLastKnownLocation 함수를 이용해서 위치 획득이 가능하다. 하지만 LocationProvider를 지정하는 부분이 실제 작업 시 여러 가지를 고려하다 보니 개발자 코드 양이 비대해진다. 이런 작업을 쉽게 하기 위해 Google Play Service에서 제공하는 Fused Location을 사용하면 된다. Fused Location의 목적은 Reduce Power ( 저전력 ) Improve accuracy ( 정확도 향상 ) Simplify the APIs ( API 간소화 ) Expose cool new features ( 새로운..
-
Android Location ManagerAndroid/LBS 2019. 7. 26. 16:06
LBS는 Location Based Service의 약자다 기본적인 모바일 디바이스에 위치를 흭득 할때에는 위, 경도를 사용해서 계산한다 이러한 LBS 프로그래밍을 위한 라이브러리는 아래와 같다 1. 표준 Library "Location Manager" ( 1 -> 28 ) System Service가 제공한다. 2. Fused Location API 3. Map 딱 무엇을 선택해야 한다는 표준 라이브러리는 없다. 어떤 벤더의 지도를 사용할껀지 개발자가 선택 하여야 한다. 위 경도 계산은 기본적으로 위/경도는 도/분/초/로 표시되는데 일반적인 시스템에서는 실수로 사용한다. * 위도 : 90 ~ 0 ~ -90 ( 0 : 적도 ) * 경도 : 180 ~ 0 ~ -180 ( 0 : 그리니치 천문대 ) 소숫점 ..
-
Android NotificationAndroid/Component 2019. 7. 25. 17:57
Notification은 앱의 각종 상황을 사용자에게 알릴 목적으로 이용된다. support 라이브러리에서 NotificationCompat 클래스를 이용하여 하위 호환성을 확보한다 NotificationManager : 알림을 시스템에 발생시키는 SystemService Notification : 알림 구성 정보를 가지는 객체 NotificationCompat.Builder : 알림을 다양한 정보로 생성 NotificationChannel : 알림의 관리 단위 ( Android Oreo에서 추가 ) NotificationManager 객체 얻는 방법은 간단하다 val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as Noti..
-
Android JobSchdulerAndroid/Component 2019. 7. 25. 17:04
JobSchduler는 Job(특정 업무)를 시스템에 등록시켜 실행시키는 방법이다. Network, Battery 조건 등을 등록하고 이 조건에 맞았을 때 Background 업무를 실행시키기 위한 목적으로 사용한다 해당 기능은 API Level 21 부터 제공이 되었고, background 실행 제한이 강화되기 시작하면서 필요성 증가되었다. 두 가지의 클래스를 사용하는데 아래와 같다. JobInfo : Job 이 실행될 조건 및 조건이 맞을 떄 실행시킨 JobService 정보 JobScheduler : JobInfo를 시스템에 등록시키는 역할 1. JobSchedulerService 클래스 생성하기 @RequiresApi(Build.VERSION_CODES.LOLLIPOP) class MyJobSch..
-
Android Background LimitsAndroid/Component 2019. 7. 25. 15:25
안드로이드 8.0에서 부터 Background에 대해서 제약을 가하기 시작하였다. BroadcastReceiver 제약 Service 제약 이 두가지에 대하여 어떤 제약이 가해졌는지에 대해서 알아보도록 하자 BroadcastReceiver 제약 - 내부 app의 receiver를 암시적 intent에 의해 실행시키는 것을 금지 - 명시적 intent에 의한 실행은 이전과 동일하게 잘 수행된다. - receiver가 특정 component의 코드에서 intent filter로 등록시키고 암시적 intent에 의해 실행되는건 잘 된다. - manifest 파일에 static하게 등록 된 receiver를 암시적을 실행시키는 것이 금지. - 물론 외부 앱의 receiver인 경우 암시적 intent 실행은 잘..
-
Android Component - ServiceAndroid/Component 2019. 7. 24. 23:59
Service는 장시간 background 작업 이라고 정의 할 수 있다. 백그라운드에서 실행되면서 ContentProvider를 업데이트 시키거나 Intent를 발행 혹은 알림을 만들어 내는 역할을 한다. 눈에 보이는 인터페이스 없이 다른 서비스, 액티비티 그리고 브로드케이스트 리시버 수신자를 포함한 다른 어플리케이션 컴포넌트로 부터 시작 중지를 한다. 시작된 서비스는 비활성 액티비티 나 눈에 보이지 않는 액티비티 보다 높은 우선 순위를 받아 런타임의 리소스 관리에 의해 종료될 가능성을 낮춘다. 컴포넌트의 우선순위는 아래의 순서와 같다. (1) 활성 상태 액티비티 (2) pause 상태 액티비티 (3) 움직이고 있는 서비스 (4) 비활성 상태 액티비티 (5) 시작 했지만 아무짓도 안하는 서비스 규칙적으..
-
Android Component - Broadcast ServiceAndroid/Component 2019. 7. 24. 23:30
Boadcast Reveicer는 한마디로 Event Model로 실행되는 Component라고 정의할 수 있다. 또한 Android Component중에서 Intent 매커니즘만 잘 이해하면 가장 쉽다고 말할 수 있다! 예를 들면 배터리가 부족하다던가! 리시버 사용 방법은 간단하다 1. BroadcastReceiver를 상속받은 클래스 생성 class MyBroadcastReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { Toast.makeText(context, "I am BroadcastReceiver", Toast.LENGTH_SHORT).show() } } 제목 그대로 Broadcas..
-
Android Architecture Components #1 - DataBindingAndroid/AAC 2019. 7. 24. 00:07
우리가 흔히 개발하는 View 코드를 아래에서 살펴보도록 하자 class MainActivity : AppCompatActivity() { private lateinit var textName: TextView private lateinit var textAge: TextView private lateinit var textEmail: TextView private lateinit var textPhone: TextView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) textName = main_view_name textAg..