Androidアプリ開発で役立つマルチメディアとテストの知識:Android技術者認定試験「ACE」ドリル(10)(2/2 ページ)
今回の演習は、リッチコンテンツを取り扱うようなアプリの開発に必須の「マルチメディア」と、単体テストを自動化でき品質向上の助けとなるJUnitに関する「テスト」の知識についてだ。
解答
演習1:答え(4)
「android.media」パッケージのクラスを問う問題です。解答から示しますと、MediaManagerは存在しません。よって、選択肢(4)が誤りとなり、ここでの正解となります。
(1)の「MediaPlayer」は、オーディオやビデオファイルの操作(再生/停止など)を行うためのクラスになります。(2)の「MediaRecorder」は、録画と録音に用いるクラスです。具体的には以下のメソッドを持ち、これらを設定することにより録音が可能になります(表1)。
メソッド名 | 概要 |
---|---|
setAudionSource | 入力ソースの指定 |
setOutputFormat | 出力フォーマットの指定 |
setAudioEncoder | エンコーダーの指定 |
setOutputFile | 出力先の指定 |
prepare | 録音準備 |
start | 録音開始 |
stop | 録音停止(再開始可能) |
release | リソースの開放(再開始不可) |
表1 MediaRecorderクラスのメソッド(一部) |
注意点として、MediaRecorderのオブジェクトは状態遷移を持っています。そのため、呼び出し順を守らなければ正しく動作しません。上記の表1で示したメソッドを上から順番に呼び出せば、正しく録音することが可能です。せっかくなので、この機会にメソッド名だけでなく順番も覚えてしまいましょう。
残りの選択肢(3)の「AudioManager」は、音量や音の種類の設定、また現在の設定の取得を行うクラスとなります。
演習2:答え(3)
Androidでサポートしているビデオフォーマットを問う問題です。まずは、サポートしているビデオフォーマットを一覧で確認しましょう(表2)。
フォーマット | ファイルタイプ |
---|---|
H.263 | 3GPP(*.3gp)、MPEG-4(*.mp4) |
H.264/AVC | 3GPP(*.3gp)、MPEG-4(*.mp4)、MPEG-TS(*.ts:Android 3.0以上) |
MPEG-4 SP | 3GPP(*.3gp) |
VP8 | WebM(*.webm)、Matroska(*.mkv:Android 4.0以上) |
表2 Androidでサポートしているビデオフォーマット |
表2より、選択肢(3)の「H.265」が誤りとなり、ここでの正解となります。
このフォーマット一覧は、開発そのもので覚えておく必要はないのですが、ACE対策として覚えておいて損はないでしょう。
演習3:答え(3)
演習3は、Androidのテストフレームワークに関する問題です。ここでの正解となる誤っている選択肢は、(3)となります。
Androidのテストフレームワークを起動するには、「AndroidManifest.xml」にテスト用の記述をする必要があります。しかし、そのテスト用の記述をリリースするアプリケーションに直接記載してしまうことは好ましくありません。また、リリースするアプリケーションにテストコードを入れ込んでしまうことも避けなければなりません。
このような観点から、Androidではテストプロジェクトを作成するのが一般的です。開発環境として使われるEclipseにおいてもテストフレームワークをサポートするようになっています。
ちなみに、AndroidManifest.xmlに指定するタグは<instrumentation>タブと<uses-library>タグになります。本連載では取り上げませんが、ご興味のある方は調べてみましょう。
(1)に関しては、JUnitの通常のパッケージ名である「junit.framework」でなく「android.test」であることに注意しましょう。(2)に関しては、以下にAndroidで用意されている拡張したTestCaseクラスの表を示します(表3)。JUnit経験者はこれを機会に覚えておきましょう。
クラス | 概要 |
---|---|
ActivityInstrumentationTestCase2 | 画面操作のテストに利用 |
ActivityUnitTestCase | Activityのテストに利用 |
SingleLaunchActivityTestCase | 各テストメソッドでどういうインスタンスのActivityを用いたい場合に利用 |
ServiceTestCase | Serviceのテストに利用 |
ProviderTestCase2 | Providerのテストに利用 |
ApplicationTestCase | アプリケーションのテストに利用 |
表3 Androidで用意されているTestCase |
(4)に関しては、「JUnit4」でないことに注意してください。Androidに用意されているテストフレームワークは、「JUnit3」ベースとなります。
以上で、マルチメディアとテストに関する演習は終了です。今回のナレッジ・スキルは開発現場で非常に役立つものなので、しっかりと理解しておきたいですね。
一方で、本連載の主目的であるACE対策という観点で見ると、この単元は学習の優先度を下げるべき単元だと筆者は考えます。なぜなら、マルチメディアは単純な知識を問う問題なら太刀打ちできても、コードを問う問題は実際に開発経験がないと非常に難しいからです。また、テストに関しては、そもそもJUnitを使ったことがない方にしてみれば、JUnitそのものを学ぶところから始めなければなりません(もちろんJUnitを理解していれば、後はAndroidで拡張された機能を理解すればよいだけです)。よって、ACE対策という観点では、この2つの単元は優先度を低くして臨むべきだといえるでしょう。
さて、Android技術スキル標準「ATSS(Android Technical Skill Standard)」の順に従えば、次は「ネイティブ」を取り上げるわけですが、この単元は実際の開発経験がないと非常に難しく、C言語の知識も必要になります。そのため、「ベーシック」レベルを標ぼうする本連載では割愛することにします。
というわけで、次回は1つ飛ばして、「アプリケーション管理」と「アプリケーション配布」について学んでいきます。お楽しみに! (次回に続く)
Copyright © ITmedia, Inc. All Rights Reserved.