2012. 8. 27. 09:41

* TitleBar 없애기

1) AndroidManifest.xml 에서 TitleBar 없애기
activity태그에 android:theme="@android:style/Theme.NoTitleBar" 를 추가한다.
그리고 android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 을 주게 되면 상단의 시계와 배터리 보이는 부분까지 없어짐으로 화면전체를 FullScreen으로 사용할 수 있다. 

2) Activity 소스상에서 TitleBar 없애기
requestWindowFeature(Window.FEATURE_NO_TITLE);
단, onCreate의 super.onCreate(...); 다음에 넣어야 함.

* Title Text 수정하기 (Activity에서 실행되어야 함)
setTitle((CharSequence)title);

 

'Android > 개발팁' 카테고리의 다른 글

EditText 글자 짤림 현상  (0) 2012.08.27
한글 처리 문제  (0) 2012.08.27
SoftKeyboard 생성, 삭제  (0) 2012.08.27
화면전환시 다이어로그가 사라지는문제  (0) 2012.08.27
안드로이드 기본  (0) 2012.08.27
Posted by hoonihoon
2012. 8. 27. 09:40
가로 세로 화면 전환시 발생하는 문제

'Android > 개발팁' 카테고리의 다른 글

EditText 글자 짤림 현상  (0) 2012.08.27
한글 처리 문제  (0) 2012.08.27
SoftKeyboard 생성, 삭제  (0) 2012.08.27
타이틀바 없애기  (0) 2012.08.27
안드로이드 기본  (0) 2012.08.27
Posted by hoonihoon
2012. 8. 27. 09:37

출처 모든 방문 환영합니다. | 야무지게
원문 http://blog.naver.com/83heejung/50087662113
17. Android 키보드 숫자형으로 시작하게 하기
edittext.setInputType(InputType.TYPE_CLASS_NUMBER);

16. Android listview 검정화면 없애기
android:cacheColorHint="#00000000"

15. Android 화면 고정하기
AndroidManifest.xml의 activity 속성중 screenOrientation을 다음과 같이 지정해준다.

//화면을 세로로 유지
<activity android:name=".Powermeter"
                  android:label="@string/app_name"
                  android:screenOrientation="portrait">
//화면을 가로로 유지
<activity android:name=".Powermeter"
                  android:label="@string/app_name"
                  android:screenOrientation="landscape">
자바 소스에서
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

14. Android Handler example
  // 시간주고 바로 뜨게 하기 20이 최소 가능 값..
        new Handler().postDelayed(new Runnable() {
            public void run() {
                openOptionsMenu();
            }
        }, 20);

13. Android 소프트 키보드 끄기 및 보이기 및 숨기기
  // 키보드 오프시키는 소스..
  EditText et = (EditText)findViewById(R.id.menu6_e_number);
  et.setInputType(0); //가상키보드 오프

1. 보이게 하기

EditText et = (EditText)findViewById(R.id.moneyEdit);
et.setInputType(0); //가상키보드 오프
       
        et.setOnClickListener(new OnClickListener() {  
   public void onClick(View arg0) {    
    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
          imm.showSoftInput(input, 0);
   }         
        });

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, 0);

2. 숨기기
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);


12. Android  Edittext Hint, 흐리게 보이기
android:hint="ex) 안드로이드"


11. Android  EditText 숫자키만 허용하기

DigitsKeyListener digit =
new DigitsKeyListener(true, true); // first true : is signed, second one : is decimal
digit.setKeyListener( MyDigitKeyListener );

위와같이 하거나 xml 에서

android:inputType="number"


10. Android  Option menu 실행 소스
openOptionsMenu();


9. Android Menu 만들기
- xml 소스
res/menu/menu.menu

<menu xmlns:android="http://schemas.android.com/apk/res/android">
 <item
  android:id="@+id/adjust"
  android:title="수정"
  android:orderInCategory="1" >
 </item>
 <item
  android:id="@+id/delete"
  android:title="삭제"
  android:orderInCategory="2" >
 </item>
</menu>

