요즘 대세인 안드로이드 폰의 google backup 동작을 위해서 폰 최초 부팅시 Google setup wizard 에서 트리거를 생성한다고 하네요...


Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요

  1. BlogIcon prada wallet 2012.08.17 15:36  댓글주소  수정/삭제  댓글쓰기

    아직 RC버전이지만 다양한 종류의 기능들이 많이 생겼으니 틈틈이 프리뷰를 하도록 하겠습니다 -

  2. BlogIcon hermes bags 2012.09.11 17:17  댓글주소  수정/삭제  댓글쓰기

    私はちょうど地区の後にエルメスのレプリカ4分の1を愛して

  3. BlogIcon Rolex DateJust 2013.01.22 16:53  댓글주소  수정/삭제  댓글쓰기

    당신의 기사에서 아이디어를 잡을 수있어 기뻐요. 내가 오랫동안 검색되었습니다 정보가 있습니다.

안드로이드 String 리소스는 int 형의 id 를 통해 사용한다.

이 id 를 통해 진짜 value 를 얻어오고 싶을 때가 있다...

그럴 땐 간단하게 getString(resId) 하면 된다.ㅋㅋ

ex.) String msg = getString(R.string.message);


Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요

  1. BlogIcon Loewe bag 2012.09.04 15:51  댓글주소  수정/삭제  댓글쓰기

    쌀대란 해결을 위한 고창군 농민총회 개최

키보드 보이게 하기

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


