TwilioならLINEみたいな通話機能をカンタン実装できる!:Androidアプリちょい足し開発レシピ(3)(4/4 ページ)
AndroidアプリにさまざまなWebサービスやライブラリを「ちょい足し」することで魅力的なアプリに大変身させる方法を紹介する連載。今回は、クラウド電話APIサービスTwilioを使った音声通話アプリの作り方を紹介。自作アプリにコミュニケーション機能を追加してみよう。
着信したときに表示するActivityの実装
最後に着信があったときに表示するActivityを実装しましょう。このActivityはTwilioから接続要求があったときに自動で起動するActivityです。今回は着信を許可するボタンと拒否するボタンを置き、着信があったときに受け取るか拒否するか選べるようにします。以下のようなレイアウトになります。
それでは、Activityを実装しましょう。「IncomingActivity」という名前でクラスを新規作成し、以下のように実装します。
package jp.classmethod.android.sample.twiliophone; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import com.twilio.client.Connection; import com.twilio.client.Device; public class IncomingActivity extends Activity implements OnClickListener { private Connection mConnection; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_incoming); // IntentからConnectionを受け取る Intent intent = getIntent(); Device device = intent.getParcelableExtra(Device.EXTRA_DEVICE); Connection connection = intent.getParcelableExtra(Device.EXTRA_CONNECTION); if (device != null && connection != null) { intent.removeExtra(Device.EXTRA_DEVICE); intent.removeExtra(Device.EXTRA_CONNECTION); if (mConnection != null) { mConnection.disconnect(); } mConnection = connection; } findViewById(R.id.accept).setOnClickListener(this); findViewById(R.id.reject).setOnClickListener(this); } @Override protected void onPause() { super.onPause(); if (mConnection != null) { // Activityから離れたら切断する mConnection.disconnect(); } } @Override public void onClick(View view) { switch (view.getId()) { case R.id.accept: if (mConnection != null) { // 接続を許可し、通話を開始する mConnection.accept(); } break; case R.id.reject: if (mConnection != null) { if (mConnection.isIncoming()) { // 接続を拒否する mConnection.reject(); } else { // 通話中の場合は切断する mConnection.disconnect(); } } finish(); break; } } }
IncomingActivityでは、まずonCreate()でIntentからDeviceインスタンスとConnectionインスタンスを受け取ります。これらはTwilioClientServiceが着信があったときに生成してくれるインスタンスで、Connectionインスタンスを使って着信のあった接続の許可(または拒否)を処理できます。
次に着信を受けるボタン(「accept」というID)と着信を拒否するボタン(「reject」というID)にOnClickListenerをセットします。着信を受けるボタンではConnectionインスタンスのaccept()メソッドを呼び出し、着信を許可して通話を開始します。着信を拒否するボタンではreject()メソッドを呼び出し、着信を拒否します。
また、通話中の場合はdisconnect()メソッドを呼び出して通話を切断するようにしておきましょう。
さらに、onPause()のときにもdisconnect()メソッドを呼び出し、接続を切断するようにしておきましょう。こうすることで通話中のときにIncomingActivityから離れたときに自動的に切断されるようになります。
クライアント通話アプリで電話してみよう
これで、すべての実装が終わりました。クライアントアプリを実行し、通話を試してみましょう。Android端末が2台必要ですので、1台はエミュレータで実行し、もう1台は実機で実行します。
エミュレータ・実機のそれぞれ別々のクライアント名でTwilioに認証し、エミュレータ側から実機のクライアント名へ発信してみます。
実機側でIncomingActivityが表示されれば成功です。通話ボタンを押すと、エミュレータと通話できるようになります。
もっとコミュニケーション!
第2回、第3回はTwilioを使ったアプリを作ってみました。Twilioは「サーバサイドで電話システムを構築するサービス」という印象が強いですが、クライアントと組み合わせることで新しいコミュニケーションサービスを構築できます。コミュニケーション機能が必要なアプリに使ってみてはいかがでしょうか。
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に潜む危険はマルウェアだけはありません。実はアプリの作り方にも注意が必要です。クウと一緒に学びましょう