전체 글 57

[android] 위치 정보 서비스 GPS/Network LocationTracker (Kotlin)

위치 정보 서비스를 얻어 오도록 구현. 구현방법 - AndroidManifest.xml - LocationTracker.kt import android.Manifest import android.app.Activity import android.content.Context import android.content.pm.PackageManager import android.location.Location import android.location.LocationListener import android.location.LocationManager import android.os.Bundle import android.util.Log import androidx.appcompat.app.AppCompatAc..

안드로이드 2021.11.25

[Android] EdtitText 필터 적용, 이모지 및 특수문자 입력 차단

한글 영어 숫자 만 입력되게 EditText 필터 적용 ( 특수기호 및 이모지입력 차단) etInput.setFilters(arrayOf( InputFilter { src, start, end, dst, dstart, dend -> //val ps = Pattern.compile("^[a-zA-Z0-9ㄱ-ㅎ가-흐]+$") //영문 숫자 한글 //영문 숫자 한글 천지인 middle dot[ᆞ] val ps = Pattern.compile("^[a-zA-Z0-9ㄱ-ㅎ가-흐ㄱ-ㅣ가-힣ᆢᆞ\\u318d\\u119E\\u11A2\\u2022\\u2025a\\u00B7\\uFE55\\s?!]+$") if (!ps.matcher(src).matches()) { return@InputFilter "" } else{ r..

안드로이드 2021.11.23

[Android] data Binding + liveData 적용 주의 ui not updated

주의점: 라이프 사이클 소유자가 설정해야합니다 있습니다 binding로 binding.setLifecycleOwner(this). MainViewModel에 대해서도 설정해야 합니다 binding. 그렇지 않으면 UI가 제대로 작동하지 않습니다. 확실하지 않은 경우 항상 여기에서 공식 문서를 확인하십시오. public class MainFragment extends Fragment { private MainViewModel mainViewModel; private FragmentMainBinding binding; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup containe..

안드로이드 2021.11.11

[Android] startActivityForResult deprecated kotlin

1. 배경 startActivityForeResult가 deprecated 되었다. override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) 의 복잡도가 높아진다는 이유로.. 2. 해결방안. 활동에서 결과 가져오기[2] 제일 아래 하단을 보면, 쉽게 알수 있다. - 자바 ActivityResultLauncher mStartForResult = registerForActivityResult(new StartActivityForResult(), new ActivityResultCallback() { @Override public void onActivityResult(ActivityResult result) { if (re..

안드로이드 2021.11.10

[Android] DPI 별 기준 해상도.

0)기준 해상도 잡는 방법. 디자이너와 협업시엔 xxxhdpi(640dpi,4px,1440 x 2560) 으로 협업하여, 고해상도의 이미지를 사용한다. (안드로이드에서 자동으로 해상도 제일 높은 xxxhdpi를 참고하여 단말기에 맞게 스케일링되어 사용된다.) 1) 해상도별 기준 사이즈 - drawable-mhdpi (160dpi, 1px) - img_goog.png (이미지는 360 x 640 기준으로 제작된 이미지 이여야함) - drawable-hdpi (240dpi, 1.5px) - img_goog.png (이미지는 540 x 960 기준으로 제작된 이미지 이여야함) - drawable-xhdpi (320dpi, 2px) - img_goog.png (이미지는 720 x 1280 기준으로 제작된 이미지..

안드로이드 2021.10.18

[Android] 리싸이클러 뷰 구현하기.

프로젝트 코드 - 자바로 구현 - 코틀린 구현 참고자료: - RecyclerView java [1] RecyclerView로 동적 목록 만들기, https://developer.android.com/guide/topics/ui/layout/recyclerview?hl=ko#kotlin [2] [RecyclerView] 안드로이드 리사이클러뷰 기본 사용법, https://dev-imaec.tistory.com/27 [3] [RecyclerView] 안드로이드 리사이클러뷰 아이템 클릭, https://dev-imaec.tistory.com/28 - RecyclerView FlexBoxLayout 참고자료 [4] [Android] FlexBoxLayout, https://woovictory.github.io/..

안드로이드 2021.10.04

[Android] Android local html 불러오기 (web으로 callback) (4/4)

목적: 안드로이드 웹뷰에서 안드로이드 브릿지를 이용해서 @JavascriptInterface의 메서드를 웹에서 호출할 수 있다. 호출에서 그치지 않고, 다시 웹으로 콜백(callback) 받는 방법을 구현해 본다. 방법: MyHome.html Android(aos) 호출 관련 (bridge는 aos) MyAndroidBridge.java package com.example.mywebview; import android.os.Handler; import android.util.Log; import android.webkit.JavascriptInterface; import android.webkit.WebView; public class MyAndroidBridge { private Handler mHan..

안드로이드 2021.09.30

[Android] Anroid local html 불러오기 (android bridge 구현) (3/4)

목적: 웹(javascript)에서 네이티브를 호출하기 위해서는, 안드로이드에서 @JavascriptInterface 에 해당하는 안드로이드 브릿지(bridge)를 연결 해줘야 한다. 구현방법: MyAndroidBridge.java package com.example.mywebview; import android.util.Log; import android.webkit.JavascriptInterface; public class MyAndroidBridge { @JavascriptInterface public void call_log(String msg){ Log.i(getClass().getName(),"call_log() msg:"+ msg); } } MainActivity.java this.mWeb..

안드로이드 2021.09.29

[Android] Anroid local html 불러오기 (assets/www/MyHome.html 호출) (2/3)

목적: 안드로이드 로컬에서 Html의 javascript를 호출 하는 코드 구현. 방법: 1) 메니페스트에서는 추가 필요 2) WebView에서는 mWebView.getSettings().setJavaScriptEnabled(true); // 자바스크립트 사용 허용!! 3) assets 폴더 추가. 4)html 코드 assets/www/MyHome.html 복사. (html 내용은 이전(1/3) 참고. 3) #특이사항 alert는 아래 상속 코드 구현 필요. this.mWebView.setWebChromeClient(new WebChromeClient(){ @Override //구현 하지 않으면 alert 반응 안함!! consol.log 생활화!! ^_^ public boolean onJsAlert(W..

안드로이드 2021.09.29

[Android] Anroid local html 불러오기 (javaScript onclick 구현) (1/3)

업무의 배경: 안드로이드 로컬에서 javascript function()을 호출하거나, 안드로이드의 @javascritInterface를 호출할 필요가 있다. 그중에서 테스트에 필요한 javascript html을 아래와 같이 구현한다. 구현 방법: Android(aos) 호출 관련 (bridge는 aos) 참고자료: [1] html javascript 구현, https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=tkddlf4209&logNo=220512073357 [2]안드로이드 로컬(assets) html 불러오기, https://dev.eyegood.co.kr/entry/Android-Local-Html-%EC%82%AC%EC%9A..

안드로이드 2021.09.29

[Android] Webview에서 URI_INTENT_SCHEME 오류

배경: 안드로이드 앱에서 웹뷰구현시에 다른앱으로 호출해야 하는 경우가 있다. 문제점: 웹뷰내에서 WebViewClient()를 개발자으 수작업으로 구현하여 상속 받은 경우에는 shouldOverrideUrlLoading()에서 url을 먼저 수신에서 다른 처리를 해줘야 한다. 단 WebViewClient()를 상속 받지 않은경우 기본 브라우저가 동작하여 URI_INTENT_SCHEME 오류가 발생하지 않는다. 구현방법: webViewClient = object : WebViewClient() { override fun shouldOverrideUrlLoading( view: WebView?, request: WebResourceRequest? ): Boolean { // request!!.url.toSt..

안드로이드 2021.09.29

[Android] 웹뷰(webview) ShouldOverrideUrlLoading을 이용하여 응용 프로그램이 제어할 수 있는 기회를 처리 방법(url scheme)

업무의 배경: 웹뷰를 구현할때 단순히, WebView를 이용하여 웹화면을 호출하는 것이 아니라 특정 url를 받을 경우 호스트 응용 프로그램이 제어 할수 있는 기회를 받아야 한다. 업무의 내용: WebView에 URL이로드 되려고 할 때 호스트 응용 프로그램이 제어할 수 있는 기회를 제공한다. shouldOverrideUrlLoading 영역에서 내부적으로 url에 맞는 행동을(내부 화면 호출 후 종료) 하는 경우, 내부처리를 진행하고 true를 반환하여 URL 로드를 중단거나, false을 반환하여 WebView가 평소와 같이 URL로드를 진행하도록 처리한다.[3] ShouldOverrideUrlLoading 코드. @Override public boolean shouldOverrideUrlLoadin..

안드로이드 2021.09.29

[Android] 웹뷰 webview window.open 처리 (웹뷰 고급편)

업무의 배경: 하이브리드 앱 구현시에 휴대폰 인증, 우편번호 찾기 등에서 window.open을 처리할 필요가 있다. window.open 관련 새로운 웹뷰를 생성에 관련하여 추가적인 구현이 필요하다. 하이브리드 앱 구현시에 웹뷰를 모바일 크롬 버전과 동일하게 만들어 달라는 요청을 받으며 때론 압박을 받곤한다. 업무의 혼성을 방지하기 위에서 모바일의 크롬 브라우저와 동일하게 동작하는 웹뷰를 커스텀으로 만들어 줄 필요가 있다. 업무의 목적: * window.open을 처리해 준다. * 하이브리드 앱에서 웹뷰를 커스텀하게 구현하여, 모바일의 크롬 브라우저와 동일하게 동작하게 만든다. * 모바일의 크롬브라우저와 동일하게 웹뷰를 구현함으로써 업무의 혼선을 방지할 수 있다. 해결 방안: window.open 발생..

안드로이드 2021.09.29

[Android] 하이브리드 앱 만들기 (기본편)Hybrid webview default

앱에서 WebView를 이용하여 웹페이지를 보여주는 앱을 만들 필요가 있다. 기본 적으로 http://www.naver.com을 접속하는 샘플 앱을 만들어 본다. 구현 방법: 1. 신규 프로젝트 생성. 2. UI를 이용하여 WebView UI 생성 AndroidManifest.xml 코드 구현 private String TAG = "MainActivity"; private WebView mWebView = null; //웹뷰 private EditText mEtxtUrlAddress = null; //웹뷰 Url private Button mBtnUrlGo= null; //url 이동 @Override protected void onCreate(Bundle savedInstanceState) { MyLo..

안드로이드 2021.09.29