키보드 숨기기 
1.InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
2.imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요

  1. BlogIcon Mont blanc bags 2012.09.04 15:51  댓글주소  수정/삭제  댓글쓰기

    쌀대란 해결을 위한 고창군 농민총회 개최

  2. BlogIcon rpzvmohw 2013.05.13 03:58  댓글주소  수정/삭제  댓글쓰기

    http://ruemee.com/destockchine-homme-lunettes-gucci-pas-cher-grossiste-p-47179.html
    http://ruemee.com/destockchine-homme-lunettes-oakley-pas-cher-grossiste-p-50216.html
    http://ruemee.com/destockchine-homme-lunettes-chanel-pas-cher-grossiste-p-52429.html
    http://ruemee.com/destockchine-homme-lunettes-de-vue-cartier-aaa-pas-cher-grossiste-p-55517.html
    http://ruemee.com/destockchine-homme-lunettes-gucci-pas-cher-grossiste-p-47255.html
    http://ruemee.com/destockchine-homme-lunettes-versace-pas-cher-grossiste-p-53359.html
    http://ruemee.com/destockchine-homme-lunettes-dolce-gabbana-pas-cher-grossiste-p-53994.html
    http://ruemee.com/destockchine-homme-lunettes-ray-ban-pas-cher-grossiste-p-42848.html
    http://ruemee.com/destockchine-homme-lunettes-fendi-pas-cher-grossiste-p-51332.html
    http://ruemee.com/destockchine-homme-lunettes-chanel-pas-cher-grossiste-p-51740.html
    http://ruemee.com/destockchine-homme-lunettes-burberry-pas-cher-grossiste-p-54947.html
    http://ruemee.com/destockchine-homme-lunettes-oakley-pas-cher-grossiste-p-49987.html
    http://ruemee.com/destockchine-homme-lunettes-gucci-pas-cher-grossiste-p-47474.html
    http://ruemee.com/destockchine-homme-lunettes-prada-pas-cher-grossiste-p-52896.html
    http://ruemee.com/destockchine-homme-lunettes-louis-vuitton-pas-cher-grossiste-p-45446.html
    http://ruemee.com/destockchine-homme-lunettes-carrera-pas-cher-grossiste-p-44671.html
    http://ruemee.com/destockchine-homme-lunettes-oakley-pas-cher-grossiste-p-50813.html
    http://ruemee.com/destockchine-homme-lunettes-gucci-pas-cher-grossiste-p-47200.html
    http://ruemee.com/destockchine-homme-lunettes-oakley-pas-cher-grossiste-p-49972.html
    http://ruemee.com/destockchine-homme-lunettes-gucci-pas-cher-grossiste-p-47297.html
    http://ruemee.com/destockchine-homme-lunettes-ray-ban-pas-cher-grossiste-p-43638.html
    http://ruemee.com/destockchine-homme-lunettes-oakley-pas-cher-grossiste-p-50337.html
    http://ruemee.com/destockchine-homme-lunettes-dolce-gabbana-pas-cher-grossiste-p-53694.html
    http://ruemee.com/destockchine-homme-lunettes-ray-ban-pas-cher-grossiste-p-43633.html
    http://ruemee.com/destockchine-homme-lunettes-gucci-pas-cher-grossiste-p-47309.html
    http://ruemee.com/destockchine-homme-lunettes-carrera-pas-cher-grossiste-p-44477.html
    http://ruemee.com/destockchine-homme-lunettes-gucci-pas-cher-grossiste-p-46968.html
    http://ruemee.com/destockchine-homme-lunettes-dolce-gabbana-pas-cher-grossiste-p-53693.html
    http://ruemee.com/destockchine-homme-lunettes-chanel-pas-cher-grossiste-p-51666.html
    http://ruemee.com/destockchine-homme-lunettes-oakley-pas-cher-grossiste-p-48779.html
    http://ruemee.com/destockchine-homme-lunettes-oakley-pas-cher-grossiste-p-51117.html
    http://ruemee.com/destockchine-homme-lunettes-prada-pas-cher-grossiste-p-52762.html
    http://ruemee.com/destockchine-homme-lunettes-gucci-pas-cher-grossiste-p-46969.html
    http://ruemee.com/destockchine-homme-lunettes-oakley-pas-cher-grossiste-p-50836.html
    http://ruemee.com/destockchine-homme-lunettes-gucci-pas-cher-grossiste-p-46380.html
    http://ruemee.com/destockchine-homme-lunettes-burberry-pas-cher-grossiste-p-54933.html
    http://ruemee.com/destockchine-homme-lunettes-dolce-gabbana-pas-cher-grossiste-p-53792.html
    http://ruemee.com/destockchine-homme-lunettes-oakley-pas-cher-grossiste-p-50050.html
    http://ruemee.com/destockchine-homme-lunettes-chanel-pas-cher-grossiste-p-52138.html
    http://ruemee.com/destockchine-homme-lunettes-oakley-pas-cher-grossiste-p-48363.html
    http://ruemee.com/destockchine-homme-lunettes-oakley-pas-cher-grossiste-p-49657.html
    http://ruemee.com/destockchine-homme-lunettes-gucci-pas-cher-grossiste-p-46381.html
    http://ruemee.com/destockchine-homme-lunettes-ray-ban-pas-cher-grossiste-p-42686.html
    http://ruemee.com/destockchine-homme-lunettes-armani-pas-cher-grossiste-p-45116.html
    http://ruemee.com/destockchine-homme-lunettes-oakley-pas-cher-grossiste-p-47645.html
    http://ruemee.com/destockchine-homme-lunettes-de-vue-porsche-pas-cher-grossiste-p-55748.html
    http://ruemee.com/destockchine-homme-lunettes-oakley-pas-cher-grossiste-p-50507.html
    http://ruemee.com/destockchine-homme-lunettes-oakley-pas-cher-grossiste-p-50176.html
    http://ruemee.com/destockchine-homme-lunettes-de-vue-cartier-pas-cher-grossiste-p-56040.html
    http://ruemee.com/destockchine-homme-lunettes-gucci-pas-cher-grossiste-p-46613.html

GED

Programming/GoogleAndroid 2010.04.05 12:31

안드로이드에서 GED란...

GED - Google Experience Device

참고.. GMS..

Google Mobile Service
Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요