- 자바 소스
 // OptionMenu
 public boolean onCreateOptionsMenu(Menu menu){
  getMenuInflater().inflate(R.menu.del_adjust, menu);
  return true;
 }

    // OptionMenu click event
 public boolean onOptionsItemSelected(MenuItem item) {
  switch (item.getItemId()) {
   case R.id.adjust:
    finish();
    return true;
   
   case R.id.delete:
    finish();
    return true;
  }
  return false;
 }

8. Android Dialog 만들기 (Android.Dialog.Builder())

기존에는 Activity에서 showAlert(()를 제공해줬나보다. (예제를 보니...)
더 이상 지원하지 않기 때문에 AlertDialog.Builder()를 이용하여 Dialog를 생성하였다.

*onClickLister() 생성시 반드시 DialogInterface.OnClickListener()라고 클래스를 적어줘야 한다.
 (Activity에서 button 클릭 이벤트를 처리하기 위해 import한 View 클래스에 OnClickListener 메소드가 있다.)

a. Android  yes or no - 버튼 2개짜리
new AlertDialog.Builder(LoginMainActivity.this)
.setTitle("Login Data")
.setMessage("rosa : test") //줄였음
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {                                        
        //...할일
    }
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {
        //...할일
    }
})
.show();

b. Android  ok (or cancel)
new AlertDialog.Builder(LoginMainActivity.this)
        .setTitle("Login Data")
        .setMessage("rosa : test") //줄였음
        .setNeutralButton("OK", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {                                        
                //...할일
            }
        })        
        .show();

c. Android   다른 layout 출력
new AlertDialog.Builder(LoginMainActivity.this)
.setTitle("list 예제")        
.setItems(R.array.listBtnArray, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int selectedIndex) {        
        String[] list = getResources().getStringArray(R.array.listBtnArray);        
        new AlertDialog.Builder(LoginMainActivity.this)
        .setTitle("선택한 리스트 아이템")
        .setMessage(list[selectedIndex])
        .setNeutralButton("OK", new DialogInterface.OnClickListener(){
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub                        
            }                    
        });                
    }
    })
.show();

--
value 값으로 array 추가
<string-array name="listBtnArray">
        <item>One</item>
        <item>Two</item>
        <item>Three</item>
    </string-array>



7. Android  뒤로 가기 키
 onBackPressed();

6. Android  바이브레이터
Vibrator vibe = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
vibe.vibrate(500);
// 퍼미션        
<uses-permission android:name="android.permission.VIBRATE"></uses-permission>

5. Android  밝기 셋팅
Window w = getWindow();
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = 0~1까지의 float 값;
w.setAttributes(lp);

-1.f를 주면 default 밝기로 세팅됩니다.

4. Android  화면 꺼지는것 막기
현재 Activity가 보여지고 있는 동안은 시간이 지나도
화면이 자동으로 꺼지지 않도록 합니다.
즉 단말이 슬립상태로 들어가지 않고 계속 화면을 켜놓습니다.

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

3. Android  toast
1-Type
Toast.makeText.(this, "토스트 메세지", Toast.LENGTH_SHORT).show();

2-Type
Context context = getApplicationContext();
String msg = "";
int duration = Toast.LENGTH_SHORT;
Toast.makeText(context, b, duration).show();


2. Android  View 백그라운드 색 변경
TextView a = null;
a.setBackgroundColor(Color.WHITE);

1. Android  timer 이용
http://docs.androidside.com/docs/reference/java/util/TimerTask.html
--------------------------------------------------------------------------------------------------
모토로이 볼륨 올리고 내리는 버튼 키값을 알아내서
edittext 에 원하는 값을 넣는 방법 볼룸 위아래 버튼을 누르면
화면에 벨로시 볼륨 조절하는 창이 나타나는데 완전히 키값을 가로채는 방법

et_editText.setOnKeyListener(new OnKeyListener() {
       
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
           // TODO Auto-generated method stub
           if(event.getAction() == KeyEvent.ACTION_DOWN){
              if(keyCode == 24 || keyCode == 25){
              et_editText.setText("1234567890");
             
              return true;
              }
           }
           return false;
        }
       
     });


