posted by 생존본능 2015.10.15 23:00
크리에이티브 커먼즈 라이선스
Creative Commons License


Android Studio 에서 push GCM 구현


1. 프로젝트를 생성.

.


2. build.gradle 에서 gcm 라이브러리를 import 합니다.


dependencies 안에 값을 넣습니다.


 compile 'com.google.android.gms:play-services:8.1.0'





3. class 파일을 생성하여줍니다.


 총 3개의 파일이 필요합니다.


화면구성과 값 등록시 필요한 MainActivity 와,


push가 왔을때 전달할 GcmBroadcastReceiver 클래스


push 받은이후 동작을 구성할 GcmIntentService 클래스가 필요합니다.




MainActivity


mainActivity에서는 푸시를 등록하는 역활을 해줍니다.




SENDER_ID 값에다가 등록한이후 클라이언트 ID값을 넣어주시면 됩니다.


그리고 등록한 이후에 쿠키값을 서버에 전달하여 주면 됩니다.


regId = gcm.register(SENDER_ID); 


 서버에서는 서버키 값과 regId 두가지 값으로 push를 하게 되기때문에,


regId값을 서버에 넣는 코드를 추가하시면 됩니다.



GcmBroadcastReceiver


GcmBroadcastReceiver는 단순이 값을 받아서 서비스쪽에 전달하는 역활을 하게됩니다.




GcmIntentService


GcmIntentService는 push가 왔을때에 행동을 취하게 됩니다.


현재 클래스는 단순히 값이 왔을때 Log.i를 찍는 행동을 하게 됩니다.





2. manifest 에서 권한을 추가합니다.






manifest 에서 리시버와 서비스를 추가합니다.




AndroidManifest.xml



이후 서버쪽에 서버 키값과 regId 값을 전달해주시면,


서버쪽에서 push를 하게되면 디바이스쪽으로 전달됩니다.


저작자 표시
신고
posted by 생존본능 2015.07.15 19:28
크리에이티브 커먼즈 라이선스
Creative Commons License

org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [tc.wo.mbseo.exchangediary.https.datas.TestData] and content type [text/html]

 몇일 동안 고생했던 오류 ㅠ




androidannotations 에서 rest templete 을 사용하는데 계속 이 오류 뜨는 경우.

서버에서 가져오는 값이 text/html 으로 오고 있기때문에 

GsonHttpMessageConverter 으로 변환할수 없기때문에 발생하는 오류입니다.



1. 텍스트에 대한 대응 추가.


이럴때에는 "converters =" 에서 
 
StringHttpMessageConverter.class 를 추가하여 텍스트에 대한 대응을 추가하면

리턴받는 값이 text 값으로 정상적으로 들어오게 됩니다.



2. server 에서 수정 하는 방법

 사실상 서버쪽에서 발생된 오류가 볼수있으며, json 포멧으로 넘기고 타입은 text/html 을 넘기기 때문에

발생된 것이므로 서버쪽에서 header 에서 추가해주면 됩니다.




3. android 쪽에서 수정하는 방법



 RestTemplate getRestTemplate();


 void setRestTemplate(RestTemplate restTemplate);


를 추가하여 template에 접근할수있도록 변경한이후,




GsonHttpMessageConverter 에서 파싱할수있는 타입을 추가해주시면 됩니다.


저작자 표시
신고
posted by 생존본능 2015.06.19 19:29
크리에이티브 커먼즈 라이선스
Creative Commons License


저작자 표시
신고
posted by 생존본능 2015.06.18 17:10
크리에이티브 커먼즈 라이선스
Creative Commons License




   <EditText 

       android:layout_width="match_parent"

       android:layout_height="match_parent"

       android:focusableInTouchMode="false"/>


저작자 표시
신고
posted by 생존본능 2015.06.16 18:29
크리에이티브 커먼즈 라이선스
Creative Commons License


 안드로이드 GCM PUSH 인증 받기 v.2015.06.16


 예전 방법밖에 없어 2015.06.16 에 현재 최신버전으로 다시 올립니다.



 1. 프로젝트 생성.

 

