본문 바로가기

728x90
반응형
SMALL

Android

(80)
[안드로이드/Java] AsyncTask 화면 넘김시 중단하는 법, http 요청 중단하는 법 http요청을 AsyncTask를 이용해 구현했는데요, 프래그먼트가 넘어갈때 요청을 중단하고 싶어서 cancle(true)를 사용했습니다. AsyncTask의 변수를 멤버변수로 두고, onStop()에서 cancle을 하여 진행중인 AsyncTask를 종료하려고 하였죠. @Override public void onStop() { super.onStop(); if(networkTask!=null) networkTask.cancel(true); } 그런데 한번에 해결될 일은 없죠 ㅎㅎㅎ 이것만으로는 중단이 안되더군요. 이유는 canel을 하면 onPostExecute로 넘어가지 않는것 뿐이고, doInBackGround는 전부 동작한다는 것. 또한 http요청은 계속 진행중이라는 것. 두가지 문제를 해결해야..
[안드로이드] Open API 사용하기 ― 공공 데이터 XML 파싱하기 안드로이드 앱개발을 하면서 공공 데이터를 사용해아할 때가 있는데요, 날씨나 교통정보등등.. 공공데이터 포털 국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase www.data.go.kr 위의 링크에 들어가면 공공데이터 api를 사용할 수 있습니다. 현재 인기검색어는 코로나네요 ^^;; Api 활용 신청 저는 미세먼지에 대한 정보를 불러오고 싶으므로 미세먼지를 검색하여 api 신청하겠습니다. 미세먼지를 검색하고 밑으로 내려 한국환경공단_미세먼지 경보 발령 현황을 클릭해보겠습니다. 활용 신청 누르기 전에 밑의 참고 문서도 꼭 받아줍니다. 사용법이 나와있으니까요~ 간단..
InputStream 2번 이상 읽기 InputStream에 저장된 byte를 한번은 String으로, 한번은 image로 읽고 싶어 mark(), reset()을 활용했습니다. //InputStream에서 nSize만큼 읽어 bis buffer에 저장한다. BufferedInputStream bis = new BufferedInputStream(yourInputStream, nSize); bis.mark(nSize); //위치를 mark한다. BufferedReader reader = new BufferedReader(new InputStreamReader(bis, "UTF-8")); String str = reader.readLine(); // String으로 읽는다. bis.reset(); //위치를 mark한곳으로 다시 이동 imgB..
[안드로이드]http URL 주소로 이미지 띄우기 특정 image를 다운로드 받거나 웹에 띄울 수 있는 url이 있다면, 그 url로 다운로드 받는 이미지를 URLConnection, ImageView를 통해 띄울 수 있습니다. 예를 들어, 이미지를 구글에서 검색하여 이미지 주소를 복사하거나 특정 이미지를 다운로드 할 수 있는 http url 모두 됩니다. 코드 private ImageView image ... image = findViewById(R.id.url_image); ... String image_url = "img의_url_입력"; loadImageTask imageTask = new loadImageTask(image); imageTask.execute(); 코드는 AsyncTask를 이용하여 구현하였습니다. public class loa..
[안드로이드 java] byte 배열 타입별로 변환하기 ― 수신 프로토콜 처리하기 TCP/IP통신 또는 Bluetooth 소켓 통신을 통해 약속한 형식에 맞는 프로토콜을 수신 받는데요. 보통 byte형 배열로 수신 받습니다. 수신받은 데이터를 형식에 맞게 형변환하여 사용하여야 하는데요. 정리해 보겠습니다. byte[] 저장 코드 ByteBuffer tmpbuf = ByteBuffer.wrap(BytesArray); tmpbuf.rewind(); byte b1 = tmpbuf.get(); byte b2 = tmpbuf.get(); 받은 byte array를 ByteBuffer를 사용하여 저장후, position을 rewind();를 통해 옮깁니다. 그 후 get() 메서드를 사용하면 byte별로 하나하나 저장할 수 있습니다. 처음 헤더 2byte를 저장해주었습니다. 다음으로는 float..
[안드로이드] Wifi List (와이파이 목록) 띄우기 ― Popup Window에서 Recycler View 사용하기 기기의 주변 wifi를 scan하여, 리스트로 띄워보았습니다. 소스는 프래그먼트에서 구현되었습니다. 구현된 소스는, 버튼을 누르면 팝업창을 띄우고 wifi scan을 시작한다. Popup Window 사용 wifi의 ssid 리스트를 띄운다. Recycler view를 사용 리스트중 ssid 하나를 선택하면, 비밀번호를 입력하는 dialog가 나온다. Custom Dialog 구현 입력된 ssid와 password를 본래 메인 프래그먼트로 전달하여 저장한다. EventBus 사용 Gradle 추가 implementation 'org.greenrobot:eventbus:3.0.0' //event bus implementation 'com.github.pedroSG94:AutoPermissions:1.0.3..
[안드로이드] 아두이노와 안드로이드 Bluetooth 통신하기 안드로이드 기기와 아두이노 보드간 블루투스 통신 코드를 소개하겠습니다. 아두이노는 블루투스 통신을 위해 HC-06을 사용하였습니다. 먼저 bluetooth 통신을 위해 connect 버튼을 누르면 버튼이벤트를 시작으로 블루투스 연결을 시도하였습니다. 코드를 차근차근 따라해보면 이해가 쉬울 것입니다. 구현한 소스는 안드로이드 기기에서 데이터를 아두이노 보드에 송신하고, 아두이노에서 데이터를 수신하는 코드입니다. 특정기기에 자동으로 페어링, 연결 하는 최신 코드를 전부 합하여 포스팅 하였습니다. [Android/통신] - [안드로이드-아두이노] bluetooth classic 자동 페어링&연결 / 데이터 송,수신 안드로이드 Bluetooth 연결 Manifest 추가 먼저, 권한을 위해 AndroidMani..
[안드로이드] 외부 저장소에 데이터 파일 저장하기(쓰기) ― SAF(Storage Access Framework)로 파일 쓰기 이전의 안드로이드 외부 저장소 접근 후 파일을 읽고 쓰는 예제를 따라하다보면, 잘 안되는것을 느끼실 겁니다. 저 또한 시도해봤는데 첫째로, 최상위 경로를 가지고 오는 메서드인 getExternalStorageDirectory()를 더이상 사용할 수 없다는 점 입니다. 예제를 따라하다보면 코드에 Environment.getExternalStorageDirectory() is deprecated 라는 문구가 뜰 것입니다. 그래서 getExternalFilesDir로 메서드를 변경하였지만 이 매서드는 개별 앱공간의 경로이므로 사용자가 접근이 힘들고, 앱 삭제시 삭제될 수 있어 보였습니다. 알아보니 이전의 파일의 읽고 쓰는 방식의 보안을 염려하여 다른 앱이 우리 앱에 소속된 파일들을 볼 수 없도록 업데이트 되었..

728x90
반응형
LIST