- 전체적으로 필요한 기능
// 종료 후 재 부팅시 기능이 죽지않고 유지되게 하는 방법들..
http://www.androidpub.com/android_dev_qna/189549

- 박사마 만드는데 필요한 기능
// view에서  페이지 넘기는 기능
API Demos에서 Animation에 간단하게 Fade in, Zoom in 효과가 있네요.

내가 만드는 부분에 필요한 부분들
// 강제로 클릭을 발생시키는 이벤트
dispatchTouchEvent
// 좌표관련들..
getWidth()랑 getHeight()로 전체 좌표값을 얻어오고 %로 비율 정해서 좌표값 설정하세요

'Android > 개발팁' 카테고리의 다른 글

EditText 글자 짤림 현상  (0) 2012.08.27
한글 처리 문제  (0) 2012.08.27
SoftKeyboard 생성, 삭제  (0) 2012.08.27
타이틀바 없애기  (0) 2012.08.27
화면전환시 다이어로그가 사라지는문제  (0) 2012.08.27
Posted by hoonihoon
2012. 8. 27. 09:30

본문스크랩 WM에서의 GPS 구동 원리(스마트 폰만의 위치 추적 처리) - 2탄입니다. 비공개 GPS

2011/01/04 16:53 수정 삭제

복사 http://blog.naver.com/mahamaha7777/150100161900

