목록안드로이드 개발/안드로이드 (19)
일모도원(日暮途遠) 개발자
웹브라우저에서 텍스트를 선택한후 메뉴에서 내가 만들고 있는 앱을 선택하면, 앱으로 선택한 텍스트를 가져와서 원하는 뷰를 보여주고 싶다. "GIS"문구를 선택한후 "아라ICT"를 선택. 아라ICT앱을 열고 선택한 문구"GIS"가 포함된 용어 리스트를 보여줌. manifest파일에서 선택된 용어 리스트를 보여줄 액티비티에 intent filter를 걸어준다. PROCESS_TEXT 웹 브라우저에서 텍스트선택시 메뉴에 보여지는 "아라ICT"는 label에서 정해진다. 없으면 앱 이름을 사용하고, 원하면 다른 이름으로 적어줘도 된다. android:label="@string/app_name" 해당 액티비티의 onCreate나 onResume등에서 선택된 텍스트가 들어왔을때 처리를 해준다. (내 앱의 경우에는 프..
기존에는 text에 색상등을 줄려면 HTML을 활용해서 했지만, 요즘은 Span을 사용하여 텍스트에 색상 표시, 텍스트를 클릭 가능하게등을 할수 있다. 스팬을 사용할려면 아래 3개 클래스중 하나를 사용하면 된다. SpannedString 텍스트 또는 마크업이 읽기 전용이면(변경하지 않는다면). 개발자는 이 클래스를 직접 사용하지는 않는거 같다. textview에 setText시 span이 적용된 클래스(SpannableString, SpannableStringBuilder)를 넘겨주면, 이걸 받을때 복사본을 SpannedString으로 만든다고 한다. 그래서 텍스트나 스팬을 업데이트해야 할 경우 SpannedString는 텍스트와 스팬은 변경할 수 없으므로 새로운 Spannable 객체를 만들고 setT..
텍스트의 색상을 변경할때 Span을 사용하는데, setSpan메소드를 보면 flags라는게 있다. public void setSpan(Object what, int start, int end, int flags) { 이 flags에는 많은 값들이 있는데 다음과 같이 비슷하게 생긴것들이 있다. https://developer.android.com/reference/android/text/Spanned?hl=ko Spannable.SPAN_INCLUSIVE_INCLUSIVE Spannable.SPAN_INCLUSIVE_EXCLUSIVE Spannable.SPAN_EXCLUSIVE_EXCLUSIVE Spannable.SPAN_EXCLUSIVE_INCLUSIVE 이 flags들은 span을 적용할 텍스트가 변경..
xml에서 UI의 ID를 주기위해서 android:id="@+id/button"이런씩으로 이름을 주는데 가끔 id앞에 "+"가 없이 android:id="@id/image" 이런씩으로 있는 경우가 있다. id는 R.java에 자동으로 생기는데, "+"는 없으면 R.java에 해당 아이디를 만들고 있으면 그걸 쓰라는 뜻이다. 그럼 "+"없으면? 그건 있는걸 쓰라는 뜻이다. R.java에 없으면 새로 만들지 않고 에러를 낸다. 당연히 "@+id/"를 쓰자. XML파싱은 위에서 아래로 순차적으로 하기 때문에 만약 아래처럼 "+"가 위의 Button에 만 있고 Button안에서 참조하는 "@id/image"에 +가 없다면 에러가 난다. (여기서 image란 id를 찾지못해서 에러가 남) 해결책은 ImageVi..
버전코드와 버전이름을 올려준다. “버전코드”는 GooglePlay 에 공개할 때 사용하는 것으로 이전 보다 높으면 앱을 갱신하한다. 정수형으로 보통 1 로 시작해서 2, 3, 4 와 같이 업데이트 될 때마다 증가시켜 준다. “버전이름”은 버전코드와 달리 유저가 확인할 수 있는 정보로 앱 갱신에 영향을 주지 않는다. 역시 갱신할때마다 올려주는게 좋다. Build - Generate Signed Bundle / APK...를 선택한다. 요즘은 APK보다 App Bundle로 많이 한다. (용량이 더 작아진다) jks파일은 잃어버리면 안되니 백업을 잘해두자. 제출하고자 하는 Build Variant를 선택한다. 구글플레이에 제출할려면 Release를 선택해야 한다. 빌드가 끝났으면 우측하단에 메시지가 뜬다. ..
가끔 남의 소스를 볼일이 있을때, 어느 액티비티가 제일 먼저 실행되는지 궁금할때가 있다. 그럴땐 AndroidManifest.xml 파일을 먼저 찾자. 단축키로는 쉬프트키를 두번 누르면 팝업이 뜨는데, 여기서 찾고자 하는 파일명을 넣으면 쉽게 찾을수 있다. 그다음에는 android.intent.action.MAIN 를 포함하는 액티비티를 찾으면 된다. 아래의 경우는 SampleChooserActivity 가 앱이 실행될때 제일먼저 생성되는(main entry point) 메인 액티비티이다. android.intent.category.LAUNCHER는 이 액티비티를 application launcher에 등록하란 뜻이다. application launcher에 등록되어야지만 폰의 홈 스크린에 앱이 보인다...
만들고 있는 AraPlayer에서 동영상을 플레이하고 있으면, 일정시간이 지나면 화면이 약간 흐려지고, 나중에는 화면이 꺼진다. (전원이 연결되어 있어도 그렇다.) 게임이나 영화 앱 같은 특정 앱은 화면이 켜진 상태를 유지해야 할때는 FLAG_KEEP_SCREEN_ON을 사용해보자. (Activity에서만 사용하고 서비스나 다른 앱 구성요소에는 절대 사용하면 안 된다고 한다.) @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } @Ove..
보니까 안드로이드 소스에서 적절한 시기에 별점과 리뷰요청해서 앱내에서 별점과 리뷰를 적는 방법도 있는거 같다. 근데 복잡해 보여서 그냥 수동으로 메뉴를 누르면 구글 플레이에 있는 앱을 열어 주면 별점과 리뷰를 적는식으로 구현했다. 매우 간단하다. 리뷰 요청 버튼을 누르면 아래를 호출하도록 하자. public void rateApp() { activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id=" + BuildConfig.APPLICATION_ID))); } 그러면 자동으로 구글플레이가 열리면서 별점과 리뷰를 작성할수 있다. 앱을 SNS로 공유하는 기능은 여기를 참고.