連載
» 2013年05月24日 16時30分 公開

TwilioとRailsで作る、電話でテキスト読み上げアプリAndroidアプリちょい足し開発レシピ(2)(5/5 ページ)

[諏訪悠紀,クラスメソッド]
前のページへ 1|2|3|4|5       

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も触り始めました。


ブログ


前のページへ 1|2|3|4|5       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。