구글 hackfair 에 제출할 앱에 Material Design 적용 작업을 진행하고 있다.


주로 테스트 올려서 테스트 하는 디바이스는 갤럭시 넥서스(kitkat 4.4- Cyanogen) 과 넥서스5 (marshmallow 6.0) 인데,  

루트 레이아웃부터 LinearLayout, RelativeLayout 로 되어있던걸 CoordinatorLayout 으로 바꾸고, 

아래쪽 목록뷰에도 스크롤 적용을 했다. ListView -> RecyclerView, CardView 적용.


design support library ( http://googledevkr.blogspot.kr/2015/06/designsupport.html ) 를 이용하면 하위버전에서도 Material Design 적용이 된다고는 하는데, 롤리팝 이후부터만 지원되는 기능들이 몇가지 있다.


StatusBar(시계랑 아이콘 표시되는 영역) 색상 적용은 Kitkat 에서도 이런 라이브러리를 쓰면 가능하나 시스템 기본은 지원하지않으므로(?) 그대로 뒀다 -_-


View 의 elevation 속성은 5.0부터 지원되는데, 그아래 버전에서는 평평하게(!!) 나타난다.

구분되는 부분을 elevation 속성으로 고쳐놨었는데, 구분되는(?)듯한 UI가 안보이니깐, 

롤리팝 아래 버전에는 구분선 뷰를 넣고 visible , 이후 버전에는 gone 으로 처리했다. 



앱 시작 스플래시 화면을 하위뷰로 두고 보여주는 식으로 처리했었는데, 루트레이아웃을 바꾸면서 넥서스5에서는 AppBar(ToolBar)아래부분에 - 그러니까 위에 AppBar 를 덮으면서 나와야되는데 - 나타난다, 갤럭시 넥서스에는 의도한대로 나오는데, 이부분은 Activity 방식으로 바꿔야 할 것 같다.




  1. kfmes 2015.11.19 13:57 신고 댓글주소 | 수정 | 삭제 | 댓글

    앱시작 화면은 appBarLayout 을 gone, splash view 띄워주고,
    splash 사라질때 appBarLayout visible 하는식으로 해결


방금전 구글플레이 알파 테스트에 apk 를 업로드 하면서 나온 추가된 권한들 목록이다.


응(?)

저장소 쓰기 안쓰는데 뭐지... 찾아보니 AndroidManifest.xml 에 저장소 쓰기 권한이 들어가있었다.

프로젝트 생성할때 넣어두고 잊어버리고 있었나보다.


그 외에 권한에 변경점이라면 구글 맵 연동하면서 자동으로 추가된 내용인가보다.


build.gradle 의 defaultConfig 도 살펴보니 targetSdkVersion 21 로 되어있었다. 

여기도 만들때 그냥 그대로 두고 업데이트 안해놨나보다.


targetSdkVersion  23으로 바꿔놨으니 Runtime Permission 도 처리 해줘야겠군!


덧)

구글 플레이 서비스 (상위 모듈)을 넣어줬더니 의존성 걸려있었던 모듈에서 위의 추가되었던 기능들을 사용하는걸로 확인됐다.

아래코드로 수정한뒤 해당권한이 없어졌음.

compile 'com.google.android.gms:play-services-maps:8.3.0'

compile 'com.google.android.gms:play-services-location:8.3.0'



#1. 

이번 프로젝트에 gimbal beacon(사진 아래쪽 파란색) 도 이번 프로젝트에 쓸 수 있을까 해서

(기존 개발은 Light Blue Bean으로 진행됨 - 사진 위쪽), 

기존 코드를 수정해보고 stack overflow 등등을 찾아봤는데

제공해주는 SDK를 이용하지 않고서는 아마 어려울듯하다. 

BLE Scanner 앱을 이용해도 검색이 안되는걸로 보아 다른 방식으로 동작하는듯?


기존에 Light Blue Bean 을 사용하고 있었는데, 

데모 및 시연에서는 다른 팀원이 가지고 있는 것을 몇개 더 사용하는걸로 결정.


#2. 

위작업을 하면서 코드수정을 잘못 했나 Light Blue Bean(이하 LBB 로 표기) 가 인식이 안되었다.

git diff 를 봐도 그렇다할 수정사항을 못찾았는데, 

배터리를 교체하니깐 언제 그랬냐는듯이 정상 작동!

예전에 인텔 에디슨 프로젝트 하면서 LBB 에다가 아두이노 프로그램 올려놨던게 배터리를 빠르게 소모 했었을걸로 추측만 해본다. 



아랫글에서 이어지는 글

기존에 사용중인 개인 계정으로 구글 스토어에 등록을 해도 되지만,

FLIT 에서 앞으로도 무언가를 만들것이고, 이쪽에서 만드는 앱들만 따로 분류를 해야될것 같다는 생각이 들어, 계정을 새로 만들었다. 