<EditText android:id="@+id/edtInput" 
 android:layout_width="0dip" 
 android:layout_height="wrap_content" 
 android:layout_weight="1"
 android:inputType="textShortMessage|textAutoCorrect|textCapSentences|textMultiLine" 
 android:imeOptions="actionSend|flagNoEnterAction" 
 android:maxLines="4" android:maxLength="2000" 
 android:hint="@string/compose_hint"/>

imeOptions 로 done, next, send 버튼 등을 결정할 수 있다.


Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요

  1. BlogIcon repair iphone 2011.06.15 21:27  댓글주소  수정/삭제  댓글쓰기

    좋은 글 잘 보고 갑니다. 다음에도 또 좋은 글 기대 할께요. 퍼가도 되죠?

  2. BlogIcon louis Vuitton outlet 2012.09.07 16:57  댓글주소  수정/삭제  댓글쓰기

    블로그 랭킹에 들어있는 인기블로거들에 대해서 1년전 쯤 포스팅

암시적 인텐트를 사용해봅니다.

이것은 주로 어플리케이션 간에 인텐트를 파이어할 경우 사용합니다.

암시적 인텐트를 사용하기 위해서는 수신측 액티비티에서 인텐트 필터가 필요합니다.

그리고 인텐트 필터는 반드시 android.intent.category.DEFAULT 를 포함해야 합니다.

세개의 APP 를 만들었습니다.

A :  인텐트 파이어
B : 인텐트 수신 

A 코드

public class IntentTestA extends Activity {
private Button buttonB;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);
        buttonB = (Button)findViewById(R.id.fireButtonB);
        buttonB.setOnClickListener(new View.OnClickListener() {
        
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent("com.sh.android.testB.DEFAULT");
//intent.setClassName("com.sh.android.testB", "com.sh.android.testB.IntentTestB"); 명시적 인텐트로
/// 다른 어플리케이션으로 인텐트를 파이어할 수도 있다.
intent.putExtra("From", "A");
startActivity(intent);
}
});
      
        
    }
    
    
}

B 코드

public class IntentTestB extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        String test;
        if((test = getIntent().getStringExtra("From")) != null) {
         Toast t = Toast.makeText(getApplicationContext(), test, Toast.LENGTH_SHORT);
        
         t.show();
        }
    }
}

B 의 AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      android:versionCode="1"
      android:versionName="1.0" package="com.sh.android.testB">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".IntentTestB"
                  android:label="@string/app_name">
           
       <intent-filter>
          <action android:name="com.sh.android.testB.DEFAULT"></action>
        <category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>

    </application>
    <uses-sdk android:minSdkVersion="5" />

</manifest> 

메니페스트에서 볼 수 있듯이 DEFAULT 카테고리를 포함하고 액션을 지정해 주고 

파이어하는 쪽 ( A ) 에서 저 액션을 파라미터로 넣어서 인텐트를 생성하면 됩니다.

추가적으로 테스트 해 본 것이 다른 어플리케이션이지만 패키지이름과 액션이름이 같을 때입니다.

그럴 때는 해당 액션을 넣어서 인텐트를 날리면 두 애플리케이션 중 선택할 수 있는 메뉴를 띄어 줍니다.


Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요

  1. BlogIcon louis Vuitton replica 2012.09.07 16:57  댓글주소  수정/삭제  댓글쓰기

    블로그 랭킹에 들어있는 인기블로거들에 대해서 1년전 쯤 포스팅

출처 : http://blog.naver.com/osk1004?Redirect=Log&logNo=50069078782


==========================================================================================

원문 : http://letsgoustc.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&_c=BlogPart&partqs=amonth%3d12%26ayear%3d2008

[First written by Steve Guo, please keep the mark if forwarding.]

Input Event Detect and Dispatch

input event dispatch engine 은 WindowManagerService.java 안에 위치한다.

WindowManagerService.java 는 KeyInputQueuq.java 로 부터 input event 를 read 하기 위한 하나의 thread 를 생성한다.