출처 카페 > 스마트폰카페[갤럭시S/아이폰.. | jinhwkim00
원문 http://cafe.naver.com/bjphone/623307

어제 올린글(http://cafe.naver.com/bjphone/620278)이 도움이 되셨다는 분이 많아 하나 더 적어볼렵니다.

 

티옴니아 쓰시는 분들중 전용요금제를 쓰시는 분들은 TMap이 무료라 많이들 사용하시는거 같은데 TMap 사용시에는 GPS잡는 속도가 많이 다르다는 글이 많이 올라오더군요.(전 쇼옴니아라 체험해보지는 못했습니다.)

 

TMap에서는 보통 다른 S/W가 사용하는 GPS와는 다른 방식으로 처리하는 것으로 알고있습니다.

GPS + 현 위치의 기지국 정보를 이용하는 겁니다.

 

전번 글에 XTRA가 퀄컴의 Assisted GPS 기술이라고 말씀드렸는데요, 사실 XTRA는 퀄컴의 GPS관련 기술중 가장 막내(2007년)입니다. XTRA는 원래 Offline 상태에서 단독 사용을 고려해 둔 기술이지요. 이건 최근의 스마트 폰 추세를 반영한게 아닌가 싶습니다.

 

퀄컴의 GPS기술은 gpsOne이라는 상표명을 가지고 있는데 여기에는 MS-assited, MS-based, MS-assited, MS-assited/Hybrid, XTRA Assistance가 그겁니다. (여기서 MS는 마이크로소프트가 아니고 Mobile Station - 기지국을 뜻합니다.)

 

MS-assited 방식은 단말기가 현재 연결된 기지국ID와 현재 수신되고 있는 GPS 신호를 서버에 보냅니다. 서버는 현재의 해당 기지국 근처의 GPS위성들의 정확한 위치와 정확한 시각 등을 항상 유지하고 있으므로 금방 단말기의 위치를 계산할 수 있습니다. 그런 다음 이 좌표를 다시 단말기에 통신으로 보내줍니다. 단 이 방식은 서버와 계속 통신하지 않으면 현 위치를 계속해서 알아낼 수 없습니다. 하지만 단말에는 위치를 계산하기위한 부분이 필요하지 않고 GPS 전파를 수신하는 부분과 전화 모듈만 있으면(단말기의 원가를 최소로 하면서...) 원하는 시점에 위치를 아주 빠르게 파악할 수 있습니다. 친구찾기 등의 서비스와 같이 추적이 필요없이 현재의 위치만 필요로 한 경우 아주 Good입니다.

 

MS-based 방식은 저번글의 XTRA와 비슷한 방식입니다. 현시점의 전체 위성의 궤도 정보를 받아 이를 이용하는 XTRA와 달리 서버에 기지국의 정보를 보내면 서버는 기지국의 위치로 단말의 대략의 위치를 알수 있으므로 그 위치를 기반으로해서 수신이될 만한 위성의 위치 및 정보만을 보내줍니다. XTRA에 비해 훨씬 적지만 더 정확한 정보지요. 이걸 단말이 GPS장치에 전달해주면 GPS는 이 정보를 기반으로 위치를 계산합니다. 예전부터 폰기반의 네비게이션이 이 방식을 이용했고 TMap도 이걸이용하지 않나 싶습니다.

 

MS-assited/Hybrid 방식은 GPS 신호가 없을때 기지국 정보들 만을 가지고 위치를 파악하는 방식입니다. 사실 도심지의 경우 한 위치에서 1개의 기지국의 전파만이 수신되는 경우는 극히 드뭅니다. 하지만 일반적으로 가장 센 전파강도를 가진 기지국에 자신을 등록하고 사용합니다. 위치 계산때는 등록되지 않은 다른 기지국의 정보를 추가적으로 서버에 보냅니다.(기지국ID/전파 강도 등) 그러면 서버는 각 기지국의 정확한 위치와 전파 강도(이걸로 기지국에서 얼마나 떨어졌나를 유추할 수 있습니다) 등을 고려(삼각측량...)하여 단말기의 대략적인 위치를 계산해 낸 후 단말에 알려주는 거지요. 이건 실내에 있을때와 같이 GPS신호를 전혀 수신할 수 없을때 효과적인 방법입니다.

 

퀄컴의 기술을 주로 설명한 가장 큰 이유는 2G까지 우리나라가 CDMA기술을 이용했기 때문입니다. 기지국 정보를 이용하는 위치정보 시스템을 만들기 위해서는 이를 처리 가능한 단말과 관련 서버기술이 필요한데 CDMA특허권을 가지고 있던 퀄컴이 자신의 휴대폰 칩셋의 부가 칩셋으로 gpsOne을 팔면서 해당 시스템까지 울나라 통신사들에게 판거죠. 그래서 우리나라 통신사들은 모두 퀄컴 gpsOne기반의 위치기반시스템을 갖추고 있습니다.

지금은 3G로 넘어오면서 꼭 퀄컴의 칩을 써야할 이유는 없지만, 기존의 CDMA때 구축한 시스템들을 활용하는데는 퀄컴의 칩(gpsOne)들이 필요할껍니다. 또한 우리나라 핸드폰 제작업체(삼성, LG 등)가 가장 잘 아는 칩셋이니 이걸 쓰는게 그다지 손해는 아닐겁니다.

 

이런 기술들을 내가 만드는 어플에 직접 활용할 수 있을까요? 그건 쉽지 않은 듯 합니다. 일단 통신사가 구축한 시스템(서버)에 접속해야 하는 관계로 사용방법이 알려져있지 않습니다. 예전 위피(WIPI - WI-FI가 아닙니다.)시절에도 위치정보를 이용할 수 있는 API는 존재했지만 특별히 허가받은 관련업체와 허가된 어플만이 이 API를 쓸수 있었습니다.

뭐 우리나라가 분단상황이라는 특별한 상황때문에 군사적인 이유로 법률적인 제제도 상당부분 존재합니다.(인정합니다.)

 

사실 아이폰만 없었더라면 그런가부다 하고 대부분의 사람들이 그냥 넘어갔을지도 모릅니다.

 

아이폰...

 

이놈은 제가 설명드린 대부분의 방법을 지가 알아서 그때그때 사용하는 듯 합니다. 거기에 무선랜 AP기반의 위치 추적등 새로운 기술도 포함하고 있다네요... 어플리케이션을 구현할때는 그냥 현재위치 가져다 쓰면 됩니다. GPS를 켜고 뭘하고 이런거 없습니다. OS가 알아서 다해줍니다.

 

솔찍히 부럽습니다. 하지만 좀 기분 나쁜 부분도 있습니다. 어떤원리로 어떻게 위치를 파악하는지 사용자는 고사하고 개발자에게도 안가르쳐줍니다. (그냥 개인적인 관심일 뿐이지만 알고 싶습니다...)

이번에 애플이 위치정보 사업자로 등록 후에야 아이폰이 시판이 가능해진게 기지국 기반의 위치정보 제공과 좀 관계가 있는게아닌가 싶기도 합니다.

 

얘기가 옆으로 많이 샜습니다...

전 IT엔지니어기는 하지만 LBS쪽 전문가는 아니구요, 그냥 개인적으로 좀 관심을 가지고 있는 정도입니다. 최근에 자료 조사 중에 알아낸 내용을 좀 정리해봤습니다만 내용중 틀린 내용이 있을 수도 있을꺼 같구요...

 

어쨌든  GPS와 함께 즐거운 스마트폰 라이프를 즐기세요~~~

 

Posted by hoonihoon
2012. 8. 27. 09:28

본문스크랩 WM에서의 GPS 구동 원리 설명(GPSGate 등의 사용, XTRA, SNTP) 비공개 GPS

2011/01/04 16:49 수정 삭제

복사 http://blog.naver.com/mahamaha7777/150100161588

출처 카페 > 스마트폰카페[갤럭시S/아이폰.. | jinhwkim00
원문 http://cafe.naver.com/bjphone/620278

먼저 WM의 GPS의 구동 원리부터 간단히 설명합니다.

WM 5 버전 이후부터는 GPS의 관리가 OS로 넘어왔습니다. 그 전 버전은 그냥 시리얼포트...

WM에서는 GPS 장치를 위해 2개의 시리얼 포트를 이용합니다. 설정에 보면 프로그램포트와 하드웨어포트가 그겁니다.

이걸 나눠놓은 이유는 기존의 하나의 실제 시리얼 포트를 이용하는경우 한 어플이 이를 선점하면 다른 어플이 열수 없는 구조 때문입니다. 그래서 하드웨어 포트는 실제 GPS장치의 포트를 지정하고 프로그램 포트는 어플들이 공유할 수 있는 가상 시리얼포트입니다.

첫번째 어플이 GPS 프로그램 포트를 열면 GPS가 켜집니다.(레퍼런스 카운트가 1증가) 그 어플이 GPS를 닫으면(레퍼런스 카운트가 0이됨) 아무도 GPS를 사용하지 않으므로 OS는 GPS를 끄겠지요(바로 끄지는 않는것 같습니다만 곧 꺼집니다) 하지만 이 어플이 GPS를 닫기전에 다른 어플이 또다시 GPS를 사용하면 사용 레퍼런스 카운트가 2가되면서 먼저 열었던 어플이 GPS사용을 중지하더라도 GPS가 계속 켜있게 됩니다.

 

GPSGate 또는 그밖에 GPS수신률을 높혀준다는 어플들은 모두 백그라운드에서 계속 켜져있습니다. 당연히 GPS는 꺼지지 않고 계속 켜있게 됩니다.

 

그럼 GPS가 계속 켜져있는 것과 꺼젔다 켜졌다하는것은 어떤 차이가 있을까요?

GPS는 위성에서 온 표준시각 차이를 이용해 위성과 현 위치의 거리를 일아낸 후 3개 이상의 위성에서의 거리로 삼각측량 방식으로 위치를 잡아냅니다. 이를 위해서는 정확한 현재시각을 먼저 알아내야 하는데 여러 위성에서 오는 신호들을 분석해서 각 위성의 위치와 정확한 시각, 거리를 알아냅니다.(좀 복잡합니다. 사실은 저도 완벽히 이해는 못했습니다...) 어쨋든 한번 위치를 잡으면 최소 2개의 위성만 계속 잡혀도 위치를 알아낼 수 있습니다. - 외장 블루투스 GPS로 테스트해보니 밖에서 위치를 잡은상태로 방안에 들어와도 유지가 되는 경우가 주로 이런 경우더군요. 모든 위성이 잡히지 않는 경우에도 이미 현재 시각은 보정을 해놓은 상태이므로 위성신호만 3개이상 잡히면 바로 위치를 다시 잡을 수 있습니다.

하지만 GPS를 끄게되면 앞에서 계산해놓은 현재시각, 위성위치 등의 정보가 날아가버리니 다시 위치를 잡는데 시간이 많이 걸리겠죠.

 

그럼 초기 위치를 잡는데 걸리는 시간에 영항을 주는 다른 요소를 알아보면 XTRA와 SNTP가 있습니다.

XTRA는 Assistant GPS(A-GPS)의 퀄컴 버전입니다. 네트웍을 통해 40kb정도의 데이터를 다운로드 받는데 거기에는 앞으로 약 6일간의 GPS위성들의 궤도 정보가 들어 있습니다. 어떤ID의 위성이 몇시에는 어디에있다는 정보지요. 이걸이용하면 위성의 위치를 파악하는 시간이 줄어들어서 빨리 위치를 잡을 수 있습니다.(http://www.navi4u.com/bbs/view.php?id=lecture&no=79)

또한 현 시각을 정확히 알아내면 위치를 빨리 잡는데 도움이되기때문에 일부 장치(옴니아2포함)에서는 SNTP(Simple Network Time Protocol - 인터넷을 통해 컴퓨터의 시각을 맞추는데 주로 이용합니다.)을 이용하여 시각을 보정합니다. 이건 한번 다운로드 받는게 아니고 데이터를 보내고 받는데 걸리는 시간을 보정해야 하기때문에 34byte 정도의 데이터를 몇번 보내고 받아 정확한 시각을 구합니다.(http://www.networksorcery.com/enp/protocol/sntp.htm)

 

일단 좀 정리해보면 그렇습니다.

 

일부 어플을 사용하면 GPS가 빨리 잡힌다는것은 그 S/W가 GPS 위치를 빨리 잡을 수 있도록 해준다기 보다는 일단 한번 잡으면 GPS를 계속 켜진상태로 유지하도록 해주어서 바로 위치를 잡아내는것 처럼 보이게 한다는겁니다. - 사실은 미리 위치를 잡아 놓았다는게 맞는 말이겠죠.

외장 GPS의 경우 배터리가 내장된 GPS의 경우 계속 켜두면 거의 항상 바로 위치를 잡을 수 있는 것과 동일한 원리입니다.

 

만일 주요 용도가 네비게이션 등 GPS를 많이 사용하신다면 도움이 되겠지만, 그렇지 않은 경우 GPS가 계속 켜져있으므로해서 발생하는 배터리 소모는 한번 생각해 보심이 좋을듯 합니다.

 

긴글 읽어주셔서 감사합니다.

제가 아는 한도내에서 GPS에 대한 내용을 좀 정리했습니다. 사용하시는데 도움이 되셨으면 하네요.

 

Posted by hoonihoon
2012. 8. 27. 09:23
* statusBarPolicy.java 에 브로드케스터가 등록 되어있습니다. (시간,알람,볼륨,gps, 등등 여러가지 아이콘을 바꿀수 있어 보입니다.
 
 private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {

else if (action.equals(GpsLocationProvider.GPS_ENABLED_CHANGE_ACTION) ||
                    action.equals(GpsLocationProvider.GPS_FIX_CHANGE_ACTION)) {
                updateGps(intent);
            }

}
* 이곳이 gps icon를 셋팅 해주는 부분입니다.
 
 private final void updateGps(Intent intent) {
        final String action = intent.getAction();
        final boolean enabled = intent.getBooleanExtra(GpsLocationProvider.EXTRA_ENABLED, false);

        if (action.equals(GpsLocationProvider.GPS_FIX_CHANGE_ACTION) && enabled) {
            // GPS is getting fixes
            mService.updateIcon(mGpsIcon, mGpsFixIconData, null);
            mService.setIconVisibility(mGpsIcon, true);
        } else if (action.equals(GpsLocationProvider.GPS_ENABLED_CHANGE_ACTION) && !enabled) {
            // GPS is off
            mService.setIconVisibility(mGpsIcon, false);
        } else {
            // GPS is on, but not receiving fixes
            mService.updateIcon(mGpsIcon, mGpsEnabledIconData, null);
            mService.setIconVisibility(mGpsIcon, true);
        }
    } 
Posted by hoonihoon
2012. 8. 27. 09:14
package com.lge.gps.notification;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class GPSnotification extends Activity {
    /** Called when the activity is first created. */
 public static final String GPS_FIX_CHANGE_ACTION =
        "android.location.GPS_FIX_CHANGE";
 public static final String EXTRA_ENABLED = "enabled";
 public static final String GPS_ENABLED_CHANGE_ACTION =
        "android.location.GPS_ENABLED_CHANGE";
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        Button gps1 = (Button)findViewById(R.id.Button01);
        Button gps2 = (Button)findViewById(R.id.Button02);
        Button gps3 = (Button)findViewById(R.id.Button03);
        gps1.setOnClickListener(new OnClickListener() {    //fix
   @Override
   public void onClick(View v) {
    // send an intent to notify that the GPS is no longer receiving fixes.
             Intent intent = new Intent(GPS_FIX_CHANGE_ACTION);
             intent.putExtra(EXTRA_ENABLED, true);
             sendBroadcast(intent);
   }
  });
        gps2.setOnClickListener(new OnClickListener() {   //icon 없앰
   
   @Override
   public void onClick(View v) {
    Intent intent = new Intent(GPS_ENABLED_CHANGE_ACTION);
             intent.putExtra(EXTRA_ENABLED, false);
             sendBroadcast(intent);
   }
  });
        gps3.setOnClickListener(new OnClickListener() {   //gps on  깜박깜박
   @Override
   public void onClick(View v) {
    Intent intent = new Intent(GPS_FIX_CHANGE_ACTION);
             intent.putExtra(EXTRA_ENABLED, false);
             sendBroadcast(intent);
   }
  });
        

 
    }
}

'2019년 이전 정리 > GPS' 카테고리의 다른 글

WM에서의 GPS 구동 원리 설명(GPSGate 등의 사용, XTRA, SNTP)  (0) 2012.08.27
GPS 아이콘 BroadcastReceiver  (0) 2012.08.27
GPS Architecture 분석 1  (0) 2011.01.28
GPS Architecture 정리중....  (0) 2011.01.27
XTRA ?  (0) 2011.01.27
Posted by hoonihoon
2011. 7. 20. 08:55
모바일기획에 중 한 부분인 비지니스 모델에 관련하여 좋은 글을 찾게 되었다.


-SK  (???)

 구글은 크롬 웹브라우저와 OS 를 막대한 비용을 들여 만들고 꽁자로 뿌리는 이유에 대해 이렇게 설명했다.
도로를 잘 딱아 놓으면 사람들이 알아서 자동차를 많이 구매 할 것이라는 이야기이다.
구글의 오늘은 만든 '오픈,상생 정책'의 핵심이다.  이러한 오픈 정책음 21세기 IT기업들에게 중요한 화두이다.

-기술문화연구소장 (류한석)

 모바일 메시젼 카카오톡은 이용자나 트래픽 측면에서 1단계 성공을 거뒀다. 그러나 이보다 중요한것은 소셜 플랫폼인 2단계 진화이다.  광고나 쇼핑, 게임 등의 서비스가 추가돼 본격적인 수익사업을 하지 못한다면 앱의 성공을 논할 처지가 못 된다.

 위치정보 기반의 '스냅핑커'는 근처 레스토랑 위치와 메뉴를 제공하고 예약과 결제까지 동시에 이루어 진다. 
이를 통해 스냅핑거는 자여업자들에게 수수료를 받는다. Buyer와 Seller 가 만날 수 있는 공간을 제공하는 이른바 플랫폼 비즈니스 앱인것이다.


단순히 광고 넣으면 잘되겠지? 유료로 하면 돈 많이 벌 수 있겠지? 
비용에 의존하기 보다는 비지니스 앱 모델에 좀 더 초점을 맞추는게 우선일 것이다.





'2019년 이전 정리 > 모바일 정보' 카테고리의 다른 글

phone gap 앱개발  (0) 2013.03.29
개발자에게 도움될 만한 IT 기술 블로그  (0) 2013.03.14
WPS(Wi-Fi Positioning System)의 기술요소  (0) 2013.03.06
MVNO 소개  (0) 2012.08.27
MIME TYPE 개념  (0) 2012.08.27
Posted by hoonihoon