スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

マッシュルームアプリとかキャンディアプリを作ってみた



やっぱりAndroidのIMEはシメジですよね~
いつも大変お世話になっております。

ところで最近の和製Android端末なら赤外線モジュール積んでいるんで、アドレス交換とかも楽ですが、
よく考えなくてもDesireさんにはそんなモノありません(´;ω;`)

で、そうするとどうなるか。

・昔ながらのメールで連絡先送るね~

になります。




よね?

そう、自分の電話番号をマッシュルームで呼び出せば便利じゃね?

ってことで今更ながら、マッシュルームアプリを作ってみました。




細かい詳細はadamrockerさんのサイトへ

まずは、上記サイトを読んだ上で、作ってくれている「MushroomTemplate」を参考に…というかほぼコピーというか…



public class MyInfo extends Activity {

	private static final String ACTION_INTERCEPT = "com.adamrocker.android.simeji.ACTION_INTERCEPT";
	private static final String REPLACE_KEY = "replace_key";

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		Intent it = getIntent();
		String action = it.getAction();
		// Simejiからの呼び出し
		if (action != null && ACTION_INTERCEPT.equals(action)) {
			replace( _getMyTelNum());

			return;
		}
		//setContentView(R.layout.main);
		finish();
	}


	/**
	 * 元の文字を置き換える
	 * @param result Replacing string
	 */
	private void replace(String result) {
		Intent data = new Intent();
		data.putExtra(REPLACE_KEY, result);
		setResult(RESULT_OK, data);
		finish();
	}

	/**
	 * 自分の電話番号取得
	 * @return 電話番号文字列
	 */
	private String _getMyTelNum(){
		TelephonyManager ts	= null;
		String returnStr	= null;

		// エラーチェックとかはとりあえず無視
		ts = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
		returnStr = ts.getLine1Number();

		return returnStr;
	}

}


もとの文字列を置き換えるもなにも、欲しいのは電話番号だけなので、
入力されてきた文字列なんて無視です。(ぉぃ)
ちゃんと作るなら、メソッド内でエラーチェックしたりなんだりしますが、
メンドイのでその辺も放置

Androidで自分の電話番号を取得する為にはTelephonyManagerを使うため、マニフェストに
・< uses-permission android:name="android.permission.READ_PHONE_STATE" />
の記述(パーミッションの指定)を忘れずに

とりあえず実際に動かしてみます。
とりあえず何か入力する画面にカーソルを合わせ…
01_mush_sample.png

おもむろにシメジボタンを押すと、味気ない標準のアイコンとセンスのないアプリ名Topに出てくるw
02_mush_sample.png

とりあえず押して見るとちゃんと電話番号が!
03_mush_sample.png


流石にこれだけじゃつまんないので、ついでにキャンディー化してみましょう。


public class MyInfo extends Activity {

	// マッシュルーム
	private static final String ACTION_INTERCEPT = "com.adamrocker.android.simeji.ACTION_INTERCEPT";
	private static final String REPLACE_KEY = "replace_key";

	// キャンディ
	private static final String ACTION_INJECTION = "com.adamrocker.android.simeji.ACTION_INJECTION";
	private static final String CANDITATE_KYE = "candidate_key";

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		Intent it = getIntent();
		String action = it.getAction();
		// Simejiからの呼び出し
		if (action != null && ACTION_INTERCEPT.equals(action)) {
			replace( _getMyTelNum());
			return;

		}else if(action != null && ACTION_INJECTION.equals(action)){
			_canditate();
			return;
		}
		//setContentView(R.layout.main);
		finish();
	}

	// 中略

	/**
	 * 文字配列の返却
	 */
	private void _canditate(){
		ArrayList telnums = null;
		JSONArray jsons = null;
		Intent data = new Intent();
		String myInfo = null;
		String telhead = null;
		String telbody1 = null;
		String telbody2 = null;

		myInfo = _getMyTelNum();

		telhead = myInfo.substring(0, 3);
		telbody1 = myInfo.substring(3, 7);
		telbody2 = myInfo.substring(7, 11);

		telnums = new ArrayList();
		telnums.add(myInfo);
		telnums.add(telhead + "-" + telbody1 + telbody2);
		telnums.add(telhead + "-" + telbody1 + "-" + telbody2);

		jsons = new JSONArray(telnums);
		data.putExtra(CANDITATE_KYE, jsons.toString());

		setResult(RESULT_OK, data);
		finish();//キャンディーを終了して複数の文字をSimejiに渡す
	}

}

上の方のソースにちょっと足して変更しただけ。
あとはマニフェスト上にキャンディ用のインテントフィルタを追加するのを忘れずに


何か入力する画面にカーソルを合わせ…
04_mush_sample.png

おもむろに「+」ボタン(「ま」の下)を押すと、さっきと同じアプリ名がTopに出てくる
05_mush_sample.png

とりあえず押して見ると今度は変換候補に電話番号が!
06_mush_sample.png



とまあ、すごく簡単にIME拡張出来ましたw
これもステキなIMEソフトを無料で提供してくれているadamrockerさんのお陰です。

そしてやっぱりAndroidは面白い。
家でプログラムヤル気になるしね。

どう考えても BREWとかBREWとかBREWとか…は…、家でヤル気になんね~し…
→コンパイル環境も家にはないけど…


スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

tag : android サンプルソース

プロフィール

駄猫

Author:駄猫

Twitter
その他
最新記事
カテゴリ
月別アーカイブ
検索フォーム
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。