그리고, 그 event 를 binder 를 통해서 현재 focus 가 있는 window 로 dispatch 시키는 일을 한다.

                // Retrieve next event, waiting only as long as the next

                // repeat timeout.  If the configuration has changed, then

                // don't wait at all -- we'll report the change as soon as

                // we have processed all events.

                QueuedEvent ev = mQueue.getEvent(

                    (int)((!configChanged && curTime < nextKeyTime)

                            ? (nextKeyTime-curTime) : 0));

input event 가 읽어 지면,  input event type 을 결정한다.현재는 3개의 input event type 을 지원한다.

1. Key

2. Trackball

3. Pointer

binder 를 통해 현재 fucus 를 가지고 있는 window 로 event type 에 매핑되는 dispatch fucntion 을 호출한다.(아~ 해석이 어색하다)

 

key event 를 예를 들면, 아래의 code 를 호출하게 된다.

            focus.mClient.dispatchKey(event); 

 

가장 아랫단에서,  Android 는 Linux input device 로 부터 실제 input event(keyboard,mouse,touch 등)를 읽어들인다.

그에 상응하는 소스는 EventHub,cpp 이다.

Key input event 를 위해서, Android 는 key lyout map file로 부터 key code 를 scen 한다.

OEM 회사들은 필요하다면, 그들의 device 에 match 시키기 위해 key lay map file 을 customize 할 필요가 있다.

그것은 key layout map file 에서 찾기 위해 아래 함수를 이용한다.

 

        // a more descriptive name

        ioctl(mFDs[mFDCount].fd, EVIOCGNAME(sizeof(devname)-1), devname);

        devname[sizeof(devname)-1] = 0;

        device->name = devname;

 

        // replace all the spaces with underscores

        strcpy(tmpfn, devname);

        for (char *p = strchr(tmpfn, ' '); p && *p; p = strchr(tmpfn, ' '))

            *p = '_';

 

        // find the .kl file we need for this device

        const char* root = getenv("ANDROID_ROOT");

        snprintf(keylayoutFilename, sizeof(keylayoutFilename),

                 "%s/usr/keylayout/%s.kl", root, tmpfn);

        bool defaultKeymap = false;

        if (access(keylayoutFilename, R_OK)) {

            snprintf(keylayoutFilename, sizeof(keylayoutFilename),

                     "%s/usr/keylayout/%s", root, "qwerty.kl");

            defaultKeymap = true;

        }

        device->layoutMap->load(keylayoutFilename);

 

OEM 은 Android가 booting 하는 동안, key layout map file 이름을 가져올수 있다. 왜냐하면, Android 는 그 file name 을 기록할것이기 때문이다.

Java layer 단의 wrapper 는 WindowManagerService.java 에서 사용되어지는  KeyInputQueue.java 파일이다.

그것은 JNI 를 통해 EventHub.cpp 를 호출한다. com_android_server_KeyInputQueuq.cpp 는 JNI implementation 파일이다.

 

Input Event Processing

ativity 가 launch 되어질때, ActivityManagerService.java 는 activity 를 생성하기 위해서 ActivityThread.java 를 호출한다.

                activity.attach(appContext, this, getInstrumentation(), r.token, app,

                        r.intent, r.activityInfo, title, r.parent, r.embeddedID,

                        r.lastNonConfigurationInstance, config);

 

그러고 나서 Activity.java 가 activity 를 표시하기 위해 PhoneWindow.java 의 intance 를 생성한다. 각각의 PhoneWindow.java 는 activity 내의 view 들에 대한 Root 로써 DecorView.java 의 instance 를 포함하고 있다.

        mWindow = PolicyManager.makeNewWindow(this);

        mWindow.setCallback(this);

 

Activity 가 생성된 후에, Activity 를 resume 시키기 위해 ActivityManagerService.java 는 ActivityThread.java 를 호출한다.

이때, ActivityThread.java 는 DecorView.java 의 instance 를 add 시키기 위해서 WindowManagerImpl.java 를 호출한다.

                r.window = r.activity.getWindow();

                View decor = r.window.getDecorView();

                decor.setVisibility(View.INVISIBLE);

                ViewManager wm = a.getWindowManager();

                WindowManager.LayoutParams l = r.window.getAttributes();

                a.mDecor = decor;

                l.type = WindowManager.LayoutParams.TYPE_BASE_APPLICATION;

                wm.addView(decor, l);

 