https://console.developers.google.com

경로로 이동하여 프로젝트를 생성합니다.





프로젝트 아이디를 입력하여 생성합니다.





프로젝트를 클릭하여 push 프로젝트로 이동합니다.




 API 로 이동합니다.







 Cloud Message for Android 로 이동







 API 사용 설정을 클릭하여 사용을 설정합니다.







사용이 완료되면 사용자 인증 정보로 이동합니다.




새키 만들기를 클릭하여 팝업띄운후 서버키를 선택합니다.



ip 주소는 선택사항이므로, 넣지 않아도 되기때문에 바로 만들기를 클릭하여 API 키를 생성합니다.





 여기까지가 서버에서 사용할수 있는 서버용 키를 생성하는 방법입니다.



 서버쪽에서 push 보낼때 아래와 같이 보내면 됩니다.


  $headers = array(

  'Authorization: key=' . 'AIzaSyBhhj2UKVHNqoN8PbkPWHBFVv************',

  'Content-Type: application/json'

 );




 이후 클라이언트쪽 key를 가져오기 위해서는 구글 서버스 쪽으로 이동합니다.


 https://developers.google.com/mobile/add





Pick a Platform 을 선택합니다.



  



플랫폼을 선택한 이후,





프로젝트를 선택합니다.






패키지를 입력해 줍니다.




이후  Choose and configure services 를 클릭하여 페이지를 이동한후,


 Cloud Messaging을 활성화합니다.






 CONTINUE TO

 Generate configuration files 를 클릭하여 이동하면,





 클라이언트에서 사용할수 있는 Sender Id를 가져올수 있습니다.


 클라이언트에서는 아래와 같이 사용 하시면 됩니다.


 regid = gcm.register("85770593****");




저작자 표시
신고
posted by 생존본능 2015.06.16 17:17
크리에이티브 커먼즈 라이선스
Creative Commons License


 안드로이드 푸시 (android push) Unauthorized  Error 401 오류


 오류는 구글에 등록된 key 가 일치되지 않을경우 발생됩니다.


 체크해야 할부분은 구글에서 발급받은 key가 정상적으로 입력되었는지 체크하시고,


 구글에서 발급받은직후 바로 테스트하면 바로 업데이트가 되지 않아 발생되는 경우도 생깁니다.


 이럴땐 10~20분정도 기다리고 다시 테스트 하시면 정상적으로 됩니다.


 만약 그래서 똑같은 오류가 발생된다면 공개 api 액세스 key 를 삭제후에 키를 새로 발급받고


 10~20분 기다리고 테스트하시면 됩니다.



저작자 표시
신고
posted by 생존본능 2015.05.04 14:49
크리에이티브 커먼즈 라이선스
Creative Commons License


 androidannotations 에서 많이 사용되는것 위주로 정리해 두겠습니다.





 1. @EActivity


 안드로이드에서 가장 많이 사용되는 어노텐션입니다.


 androidannotations 을 사용하는 activity를 명령하는 어노텐션 입니다.


@EActivity

public class MainActivity extends Activity {


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

    }

}


 위와 같이 명명 하시면 됩니다.


 또한 layout과 같이 사용하시려면 


 

@EActivity( R.layout.activity_main )

public class MainActivity extends Activity {


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

    }

}



 내용 처럼 @EActivity( R.layout.activity_main ) 으로 사용 하시면 됩니다.


 이렇게 적용하신 다음에


 mainifests에서 activity 명을 activity_ 으로 수정해주시면 됩니다.




 변경해 주시면 오류가 뜨는데 이때 Build > rebuild project 하시면 오류가 사라집니다.



 rebuild project를 하시면 보이지는 않지만 androidannotations에서 자동으로


 "activity_" 라는 클래스를 생성하기때문에 정상적으로 표시되는 것을 확인하실수있습니다.


 




 2. @AfterViews


@AfterViews는 view에 대한 모든 내용이 완료된 이후에 호출됩니다.



@EActivity( R.layout.activity_main )

public class MainActivity extends ActionBarActivity {



    @AfterViews

    protected void init()

