Regular Motion

개발자가 상팔자

Tag: 안드로이드 (page 1 of 4)

[Android] App Indexing Introduction.

App Indexing은 짧게 요약하면 Google Search의 검색 결과에 어플리케이션의 컨텐츠를 노출시키는 방법이다.

어플리케이션에서 App Indexing을 구성하는 방법은 아래 4단계를 거치면 된다.

 

1. App Indexing을 Project의 dependencies에 추가한다. (시작은 쉽다)

 

2.  Google Search의 검색 결과에서 앱이 바로 실행되기 위해서는 intent-filter가 필요하다. (너와 나의 연결고리 말이다.)

검색 결과에서 바로 실행 될 Activity에 Deep Linking을 위한 intent-filter를 추가한다.

아래 intent-filter는 http://radioinn.com/podcast로 시작하는 broadcast를 처리하겠다는 의미다.

 

3. 연결고리까지 만들었으니, 이제 어플리케이션이 어떤 컨텐츠를 갖고 있는지 증명해야한다.

어플리케이션에서 Google Search의 검색 결과에 추가하고 싶은 컨텐츠를 아래와 같이 추가한다.

Title의 경우 Google Search의 자동 완성에 표시될 이름이고,

ContentId의 경우 Google Search의 겸색 결과에서 앱을 실행시에 dataString에 포함될 값이다.

* 실행된 Activity에서는 ContentId를 통해 원하는 컨테츠를 보여줄 수 있어야 한다.

 

3번까지 정상적으로 성공했으면, Google앱의 Search에서 Title에 포함된 내용을 검색했을 때 아래와 같이 나와야 한다.

아래 이미지에서는 ‘윤종신 허지웅의 어수선한 영화이야기’가 App Indexing을 통해 Google Search에 포함된 경우다.

우오오!!!! 이렇게 간단하다니!!!!

2015-06-02 09.59.55

 

4. 이제 Google Search에서 검색 결과를 클릭했을 때의 처리만 남아있다.

이미 2번에서 Google Search의 검색 결과에서 클릭했을 때 실행을 위한 intent-filter는 추가했었다.

intent-filter가 정상적으로 추가되어 있다면, Google Search에서 검색 결과를 클릭했을 때,

앱이 실행중이면 onNewIntent(), 앱이 실행중이 아니면 onCreate()로 intent를 넘겨준다.

이제 넘겨받은 intent에서 ContentId를 파싱해서 컨테츠를 보여주면 된다.

끝. (이제 앱이 히트를 칠 일만 남았다)

 

* 참고자료

https://developers.google.com/app-indexing/introduction

– http://io2015codelabs.appspot.com/codelabs/app-indexing#1

[Android] Intent로 기본 Calendar 실행하기.

Android 개발을 하다보면 Intent를 활용해서 다양한 기본 App을 실행해야 할 경우가 많다.

이번에 알게된 Intent는 안드로이드 기본 Calendar 앱을 실행할 수 있는 Intent다. 

[Android] Intent로 기본 뮤직 앱 실행하기. (Default Music Application 실행)

Android 개발을 하다보면 Intent를 활용해서 다양한 기본 App을 실행해야 할 경우가 많다.

이번에 알게된 Intent는 안드로이드 기본 뮤직 앱을 실행할 수 있는 Intent다.  

위의 Intent를 활용하면 Android 기본 뮤직 플레이어로 원하는 음악을 실행시킬 수 있다.

다만 File Path가 아니라 Content의 ID를 인자로 전달해야 하는데 이를 얻기 위해서는 

Content Resolver를 이용하여 아래와 같이 얻을 수 있다.


요약하자면
1) Content Resolver를 이용하여 Media Content의 ID를 얻어낸다.
2) 위에서 소개한 Intent를 발사한다.

끝!

[Android] ProgressBar와 관련된 사소한 버그.

Android는 훌륭한 모바일 플랫폼이지만 완벽한 플랫폼은 아니기에 몇몇 버그들을 포함하고 있다.

오늘 개발하는 중에 발견한 버그는 ProgressBar와 관련된 버그다.

Android의 View는 setViewVisibility(int viewId,int visibility) 함수를 통해 화면에


나타나게 할 건지 
안 나타나게 할 것인지를 설정할 수 있다.

 


문제는 이 setViewVisibility() 함수가 거의 모든 View에 대해서는 정상적으로 작동하는데




ProgressBar에 대해서만 정상적으로 동작하지 않는다.


(2.3 Ginger에서는 ProgressBar에 대해서도 정상 동작한다.)


아래 주소의 글을 참고하면 이유를 알 수 있다. ^^

http://www.mail-archive.com/android-developers@googlegroups.com/msg50097.html


따라서 코드에서 동적으로 ProgressBar를 활성화, 비활성화 시키기를 원 할 경우 


ProgressBar를 Layout으로 감싼 뒤 Layout을 활성화, 비활성화 시키는 방법을 권유한다!





<LinearLayout android:id=“@+id/wrapper”

android:layout_width=“fill_parent”

android:layout_height=“wrap_content”>

<ProgressBar android:id=“@+id/down_progress”

android:paddingLeft=“5dip”

android:paddingRight=“5dip”

android:indeterminate=“false”

style=“@android:style/Widget.ProgressBar.Horizontal”

android:layout_width=“fill_parent”

android:layout_height=“wrap_content” />

</LinearLayout>





notification.contentView.setViewVisibility(R.id.wrapper, View.GONE);

[Library] MP3 태그를 수정할 수 있는 Library!

Android의 치명적인 버그중 하나는 바로 MP3 태그가 한글(사실 영어를 제외한 언어로 보는게 맞다)로 

되어 있을 경우 정상적으로 출력되지 않는 경우가 많다는 것이다.

위와 같은 문제가 발생하는 이유는 framework내에 버그가 존재하기 때문인데 버그는 아래와 같다.

ID3tag내에 정보는 한글로 채워져 있는데 encoding에 정보가 명시적으로 정의되어 있지 않은 경우 

이를 UTF-8로 인코딩해서 처리하기 때문에 발생하는 문제로 보인다.

위와 같은 문제를 피해서 한글로 태그정보를 입력하기 위해서는 EUC-KR로 encoding해서 입력하는

방법이 있다.

MP3 Tag정보를 수정할 수 있는 JAVA 기반의 Library는 많이 나와있으나 여기서는 사용하기 가장

편리하고 업데이트도 꾸준히 되는 jaudiotagger를 사용하는 것을 권고한다.

jaudiotagger사용법은 아래와 같다. 

참고 : http://www.androidpub.com/471907 
         http://www.jthink.net/jaudiotagger/       <- Library를 다운 받을 수 있는 사이트

Older posts

© 2017 Regular Motion

Theme by Anders NorenUp ↑