WindowManagerImpl.java 는 ViewRoot.java 의 instance 를 생성한다. ViewRoot.java 는 각각의 process 에서 오직 한번만 initialize 되는 static member 를 가진다.

그것은 WindowManagerService.java 에게 현재 link 된 process 가 있는지 여부를 알려줄때 사용되어진다.

            if (!mInitialized) {

                try {

                    sWindowSession = IWindowManager.Stub.asInterface(

                            ServiceManager.getService("window"))

                            .openSession(new Binder());

                    mInitialized = true;

                } catch (RemoteException e) {

                }

            }

 

ViewRoot.java instance 가 생성된 이후에, WindowManagerImpl.java 는 ViewRoot.java 를 binding 하기 위해 DecorView.java 에 대해 setView API 를 호출한다.

        // do this last because it fires off messages to start doing things

        root.setView(view, wparams, panelParentView);

 

setView API 안에서, 마침내 ViewRoot.java 는 DecorView.java 를 그리게 된다. 그리고 IWindow instance 를 WindowManagerService.java 에 register 시킨다.  

                    res = sWindowSession.add(mWindow, attrs,

                            getHostVisibility(), mCoveredInsets);

 

그이후에, WindowManagerService.java 는 ViewRoot.java 내에서 이 IWindow instance 와 직접적으로 통신한다.( Dispatching input event 를 포함해서...)

그러면, ViewRoot.java 는 input event 를 처리하기 위해서 View.java 를 호출한다.

Key event 를 예를 들면, View.java 안에 있는 dispatchKeyEvent() API 가 호출될 것이다.

    public boolean dispatchKeyEvent(KeyEvent event) {

        // If any attached key listener a first crack at the event.

        //noinspection SimplifiableIfStatement

        if (mOnKeyListener != null && (mViewFlags & ENABLED_MASK) == ENABLED

                && mOnKeyListener.onKey(this, event.getKeyCode(), event)) {

            return true;

        }

   

        return event.dispatch(this);

    }

 

만약 어떤 Key listener 가 이 view 에 register 되어져 있다면, View.java 는 그것을 찾는다.

Key listener 가 있다면, 그 key event 는 그 Key listener 에 의해 처리되어질 것이다.

그렇지 않으면,  대개 OnKeyDown/OnKeyUp 을 호출하게 된다.

 

모든 Key listener 구현은 frameworks/base/core/java/android/text/metod 에 있다.

 

MultiTapKeyListener.java     -    keypad 가 NUMERIC 면, 이 listener 는 숫자입력을 문자로 변환할것이다.

QwertyKeyListener.java        -     keypad 가 QWERTY 면, 이 listener 가 사용된다.

 

 

 

=============================================== 원 문 ===============================================

[First written by Steve Guo, please keep the mark if forwarding.]

Input Event Detect and Dispatch

The input event dispatch engine is in WindowManagerService.java. WindowManagerService.java creates a thread to read input event from KeyInputQueue.java and dispatches the event to the window which has current focus through binder.

                // Retrieve next event, waiting only as long as the next

                // repeat timeout.  If the configuration has changed, then

                // don't wait at all -- we'll report the change as soon as

                // we have processed all events.

                QueuedEvent ev = mQueue.getEvent(

                    (int)((!configChanged && curTime < nextKeyTime)

                            ? (nextKeyTime-curTime) : 0));

If an input event is read, it judges the input event type. Currently support three input event types: key, trackball and pointer. Then according to event type call corresponding dispatch function to the window which has current focus through binder. For example, for key event, it calls the following code.

            focus.mClient.dispatchKey(event);

