@blog.justoneplanet.info

日々勉強

Androidでキーボードの設定画面に遷移させる

設定画面から遷移できるキーボードを有効化する画面に遷移する。

Intent intent = new Intent();
intent.setAction(Settings.ACTION_INPUT_METHOD_SETTINGS);
startActivity(intent);

入力に使用するキーボードを選択するダイアログを表示する。

InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
inputMethodManager.showInputMethodPicker();

任意のパッケージ名のInputMethodが有効化されているか判定する。

private boolean isEnabled(Context context) {
    InputMethodManager inputMethodManager = InputMethodManager.class.cast(
            context.getSystemService(Context.INPUT_METHOD_SERVICE)
    );
    if (inputMethodManager == null) {
        Log.i("InputMethodManager", "not found.");
        return false;
    }
    String packageName = context.getPackageName();
    // 有効なInputMethod一覧に任意のパッケージ名が含まれているか確認する
    for (InputMethodInfo inputMethodInfo : inputMethodManager.getEnabledInputMethodList()) {
        if (inputMethodInfo.getServiceName().startsWith(packageName)) {
            return true;
        }
    }
    return false;
}

任意のパッケージ名のInputMethodが入力方法として選択されているかどうか判定する。

private boolean isDefault(Context context) {
    InputMethodInfo info = null;
    InputMethodManager inputMethodManager = InputMethodManager.class.cast(
            context.getSystemService(Context.INPUT_METHOD_SERVICE)
    );
    if (inputMethodManager == null) {
        Log.i("InputMethodManager", "not found.");
        return false;
    }
    String packageName = context.getPackageName();
    // InputMethod一覧に任意のパッケージ名が含まれているか確認する
    for (InputMethodInfo inputMethodInfo : inputMethodManager.getInputMethodList()) {
        if (inputMethodInfo.getPackageName().equals(packageName)) {
            info = inputMethodInfo;
        }
    }
    if (info == null) {
        Log.i("InputMethodInfo", "not found.");
        return false;
    }

    // infoのidと現在有効になってるIMEのidを比較する
    String currentIme = android.provider.Settings.Secure.getString(
        context.getContentResolver(),
        android.provider.Settings.Secure.DEFAULT_INPUT_METHOD
    );
    return info.getId().equals(currentIme);
}

AWS SDK for Pythonでインスタンスを起動してELBに追加する

pip

いれてなかったので。

wget http://peak.telecommunity.com/dist/ez_setup.py
sudo python ez_setup.py
sudo easy_install pip

何となくPythonのSDKを使うことにした。

botoのインストール

sudo pip install -U boto

code

import boto.ec2
import boto.ec2.elb

key = 'your key'
secret = 'your secret'
instance = 'instance'
balancer = 'balancer name'
region = 'region'
zone = 'zone'

connEc2 = boto.ec2.connect_to_region(
  region,
  aws_access_key_id=key,
  aws_secret_access_key=secret
)
connElb = boto.ec2.elb.connect_to_region(
  region,
  aws_access_key_id=key,
  aws_secret_access_key=secret
)

connEc2.start_instances(instance)
balancers = connElb.get_all_load_balancers(load_balancer_names=[balancer])
balancers[0].register_instances(instance)
balancers[0].enable_zones([zone])

反対の動作は以下のようになる。

balancers = connElb.get_all_load_balancers(load_balancer_names=[balancer])
balancers[0].deregister_instances(instance)
balancers[0].disable_zones([zone])
connEc2.stop_instances(instance)