    {

    }

}



 위 처럼 사용하시면 됩니다.


 주의 하실점은 androidannotations에서 MainActivity_라는 클래스를 생성하여


 MainActivity에 접근하기때문에 private를 사용할경우 오류가 발생합니다.


 public 또는 protected 만 사용이 가능합니다.





 3, @ViewById


 @ViewById는 안드로이드에서 사용했던 findViewById의 절차를 간소한 어노텐션입니다.


protected TextView tvMain;


    @Override

    public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {

        super.onCreate(savedInstanceState, persistentState);

        tvMain = (TextView) findViewById( R.id.tvMain );

    }



 처럼 사용했던 기존에 방식에서 @ViewById를 사용함으로써 간소화 하는 방식입니다.



 사용법은


     @ViewById

    protected TextView tvMain;


 처럼 사용하시면 됩니다. 위처럼 사용하시면 R.id.tvMain 이란 객체를 찾아 tvMain 변수에 넣어줍니다.



    @ViewById ( R.id.tvMain )

    protected TextView tvMain;



 또한 위처럼도 사용이 가능합니다.




 4. @Click

 

 기존에 사용하던 버튼을 사용하던 방식에서 크게 간소화 되었습니다.


protected TextView tvMain;


    @Override

    public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {

        super.onCreate(savedInstanceState, persistentState);

        tvMain = (TextView) findViewById( R.id.tvMain );

        tvMain.setOnClickListener( new View.OnClickListener(){

            @Override

            public void onClick(View v) {

                Log.i(TAG , "tvMainClick");

            }

        });

    }


 

 사용 방식은

 

@Click( R.id.tvMain )

    protected void tvMainClick()

    {

        Log.i(TAG , "tvMainClick");

    }


 입니다. 기존에 사용할때, 아이디 지정및 객체 생성등의 필요없는


 내용이 사라짐으로써 코드량이 확 주는 것을 확인 하실수 있습니다.



저작자 표시
신고
posted by 생존본능 2015.01.16 10:41
크리에이티브 커먼즈 라이선스
Creative Commons License


ADT 개발이 중단되고 안드로이드 스튜디오 android studio로 옮겨야 하는 상황에서 


 이번에 실행해보고 이것저것 하는데 이래저래 걸리는 부분이 많이있네요.ㅠ


 그러다 화면에 거슬리는 선이 있어서 없애려고하는데 없애지지도 않아


 한참을 찾은것같습니다.





 방법은


 File -> settings -> editor -> appearance -> show right margin 을 체크 해제하시면 됩니다.



출처 : 

 http://stackoverflow.com/questions/3480826/adding-a-column-guideline-to-the-editor-in-intellij

저작자 표시
신고
posted by 생존본능 2014.09.12 02:42
크리에이티브 커먼즈 라이선스
Creative Commons License

누구보다 빠르게!
주어진 1부터 10까지의 숫자를 조합하여 100초 이내 25까지의 숫자를 순차적으로 만드는 게임입니다. 
친구들과 내기해서 최고의 성적을 기록해보세요.


Drag Dot는 화면상에 배열된 숫자 1부터 10까지의 숫자를 이용하여 25의 숫자에 도달하는 것이 Drag Dot 게임의 목표 입니다.
게임상의 룰은 1to50과 비슷하지만 Drag Dot 는 서로 숫자간에 연관관계를 이용하여, 머리 회전을 필요로 하는 게임입니다.
Drag Dots는 새로운 경험을 제공합니다.
모두가 재미있게 즐길수있는 Drag Dot 만에 새로운 경험을 느껴보세요.

[게임방법]
화면상에 위치한 숫자를 이용하여 1부터 25까지의 숫자를 만들어보세요.
숫자는 연속적으로 연결될수 있습니다.
하지만 한칸보다 멀리 떨어져 있는 수는 연결될수 없습니다.
제시된 숫자와 일치하지 않을경우 선택된 숫자는 모두 사라져 버립니다.


Drag Dot : 빠르게 연결하는 숫자 퍼즐 게임




저작자 표시
신고

티스토리 툴바