At the lowest level, Android reads the real input event (keyboard, mouse or touch) from Linux input device. The corresponding source code is EventHub.cpp. For key input event, Android maps scan code to key code according to a key layout map file. OEM needs customize the key layout map file to match the needs of his own device. It uses the following method to find out the key layout map file.

        // a more descriptive name

        ioctl(mFDs[mFDCount].fd, EVIOCGNAME(sizeof(devname)-1), devname);

        devname[sizeof(devname)-1] = 0;

        device->name = devname;

 

        // replace all the spaces with underscores

        strcpy(tmpfn, devname);

        for (char *p = strchr(tmpfn, ' '); p && *p; p = strchr(tmpfn, ' '))

            *p = '_';

 

        // find the .kl file we need for this device

        const char* root = getenv("ANDROID_ROOT");

        snprintf(keylayoutFilename, sizeof(keylayoutFilename),

                 "%s/usr/keylayout/%s.kl", root, tmpfn);

        bool defaultKeymap = false;

        if (access(keylayoutFilename, R_OK)) {

            snprintf(keylayoutFilename, sizeof(keylayoutFilename),

                     "%s/usr/keylayout/%s", root, "qwerty.kl");

            defaultKeymap = true;

        }

        device->layoutMap->load(keylayoutFilename);

OEM can get the key layout map file name during Android booting, because Android will log the name. The JAVA layer wrapper is KeyInputQueue.java which is used by WindowManagerService.java. It calls EventHub.cpp through JNI. com_android_server_KeyInputQueue.cpp is the JNI implementation.

 

Input Event Processing

When an activity is to be launched, ActivityManagerService.java calls ActivityThread.java for creating the activity.

                activity.attach(appContext, this, getInstrumentation(), r.token, app,

                        r.intent, r.activityInfo, title, r.parent, r.embeddedID,

                        r.lastNonConfigurationInstance, config);

Then Activity.java creates a PhoneWindow.java instance to represent the activity. Each PhoneWindow.java contains a DecorView.java instance as the root of any views in the activity.

        mWindow = PolicyManager.makeNewWindow(this);

        mWindow.setCallback(this);

After an activity is created, ActivityManagerService.java calls ActivityThread.java for resume the activity. At this time, ActivityThread.java calls WindowManagerImpl.java to add the DecorView.java instance.

                r.window = r.activity.getWindow();

                View decor = r.window.getDecorView();

                decor.setVisibility(View.INVISIBLE);

                ViewManager wm = a.getWindowManager();

                WindowManager.LayoutParams l = r.window.getAttributes();

                a.mDecor = decor;

                l.type = WindowManager.LayoutParams.TYPE_BASE_APPLICATION;

                wm.addView(decor, l);

WindowManagerImpl.java news a ViewRoot.java instance. ViewRoot.java has a static member which will be only initialized once for each process. It’s used to let WindowManagerService.java know that there is a process linked now.

            if (!mInitialized) {

                try {

                    sWindowSession = IWindowManager.Stub.asInterface(

                            ServiceManager.getService("window"))

                            .openSession(new Binder());

                    mInitialized = true;

                } catch (RemoteException e) {

                }

            }

After ViewRoot.java instance is created, WindowManagerImpl.java calls its setView API to bind the ViewRoot.java for the DecorView.java.

        // do this last because it fires off messages to start doing things

        root.setView(view, wparams, panelParentView);

In setView API, ViewRoot.java finally draws the DecorView.java and registers an IWindow instance to WindowManagerService.java.

                    res = sWindowSession.add(mWindow, attrs,

                            getHostVisibility(), mCoveredInsets);

After that WindowManagerService.java directly communicates (including dispatching input event) with this IWindow instance in ViewRoot.java. Then ViewRoot.java calls View.java to process input event. For example, for key event, dispatchKeyEvent API in View.java will be called.

    public boolean dispatchKeyEvent(KeyEvent event) {

        // If any attached key listener a first crack at the event.

        //noinspection SimplifiableIfStatement

        if (mOnKeyListener != null && (mViewFlags & ENABLED_MASK) == ENABLED

                && mOnKeyListener.onKey(this, event.getKeyCode(), event)) {

            return true;

        }

   

        return event.dispatch(this);

    }

