본문 바로가기

Android

(48)
[Android] 카메라로 사진 촬영하기 안드로이드 앱에서 사진을 촬영하는 방법은 크게 두가지가 있다.가장 간단한 방법은 Intent 를 이용하여 단말에 설치된 카메라 어플을 실행하는 것이고, 다른 방법은 surfaceview 를 이용해 카메라 미리보기 화면을 직접 집어넣어 구현하는 방법이 있다. (카메라 미리보기는 서피스뷰를 사용하므로 서피스뷰 사용 패턴을 그대로 사용한다. 뭔소린지 모르겠다) 0. manifest 에 권한을 추가한다. (위험 권한이므로 별도의 메시지를 띄워 권한을 받아야한다. http://one-delay.tistory.com/10?category=766130 참고) 1. 간단한 화면 구성 (xml) 2. 메인 액티비티public class MainActivity extends AppCompatActivity { privat..
[Android] android.os.FileUriExposedException 글 업데이트 날짜 21.07.19 문제상황 Intent 를 이용해 카메라 앱을 찾아 사진을 촬영하여 imageView 에 띄우는 예제를 하던 중에 문제가 발생했다. (인텐트에 파일을 저장할 경로가 Uri 그대로 노출되어있었음) 에러 android.os.FileUriExposedException: file:///storage/emulated/0/capture.jpg exposed beyond app through ClipData.Item.getUri() 에러 발생 이유(공식 문서 한국어 번역) Target SDK 가 android 7.0(24) 이상인 앱의 경우, Android 프레임워크는 앱 외부에서 file:// URI가 노출되는 것을 금지하는 StrictMode API 정책을 적용합니다. 파일 URI..
[Android] 인터넷 연결상태 체크하기 인터넷 연결 상태인터넷 연결 상태는 크게 연결된 상태와 연결되지 않은 상태로 나눌 수 있다.연결된 상태는 다시 무선랜(WIFI)으로 연결된 상태와 모바일 데이터(3G/LTE)로 연결된 상태로 나누어진다. 인터넷 연결 상태 확인하기우선 매니페스트에 연결상태를 확인할 수 있는 권한을 추가해주어야한다. 연결된 상태만을 알고싶다면, 다음과 같이 간단하게 구현하면 된다.public Boolean isNetWorkConnected() { ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetwork = manager != null ? manager.get..
[Android] SQLiteOpenHelper 헬퍼클래스는 데이터베이스 버전을 지정하여 데이터베이스를 업그레이드할 때 알 수 있도록 도와준다. 그리고 현재 단말에 설치된 앱의 테이블이 새로 만들어지는지, 아니면 기존에 만들어져있던 테이블을 업그레이드해야 하는지를 알려준다.헬퍼클래스는 SQLiteOpenHelper를 상속받아 구현할 수 있다.SQLiteOpenHelper를 상속받으면, 기본 생성자와 메소드 2가지를 오버라이드해야한다. class DatabaseHelper extends SQLiteOpenHelper { public DatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factor..
[Android] 웹에서 Image 다운로드 외부 라이브러리 없이 AsyncTask를 이용해 이미지를 다운받아보는 예제 다운로드 할 이미지 주소(네이버-앤트맨과 와스프): https://movie-phinf.pstatic.net/20180530_170/1527645793223uhWgz_JPEG/movie_image.jpg 1. AsyncTask 클래스 만들기public class ImageLoadTask extends AsyncTask { private String urlStr; private ImageView imageView; private ProgressBar progressBar; // 요청 url과 비트맵 객체 매핑, 메모리 관리 위한 것 private static HashMap bitmapHash = new HashMap(); publi..
[Kotlin] Recyclerview 0. 그래들 추가implementation 'com.android.support:recyclerview-v7:27.1.1' 1-1. 아이템 레이아웃 정의 1-2. 아이템 정의data class DailyItem(val sticker: Int, val category: String) 2. 어댑터(Recyclerview.Adapter 상속해야함) 및 뷰홀더 정의class DailyListItemRecyclerviewAdapter(private val items: ArrayList, private val context: Context) : RecyclerView.Adapter(){ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewH..
[Android] Gson을 이용한 JSON 변환 자바스크립트의 경우 JSON과 포맷이 같기 때문에 따로 변환해줄 필요가 없는데, 자바에서 JSON 객체를 다루기 위해서는 자바 객체로의 변환이 필요하다. Gson은 구글에서 만든 JSON 문자열을 객체로 변환해주는 라이브러리이다. * 샘플 API 주소 : http://www.kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json?key=430156241533f1d058c603178cc3ca0e&targetDt=20120101 외부라이브러리 이므로 gradle에 다음 한줄을 추가해준다.implementation 'com.google.code.gson:gson:2.8.2' 사이트에 가서 확인해보면 JSON형태로 되어있는..
[Android] Volley 라이브러리를 활용한 서버 통신 웹페이지에 그냥 요청해서 html 형식으로 불러와 텍스트뷰에 뿌려보는 예제. 0. Volley 라이브러리 추가implementation 'com.android.volley:volley:1.1.0' 1. 인터넷 권한 추가 2. xml 레이아웃 작성 3. Helper 클래스 작성 * Volley는 RequestQueue 객체로 서버 연결을 제어하는데, 이 객체는 애플리케이션에서 하나만 만들어지도록 하기 위해 별도의 클래스에 static 멤버로 선언. -> 싱글톤 패턴에 맞추면 더 좋을듯 하다.public class AppHelper { public static RequestQueue requestQueue; } 4. 메인 액티비티 클래스 작성public class MainActivity extends App..