Transcript
Page 1: Android Hacks - Hack18 ~ Hack20

ANDROIDHACKS#18 非同期処理を行う#19 プログレスバーを使う#20 音声読み上げ機能を使う担当:いぐさ

Twitter : @ginyutok

23/04/12

1

Page 2: Android Hacks - Hack18 ~ Hack20

この資料について• この資料は下記の本をベースに勉強会で作成した資料です。

• 『 Android Hacks』(株式会社ブリリアントサービス著、オライリー・ジャパン刊)

• この本の紹介ページが下記にあります。

• http://www.oreilly.co.jp/books/9784873114569/

23/04/12

2

Page 3: Android Hacks - Hack18 ~ Hack20

アジェンダ1. 非同期処理

1. ハンドラ

2. プログレスバー1. プログレスバーによる進捗表示2. プログレスバーをタイトルバーに表示3. Hackをさらに Hackする

3. 音声読み上げ機能1. Hackをさらに Hackする

23/04/12

3

Page 4: Android Hacks - Hack18 ~ Hack20

1. 非同期処理

23/04/12

4

Page 5: Android Hacks - Hack18 ~ Hack20

1.非同期処理• 長時間アプリケーションの応答がない → Apprication Not

Responding ダイアログが発生

• 負荷の高い処理は画面描画の実行とは別のスレッドにするのが一般的

• ※画面描画はメインスレッドで行わなければならない!

23/04/12

5

Page 6: Android Hacks - Hack18 ~ Hack20

1-1.ハンドラ• ハンドラ

• 他スレッドからメインスレッドに対して処理を依頼する窓口

• 例:Thread th = new Thread() {

public void run() {

Handler.post(new Runnable()) {

@Override public void run() {

mTextView1.setText(“process finish!!”);

mProgressDialog.dismiss();

・・・・・・・・・・・・・・・・・

23/04/12

6

ハンドラハンドラ

これらの処理はメインスレッドで行

われる

これらの処理はメインスレッドで行

われる

Page 7: Android Hacks - Hack18 ~ Hack20

2. プログレスバー

23/04/12

7

Page 8: Android Hacks - Hack18 ~ Hack20

2.プログレスバー• プログレスバー

• ProgressBarクラス• XMLに <ProgressBar>タグを埋め込む• Android2.1の場合、 7種類のプログレスバーが存在

• ProgressBarStyle・・・円状。大きな物は~ Large、小さなものは~ Small

• ProgressBarStyleInverse・・・色を反転した円状のもの。 Largeと Smallがある

• ProgressBarStyleHorizontal・・・水平方向の棒状の物。 Indeterminate属性の false指定に対応 (後述 )

23/04/12

8

Page 9: Android Hacks - Hack18 ~ Hack20

2-1.プログレスバーによる進捗表示• ProgressBarクラス

• Max・・・全体量を表す (デフォルト値: 100)• Progress・・・進捗状況 (メイン )• SecondaryProgress・・・進捗状況 (サブ )

• 例:動画のストリーミング再生• Progress・・・再生状況• SecondaryProgress・・・バッファリング状況

23/04/12

9

Page 10: Android Hacks - Hack18 ~ Hack20

2-1.プログレスバーによる進捗表示• ProgressBarクラス

• Indeterminate属性:進捗状況を明確に表示しないか• true(表示しない ) : Maxの値が不定になる• false(表示する ) : Maxの値が一定

• Indeterminate属性は ProgressBarStyleHorizontalのみ有効• 他のスタイルでは falseになっているが、進捗状況を明確に表示しないので、今後の仕様変更に注意

23/04/12

10

Page 11: Android Hacks - Hack18 ~ Hack20

2-2.プログレスバーにタイトルバーに表示• タイトルバーにもプログレスバーが表示できる

• 記述は Activityクラスのメソッド内に• requestWindowFeatureメソッドでタイトルバー内にプログレスバー表示を指定

• 引数で形状を指定できる• setProgress~メソッドで Progressや SecondaryProgressの値を設定

• Maxの値は指定できない (0~ 10000)

23/04/12

11

Page 12: Android Hacks - Hack18 ~ Hack20

2-3.Hackをさらに Hackする• 多少時間がかかるアプリの起動画面にプログレスバーを利用

• 状態に応じてプログレスバーの進捗が伸びていく

23/04/12

12

Page 13: Android Hacks - Hack18 ~ Hack20

2-3.Hackをさらに Hackする• 概要

• 起動中画面 : progressview• 起動後画面:mainview• これらを showProgressメソッドと hideProgressメソッドで表示・非表示を切り替える

23/04/12

13

Page 14: Android Hacks - Hack18 ~ Hack20

3. 音声読み上げ機能

23/04/12

14

Page 15: Android Hacks - Hack18 ~ Hack20

3.音声読み上げ機能• TextToSpeechクラス

• TextToSpeech.OnInitListenerを実装する必要がある• 日本語未対応

• ローマ字ならそれっぽく読ませることも出来る?• コンストラクタの引数は

• 第 1引数: Contextクラス (Activityや Serviceの基底クラス )

• 第 2引数: TextToSpeech.OnInitListenerを実装したクラス• Localeクラスで言語設定

23/04/12

15

Page 16: Android Hacks - Hack18 ~ Hack20

3.音声読み上げ機能• TextToSpeechクラス

• Speakメソッドで読み上げ• 第 1引数:読み上げる文字列• 第 2引数:キューの追加方法• 第 3引数:別途のパラメータ

• キューの追加方法• QUEUE_FLUSH:読み上げ中でも新しい文字列を読み上げる(待ち行列も破棄)

• QUEUE_ADD:待ち行列に追加

23/04/12

16

Page 17: Android Hacks - Hack18 ~ Hack20

3-1.Hackをさらに Hackする• 自分で好きなテキストを読み上げさせたり、ピッチや速度を変更できるカスタムビューを作成する

• サンプルプログラムがあるので、いろいろやってみると面白いです

• プログラムの詳細は省略

23/04/12

17

Page 18: Android Hacks - Hack18 ~ Hack20

参考 URL• Android Developers

• http://developer.android.com/intl/ja/index.html

23/04/12

18