안드로이드
-
Android Native 모듈 React Native 에서 사용하기안드로이드 2021. 6. 21. 11:31
최근 개발중인 플랫폼이 React Native 라 Native 모듈 형태로 제공하는 우리 라이브러리를 사용할 수 없다는 얘기를 들었다. 이럴때 공부 해봐야지 언제 할까 라는 생각으로 당장 시작해 보았다. 먼저, 기존에 사용하던 메소드들을 Wrapping 해주는 Wrapper 클래스가 필요하다. 이때, Wrapper 클래스는 ReactContextBaseJavaModule 이라는 클래스를 상속 받아야 하는데 해당 클래스를 상속받기 위해선 gradle 에 아래 코드를 추가해 주어야 한다. implementation 'com.facebook.react:react-native:+'; Wrapper 클래스를 개발할 때 context 값을 주의해야 한다. 기존에 context 값을 인자로 받던 메소드가 있었다면 여..
-
Android 전화 수신 차단하기안드로이드 2020. 12. 7. 15:35
이번 포스트에서는 Android 에서 전화 수신을 차단시키는 방법에 대해 알아보겠습니다. 우리는 때때로 전화를 받기 싫을때도 있고 받기 싫은 특정 번호가 있을 수 있습니다. 이 방법은 원천 차단이 아닌 전화 수신 중 자동적으로 거절버튼을 누르는 방식이라는 점을 알아두시기 바랍니다. 먼저 리시버 코드를 작성합니다. CallReceiver 라는 클래스를 만들고 BroadcastReceiver 를 상속받도록 합니다. public class CallReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { try { String state = intent.getStringExtra(Tel..
-
안드로이드 서비스 앱 삭제 및 강제종료 방지하기안드로이드 2020. 8. 24. 16:04
일단 기본적으로 꽤 위험할 수 있는 내용이라고 생각한다. 그럼에도 불구하고 부득이하게 이런 기술을 사용해야 하는 경우도 있으므로 내가 구현한 방법에 대해 정리해보려고 한다. 전체적인 루틴은 아래와 같다. 디바이스 관리자 권한 받음 -> UsageStatsManager를 이용한 현재 최상단의 화면 정보 가져옴 -> 디바이스 관리자 권한 제거 액티비티가 올라왔을 때 화면 전환 * 디바이스 관리자 권한을 얻으면? - 해당 디바이스를 제어할 수 있는 권한을 얻음 - 디바이스 관리자 권한을 받으면 강제종료 버튼이 비활성화 됨 * UsageStatsManager란? - 디바이스의 사용 기록 및 현재 상태에 대한 정보를 가지고 있는 Class - 이를 이용해 현재 최상단에 있는 액티비티의 클래스명을 가져올 수 있음 ..
-
Room DB 사용하기안드로이드 2020. 6. 30. 10:32
Room DB는 SQLite를 이용해 앱 내부 데이터베이스를 구축하고 사용하는 데 도움을 주는 라이브러리이다. Android 에선 SQLite 라는 DBMS로 데이터를 저장할 수 있다. 물론 Room DB 가 아닌 자체 API만으로도 충분히 데이터베이스에 데이터 저장과 접근이 가능하다. 그럼 왜 Room DB를 쓰는 것일까? 우리가 DB에 저장해야 할 데이터 양이 많다고 가정했을 때, 이 데이터들이 서버가 아닌 로컬에 유지된다면 우리는 서버에 직접 연결해 데이터를 가져오는 것보다 훨씬 빠르게 데이터에 접근할 수 있고, 오프라인 상태일때도 여전히 해당 데이터에 접근이 가능하게 된다. ( 출처 : https://developer.android.com/training/data-storage/room?hl=ko..
-
Android Exoplayer 제스쳐 기능 추가안드로이드 2020. 5. 8. 16:28
네이버 TV 앱을 보면 영상 재생 시 화면 중앙을 기준으로 왼쪽 화면에서 위아래로 드래그 하면 밝기가 조절되고 오른쪽 화면에서 위아래로 드래그 하면 미디어 볼륨이 조절되는 기능이 있다. 꼭 필요한 기능은 아니지만 있으면 편리한 기능이라고 생각해 이를 구현해보기로 하였다. 가장 먼저 터치 이벤트를 받아야 한다. 이벤트를 받아야 볼륨을 조절하든 할테니까. playerView.setOnTouchListener { _, motionEvent -> when (motionEvent.actionMasked) { MotionEvent.ACTION_DOWN -> { true } MotionEvent.ACTION_UP -> { true } MotionEvent.ACTION_MOVE -> { true } else -> su..
-
[Kotlin] 함수형 프로그래밍안드로이드 2020. 4. 1. 16:56
오늘부터 코틀린 공부를 시작했다 코틀린에선 함수형 프로그래밍 기법을 자주 사용한다고 하니 관련된 내용을 정리해보기로 했다. 1. 함수형 프로그래밍이란? 순수함수를 이용해 코드를 작성하는 프로그래밍 기법을 말한다. 람다식과 고차 함수를 사용한다. 2. 용어 정리 순수함수 : 이름에서 힌트를 얻을 수 있듯이 함수 외부의 값을 참조하지 않고 변경하지도 않는 동시에 같은 인자에 대해 항상 같은 값을 반환해주는 함수 fun multi(x: Int, y: Int): Int { return x*y } 람다식 : 이름이 없는 함수 형태의 식 { x, y -> x * y } 다른 함수의 인자로 넘기거나 함수의 반환값으로 사용됨 고차함수 : 다른 함수를 인자로 사용하거나 함수를 반환값으로 사용하는 함수 fun addAnd..
-
Android Exoplayer 플레이리스트안드로이드 2020. 3. 17. 09:08
이번엔 Exoplayer에서 플레이리스트를 설정하는 법에 대해 알아보자 플레이리스트 설정 전에 일단 영상 하나를 재생하는 프로세스부터 알고 해야 될 것 같다. 영상 재생은 아래와 같은 단계를 거친다. // playerView View 맵핑 playerView = findViewById(R.id.playerView); // 영상 Uri Uri uri = Uri.parse("/storage/emulated/0/test.mp4"); DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(context, Util.getUserAgent(context, "PlayerSample")); MediaSource mediaSource = new Progr..
-
Android Exoplayer UI 커스터마이징안드로이드 2020. 3. 16. 16:04
구글에서 오픈소스로 제공하는 Exoplayer 라는 미디어 플레이어가 있다. 이번에 내 마음대로 플레이어를 커스터마이징 하며 Exoplayer에 대해 알아가 보도록 하겠다. Exoplayer를 사용하는 이유는 여러가지겠지만, 가장 큰 이유는 쉽게 커스터마이징이 가능하기 때문이라고 생각한다. 시중에 있는 여러 다른 플레이어들은 색이나 재생 버튼 등을 마음대로 하기 쉽지 않지만, 이 Exoplayer는 개발자나 기획자 마음대로 바꿀 수 있어 많이 사용하는 것 같다. 먼저 Exoplayer를 프로젝트에 추가하려면 아래의 2줄을 gradle에 추가하면 된다. implementation 'com.google.android.exoplayer:exoplayer-core:2.11.3' implementation 'co..