TwilioとRailsで作る、電話でテキスト読み上げアプリ:Androidアプリちょい足し開発レシピ(2)(5/5 ページ)
AndroidアプリにさまざまなWebサービスやライブラリを「ちょい足し」することで魅力的なアプリに大変身させる方法を紹介する連載。クラウド電話APIサービスTwilioを使った「自動音声読み上げツール」の作り方を紹介。サーバサイドはRuby on Railsで作成します。
DeviceLoaderクラスを呼び出す
このクラスを呼び出すタイミングはActivityに実装したonInitialized()メソッドの中です。またDeviceLoaderはAsyncTaskLoaderを使っているので、ActivityにLoaderCallbacks<Device>を実装し、以下の処理を追加しましょう。
private static final int TWILIO_PHONE_LOADER = 0; @Override public void onInitialized() { Log.d(TAG, "Twilioクライアントの初期化が完了しました"); // TwilioPhoneLoaderを呼び出す getSupportLoaderManager().initLoader(TWILIO_PHONE_LOADER, null, this); } @Override public Loader<Device> onCreateLoader(int id, Bundle bundle) { DeviceLoader loader = new DeviceLoader(getApplicationContext()); loader.forceLoad(); return loader; } @Override public void onLoadFinished(Loader<Device> loader, Device device) { Log.d(TAG, "デバイスの準備が完了しました"); mDevice = device; getSupportLoaderManager().destroyLoader(TWILIO_PHONE_LOADER); } @Override public void onLoaderReset(Loader<Device> loader) { }
これでDeviceインスタンスを非同期で取得し、Activityにメンバ変数として保持できるようになりました。
ボタンを押したときの処理
次に、ボタンを押したときの処理を実装します。onClick()メソッドに以下の処理を追加しましょう。
@Override public void onClick(View v) { if (mDevice != null) { // 入力されたメッセージをパラメータに渡し、接続する EditText editText = (EditText) findViewById(R.id.edit_text); String message = editText.getText().toString(); HashMap<String, String> params = new HashMap<String, String>(); params.put("message", message); mDevice.connect(params, null); } else { Log.e(TAG, "デバイスがありません"); } }
アプリから電話を発信したい場合、Device.connect()メソッドを呼びます。第1引数には渡したいパラメータをHashMap<String, String>でセットします。今回はEditTextで入力された値をmessageというパラメータで渡したいので、HashMapに格納して渡しています。
また第2引数には、ConnectionListenerを渡しますが、今回は使わないのでnullを渡しておきます。
実際に動かしてみよう
以上で実装完了です。ActivityではonCreate()メソッド内でTwilioPhoneLoaderを呼び出し、取得したTwilioPhoneインスタンスを保持しておきます。ボタンをタップするとTwilioPhone.connect()が呼び出され、Twilioに接続します。
Twilioはアプリ用サーバのTwiMLを取得し、設定したメッセージを音声で読み上げてくれます。
それでは、実際に動作させてみましょう。アプリを起動し、Connectボタンをタップしてください。入力した内容を自動音声で読み上げてくれるはずです。
次回は、LINEみたいにアプリ同士で通話させちゃおう!
今回はTwilioサービスを使って音声を読み上げるアプリを実装しました。次回はさらに発展させ、LINEやcomm、カカオトークみたいにアプリ同士で通話する機能を実装したいと思います。
著者プロフィール
諏訪悠紀
クラスメソッド株式会社に勤務するAndroidプログラマです。UI・UXデザインもとても興味があり、業務で担当することもあります。最近ではObjective-Cも触り始めました。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Android 4.0でアプリ開発を始めるための環境構築
搭載端末の発売で話題のAndroid 4.0。SDKやEclipse、エミュレータなど開発環境を構築してアプリ開発を始めてみよう - Androidで使えるO2O技術まとめ解説
今注目の「O2O」について、現状や概要を紹介し、O2Oを利用したAndroidアプリを作る際に必要な技術要素を1つ1つ解説していきます - モバイルARアプリ開発“超”入門
Webアプリ開発者がオープンソースのライブラリを使い、スマートフォンやタブレットなどのモバイル端末上で動くAR(拡張現実)アプリを作成する手法について解説していきます - AWSとAndroidを直結するSDKで何ができるのか?〜スマートフォンとクラウドをつなぐ技術カタログ(2)
簡単なコーディングでAndroidアプリからAmazon S3のストレージに直接接続できるサンプルを基にSDKの使い方を紹介 - OAuth 2.0を使うソーシャルなAndroidアプリの作り方〜ネイティブアプリで実践! mixi Graph API活用法
OAuth 2.0のソーシャルなWeb APIを使った、Androidで動く簡単なネイティブ・アプリケーションの作り方を解説します - Androidアプリ開発テスト入門
日本Androidの会テスト部が、いままで培ってきたAndroidアプリ開発におけるのテストのノウハウを、実際のテストコード例とともに紹介していきます - イチから始める! Androidセキュリティ
Androidに潜む危険はマルウェアだけはありません。実はアプリの作り方にも注意が必要です。クウと一緒に学びましょう