View.java detects if any key listener is registered for this view. If so, the key event will be handled by the key listener. Otherwise, it calls OnKeyDown/OnKeyUp as usual.

 

All the key listener implementations are under frameworks/base/core/java/android/text/method folder.

MultiTapKeyListener.java       - if the keypad is NUMERIC keypad, this listener is used to transform digit inputs to characters.

QwertyKeyListener.java – if the keypad is QWERTY keypad, this listener is used.

Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요

  1. BlogIcon rolex replica 2013.01.22 16:57  댓글주소  수정/삭제  댓글쓰기

    팁 주셔서 감사합니다, 아마도이 호리 호리한 내 순수 지성의 인식 작용 마케팅을 사용할 수 있습니다 그리고 상호 작용을 시도에 어떠한 인종의 미디어를 사용하고 있으며 사람들이 유효 그린 저에 큰 친근합니다.


출처 : http://www.aesop.or.kr/?document_srl=65021


=============================


http://android.git.kernel.org/?p=platform/development.git;a=blob;f=apps/SdkSetup/Android.mk;h=b89baaf8f5838fe4bf90b15ec22e654f395198ac;hb=master

 

 

development/apps/SdkSetup/Android.mk

 

파일의 중간에

 

LOCAL_MODULE_TAGS := foo

 

이렇게 한줄 써주면

 

out/target/product/generic/system/app/SdkSetup.apk

 

파일이 생깁니다.

 

즉, 이 파일이 생성된 android root filesystem image의 경우

 

keyquard가 동작하게 되며 homekey도 먹게 됩니다.

 

==============

 

다른 방법은 몇가지 더 있습니다만..........sqlite를 이용해서 db에 직접 써 넣는 방법

코드를 고치는 방법 등등이 있습니다.


Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요

  1. BlogIcon Mulberry replica handbags 2012.09.10 17:43  댓글주소  수정/삭제  댓글쓰기

    아침형 인간이 되려고 노력중입니다.
    쉽지만은 않네요.ㅋㅋ

안드로이드에서 데이터를 저장하고 가져오기 위해 제공하는 네 가지 메커니즘

- Preference, File, Database, Network

Preference 는 primitive data type 에 대한 키와 밸류 쌍을 저장하고 가져오는 초경량 

메커니즘이다. 애플리케이션의 환경설정 정보를 저장하기 위해 사용한다. 

SharedPreferences pref = getSharedPreferences("MYPREF", 0);
SharedPreferences.Editor editor = pref.edit();
editor.putString("key_account", "account");
editor.commit();
   
위와 같이 하면 MYPREF.xml 파일이 생성되는데 위치는 DDMS 에서 확인할 수 있다.

/data/data/[APPLICATION_NAME]/shared_prefs/MYPREF.xml

또한 이 것의 내용을 확인하고 싶으면 DDMS 에서 제공하는 Pull a file from the device 버튼을 눌러

내 PC 로 가져오면 된다.

꺅.ㅋ


Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요

  1. BlogIcon burberry outlet online 2012.09.10 17:43  댓글주소  수정/삭제  댓글쓰기

    아침형 인간이 되려고 노력중입니다.
    쉽지만은 않네요.ㅋㅋ

  2. ㅎㅎ 2012.11.08 13:53  댓글주소  수정/삭제  댓글쓰기

    좋은정보! 감사합니다

  3. BlogIcon replica watches 2013.01.22 16:58  댓글주소  수정/삭제  댓글쓰기

    난 다음주에 프리젠 테이션을, 그리고 그러한 정보에 대한 모습에입니다.

http://blog.naver.com/jang2818?Redirect=Log&logNo=20078863663

링크 참조^^
Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요

  1. BlogIcon hermes replica handbags 2012.09.10 17:42  댓글주소  수정/삭제  댓글쓰기

    아침형 인간이 되려고 노력중입니다.
    쉽지만은 않네요.ㅋㅋ