336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

구글 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 방식으로 바꿔야 할 것 같다.





336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

방금전 구글플레이 알파 테스트에 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'



336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

#1. 

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

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

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

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

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


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

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


#2. 

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

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

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

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



336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

아랫글에서 이어지는 글

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

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 올려놓고 직접 다운받아 폰에 "알 수 없는 소스" 옵션(스미싱위험 노출)을 사용하지 않아도 된다는것, 업데이트가 있으면 매번 직접 배포하지 않고 스토어를 통해 업데이트가 가능하다는 점이 좋다. 



336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

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


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 가 있는경우, 연결된걸로 처리.




336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

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

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

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

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

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