株式会社ライブキャストロゴ 株式会社ライブキャスト

2011年11月3日 追記
ご注意!
Google Translate API v1が2011年12月1日にサービスが終了いたします。添付のサンプルソースでは、Google Translate API v1を利用していますので、翻訳が正常に機能しない場合がございます。ご承知おきください。

Android Market公開を目指してAndroidアプリを開発する!(バックグランドで動作させる編)では、サービスを常駐させて、バックグラウンドでクリップボードの内容を翻訳する機能を実装しました。

前回のサンプルでは、翻訳が完了したことをユーザに通知するのに、翻訳結果をメッセージ表示するようにしましたが、他のやり方も試してみたいと思います。

翻訳完了時に、以下のようなアイコンが、

ic_menu_info_details

NotificationクラスとNotificationManagerクラスなどを使って、ディスプレイ最上部のツールバーに表示されるようにしました。

icon

前回サンプルのTranslateServiceクラスを以下のように変更しました。

●変更前

	public void run() {
		if (model.isSuccess()) {
			dao.insert(model);
			Toast.makeText(this, model.getTranslated(), Toast.LENGTH_SHORT).show();
		}
	}

●変更後

	public void run() {
		if (model.isSuccess()) {
			dao.insert(model);

			NotificationManager manager =
				(NotificationManager)(getApplicationContext().getSystemService(NOTIFICATION_SERVICE));

			PendingIntent intent = PendingIntent.getActivity(this, 0, null, Intent.FLAG_ACTIVITY_NEW_TASK);
			Notification notification = new Notification(android.R.drawable.ic_menu_info_details, getText(R.string.app_name), System.currentTimeMillis());
			notification.setLatestEventInfo(getApplicationContext(), getText(R.string.app_name), "translated!", intent);
			notification.flags = Notification.FLAG_AUTO_CANCEL;
			manager.notify(R.string.app_name, notification);
		}
	}

ツールバーに表示されたアイコンを、指で押さえて下にドラッグすると、

notify

こんな感じになりました!スマートな通知の仕方になって、前より素敵になったと思います。

サンプルソース