팀 이름이 flit 이니깐, team.flit, dev.filt, project.flit 순서를 바꿔봐도 중복되는 아이디라고 나오길래, 가능했던 다른 조합(?)을 석준님께 보여주며 어떤걸로 할까요? 했더니 maker.flit 은 어떻겠냐며 ... 

오오 저 아이디는 가입이 가능했다.


이어서, 플레이 스토어에 개발자 등록을 했다. 몇년만(?)의 개발자 등록!

신용카드 체크용도로 1 USD가 빠져나갔다가 취소 되었다. (아마 일요일 01:00 쯤 AM) 

결제가 아직 진행 중이며 최대 48시간 걸립니다.

APK 업로드를 시작하고 스토어 목록을 준비할 수는 있지만 아직 애플리케이션을 출시할 수는 없습니다.

결제가 처리되고 애플리케이션을 출시할 수 있게 되면 알려드리겠습니다.


라는 문구가 나오다가, 아침에 일어나보니 새벽에 $25 USD 결제가 되었다는 문자가 와있었다.


몇달전 알파, 베타 테스트 기능이 쓸만하게(?) 업데이트 되었다는 소식은 들었는데, 

이번 프로젝트에서 이 기능을 써보기로 ...


안드로이드 프로젝트에 등록용 apk 를 만들어주는 gradle build task 에 releaseAPK 를 추가 했다.(gradle 스크립트 아직은 불편.... -_-)


테스트 APK 등록만으로, 테스트 URL 이 바로 나오는건 아니었고, 스토어 등록정보를 입력해서 게시됨 ! 상태가 되어야 테스트 항목을 사용할 수 있었다.

아는 사람은 알겠지만, 스토어 등록정보를 업데이트 하고나서 몇시간(?)동안 "업데이트 대기 중" 이란 문구가 나온다. 



  


알파,베타 테스트 링크로 접속하게 되면, 위와 같은 흐름으로 테스트 해볼 수 있다.


이런 방식의 장점이, 서버 어딘가에 apk 올려놓고 직접 다운받아 폰에 "알 수 없는 소스" 옵션(스미싱위험 노출)을 사용하지 않아도 된다는것, 업데이트가 있으면 매번 직접 배포하지 않고 스토어를 통해 업데이트가 가능하다는 점이 좋다. 



구글링해서 찾은 내용을 기록용으로 남겨둠.


http://davistechyinfo.blogspot.kr/2014/07/android-determining-if-wearable-device.html


위 블로그 코드 요약.


mGoogleApiClient = new GoogleApiClient.Builder(this)

           .addApi(Wearable.API)

           .addConnectionCallbacks(this)

           .addOnConnectionFailedListener(this)

           .build();


connection callback 이 오면

Wearable.NodeApi 를 이용, 

NodeApi.GetConnectedNodesResult nodes =

                  Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).await();

          if (nodes != null && nodes.getNodes().size() > 0) {

              isConnectedToWearable = true;

          }

 

연결된 node 가 있는경우, 연결된걸로 처리.




안드로이드폰은 화면 회전이 지원된다.

키보드를 열거나 닫으면 가로보기/세로보기로 전환이 되는데,
이때 UI가 새로 그려지면서 Activity의 onDestroy()와 onCreate() 가 수행된다.

위 과정이 수행되고 나면,
Activity 에서 가지고 있었던 변수들(field 도 포함)이 초기 상태로 된다.

만약, 코드에서 Thread를 만들어 돌아가는 중이었다면,
화면 회전을 한 후에는 사라지는 현상이다.

해결방법은 아래를 클릭...


  1. 준호씨 2009.09.20 23:56 댓글주소 | 수정 | 삭제 | 댓글

    오홋 -ㅁ-!!!
    역시 선구자!!!

  2. 박재덕 2009.11.04 16:13 댓글주소 | 수정 | 삭제 | 댓글

    오 가현씨 오랜만이네요. ^^
    링크 따라 왔는데 가현씨 블로그일 줄이야~!
    ㅎ 덕분에 잘 배우고 갑니다.

    건강잘 챙겨요~

  3. 소망아기 2010.01.12 15:25 댓글주소 | 수정 | 삭제 | 댓글

    오~ 안그래도 이 부분 필요 했었는데..
    잘보고 참조해 갑니다..
    감사요 ^^

  4. 후니 2010.02.08 17:58 댓글주소 | 수정 | 삭제 | 댓글

    와우 멋져요~ 출처 표시하고 퍼가도될까요~~

  5. 테디 2010.10.26 15:32 댓글주소 | 수정 | 삭제 | 댓글

    출처 표시하고 퍼갈려고 하는데 괜찮을까요?

    • kfmes 2010.10.28 14:20 댓글주소 | 수정 | 삭제

      네 괜찮습니다.
      그런데 저 방법보다는 manifest 의 내용을 수정하는게 좋을거같아요