Androidキーボードイベント送信(アプリケーション層)

1521 ワード

何も言わずにコードを貼ります.
package org.winplus.keydemo;

import android.app.Activity;
import android.app.Instrumentation;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;

public class MenuDemoActivity extends Activity {
    protected static final String TAG = "MenuDemoActivity";

	@Override
    public void onCreate(Bundle savedInstanceState) {
    	requestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        final Button button = (Button) findViewById(R.id.button1);
        button.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				sendKeyCode(KeyEvent.KEYCODE_DPAD_DOWN);
			}
		});
        
        final Button button2 = (Button) findViewById(R.id.button2);
        button2.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				sendKeyCode(KeyEvent.KEYCODE_DPAD_DOWN);
			}
		});
    }
    
	/**
	 *          
	 * @param keyCode
	 */
    private void sendKeyCode(final int keyCode){
		new Thread () {
			public void run() {
				try {
					Instrumentation inst = new Instrumentation();
					inst.sendKeyDownUpSync(keyCode);
				} catch (Exception e) {
					Log.e("Exception when sendPointerSync", e.toString());
				}
			}
		}.start();
	}
}