ANDROID HACKS #18  非同期処理を行う #19  プログレスバーを使う #20  音声読み上げ機能を使う 担当:いぐさ Twitter : @ginyutok 09/19/11
この資料について この資料は下記の本をベースに勉強会で作成した資料です。 『 Android Hacks 』(株式会社ブリリアントサービス著、オライリー・ジャパン刊) この本の紹介ページが下記にあります。 http://www.oreilly.co.jp/books/9784873114569/ 09/19/11
アジェンダ 非同期処理 ハンドラ プログレスバー プログレスバーによる進捗表示 プログレスバーをタイトルバーに表示 Hack をさらに Hack する 音声読み上げ機能 Hack をさらに Hack する 09/19/11
1.  非同期処理 09/19/11
1. 非同期処理 長時間アプリケーションの応答がない ->  Apprication Not Responding  ダイアログが発生 負荷の高い処理は画面描画の実行とは別のスレッドにするのが一般的 ※ 画面描画はメインスレッドで行わなければならない! 09/19/11
1-1. ハンドラ ハンドラ 他スレッドからメインスレッドに対して処理を依頼する窓口 例: Thread th = new Thread() { public void run() { Handler.post (new Runnable()) { @Override public void run() { mTextView1.setText(“process finish!!”); mProgressDialog.dismiss(); ・・・・・・・・・・・・・・・・・ 09/19/11 ハンドラ これらの処理はメインスレッドで行われる
2.  プログレスバー 09/19/11
2. プログレスバー プログレスバー ProgressBar クラス XML に <ProgressBar> タグを埋め込む Android2.1 の場合、 7 種類のプログレスバーが存在 ProgressBarStyle ・・・円状。大きな物は~ Large 、小さなものは~ Small ProgressBarStyleInverse ・・・色を反転した円状のもの。 Large と Small がある ProgressBarStyleHorizontal ・・・水平方向の棒状の物。 Indeterminate 属性の false 指定に対応 ( 後述 ) 09/19/11
2-1. プログレスバーによる進捗表示 ProgressBar クラス Max ・・・全体量を表す ( デフォルト値: 100) Progress ・・・進捗状況 ( メイン ) SecondaryProgress ・・・進捗状況 ( サブ ) 例:動画のストリーミング再生 Progress ・・・再生状況 SecondaryProgress ・・・バッファリング状況 09/19/11
2-1. プログレスバーによる進捗表示 ProgressBar クラス Indeterminate 属性 :進捗状況を明確に表示しないか true( 表示しない ) : Max の値が不定になる false( 表示する ) : Max の値が一定 Indeterminate 属性は ProgressBarStyleHorizontal のみ有効 他のスタイルでは false になっているが、進捗状況を明確に表示しないので、今後の仕様変更に注意 09/19/11
2-2. プログレスバーにタイトルバーに表示 タイトルバーにもプログレスバーが表示できる 記述は Activity クラスのメソッド内に requestWindowFeature メソッドでタイトルバー内にプログレスバー表示を指定 引数で形状を指定できる setProgress ~メソッドで Progress や SecondaryProgress の値を設定 Max の値は指定できない (0 ~ 10000) 09/19/11
2-3.Hack をさらに Hack する 多少時間がかかるアプリの起動画面にプログレスバーを利用 状態に応じてプログレスバーの進捗が伸びていく 09/19/11
2-3.Hack をさらに Hack する 概要 起動中画面  : progressview 起動後画面: mainview これらを showProgress メソッドと hideProgress メソッドで表示・非表示を切り替える 09/19/11
3.  音声読み上げ機能 09/19/11
3. 音声読み上げ機能 TextToSpeech クラス TextToSpeech.OnInitListener を実装する必要がある 日本語未対応 ローマ字ならそれっぽく読ませることも出来る? コンストラクタの引数は 第 1 引数: Context クラス (Activity や Service の基底クラス ) 第 2 引数:  TextToSpeech.OnInitListener を実装したクラス Locale クラスで言語設定 09/19/11
3. 音声読み上げ機能 TextToSpeech クラス Speak メソッド で読み上げ 第 1 引数:読み上げる文字列 第 2 引数:キューの追加方法 第 3 引数:別途のパラメータ キューの追加方法 QUEUE_FLUSH :読み上げ中でも新しい文字列を読み上げる(待ち行列も破棄) QUEUE_ADD :待ち行列に追加 09/19/11
3-1.Hack をさらに Hack する 自分で好きなテキストを読み上げさせたり、ピッチや速度を変更できるカスタムビューを作成する サンプルプログラムがあるので、いろいろやってみると面白いです プログラムの詳細は省略 09/19/11
参考 URL Android Developers http://developer.android.com/intl/ja/index.html 09/19/11

Android Hacks - Hack18 ~ Hack20

  • 1.
    ANDROID HACKS #18 非同期処理を行う #19 プログレスバーを使う #20 音声読み上げ機能を使う 担当:いぐさ Twitter : @ginyutok 09/19/11
  • 2.
    この資料について この資料は下記の本をベースに勉強会で作成した資料です。 『Android Hacks 』(株式会社ブリリアントサービス著、オライリー・ジャパン刊) この本の紹介ページが下記にあります。 http://www.oreilly.co.jp/books/9784873114569/ 09/19/11
  • 3.
    アジェンダ 非同期処理 ハンドラプログレスバー プログレスバーによる進捗表示 プログレスバーをタイトルバーに表示 Hack をさらに Hack する 音声読み上げ機能 Hack をさらに Hack する 09/19/11
  • 4.
  • 5.
    1. 非同期処理 長時間アプリケーションの応答がない-> Apprication Not Responding ダイアログが発生 負荷の高い処理は画面描画の実行とは別のスレッドにするのが一般的 ※ 画面描画はメインスレッドで行わなければならない! 09/19/11
  • 6.
    1-1. ハンドラ ハンドラ他スレッドからメインスレッドに対して処理を依頼する窓口 例: Thread th = new Thread() { public void run() { Handler.post (new Runnable()) { @Override public void run() { mTextView1.setText(“process finish!!”); mProgressDialog.dismiss(); ・・・・・・・・・・・・・・・・・ 09/19/11 ハンドラ これらの処理はメインスレッドで行われる
  • 7.
  • 8.
    2. プログレスバー プログレスバーProgressBar クラス XML に <ProgressBar> タグを埋め込む Android2.1 の場合、 7 種類のプログレスバーが存在 ProgressBarStyle ・・・円状。大きな物は~ Large 、小さなものは~ Small ProgressBarStyleInverse ・・・色を反転した円状のもの。 Large と Small がある ProgressBarStyleHorizontal ・・・水平方向の棒状の物。 Indeterminate 属性の false 指定に対応 ( 後述 ) 09/19/11
  • 9.
    2-1. プログレスバーによる進捗表示 ProgressBarクラス Max ・・・全体量を表す ( デフォルト値: 100) Progress ・・・進捗状況 ( メイン ) SecondaryProgress ・・・進捗状況 ( サブ ) 例:動画のストリーミング再生 Progress ・・・再生状況 SecondaryProgress ・・・バッファリング状況 09/19/11
  • 10.
    2-1. プログレスバーによる進捗表示 ProgressBarクラス Indeterminate 属性 :進捗状況を明確に表示しないか true( 表示しない ) : Max の値が不定になる false( 表示する ) : Max の値が一定 Indeterminate 属性は ProgressBarStyleHorizontal のみ有効 他のスタイルでは false になっているが、進捗状況を明確に表示しないので、今後の仕様変更に注意 09/19/11
  • 11.
    2-2. プログレスバーにタイトルバーに表示 タイトルバーにもプログレスバーが表示できる記述は Activity クラスのメソッド内に requestWindowFeature メソッドでタイトルバー内にプログレスバー表示を指定 引数で形状を指定できる setProgress ~メソッドで Progress や SecondaryProgress の値を設定 Max の値は指定できない (0 ~ 10000) 09/19/11
  • 12.
    2-3.Hack をさらに Hackする 多少時間がかかるアプリの起動画面にプログレスバーを利用 状態に応じてプログレスバーの進捗が伸びていく 09/19/11
  • 13.
    2-3.Hack をさらに Hackする 概要 起動中画面 : progressview 起動後画面: mainview これらを showProgress メソッドと hideProgress メソッドで表示・非表示を切り替える 09/19/11
  • 14.
  • 15.
    3. 音声読み上げ機能 TextToSpeechクラス TextToSpeech.OnInitListener を実装する必要がある 日本語未対応 ローマ字ならそれっぽく読ませることも出来る? コンストラクタの引数は 第 1 引数: Context クラス (Activity や Service の基底クラス ) 第 2 引数: TextToSpeech.OnInitListener を実装したクラス Locale クラスで言語設定 09/19/11
  • 16.
    3. 音声読み上げ機能 TextToSpeechクラス Speak メソッド で読み上げ 第 1 引数:読み上げる文字列 第 2 引数:キューの追加方法 第 3 引数:別途のパラメータ キューの追加方法 QUEUE_FLUSH :読み上げ中でも新しい文字列を読み上げる(待ち行列も破棄) QUEUE_ADD :待ち行列に追加 09/19/11
  • 17.
    3-1.Hack をさらに Hackする 自分で好きなテキストを読み上げさせたり、ピッチや速度を変更できるカスタムビューを作成する サンプルプログラムがあるので、いろいろやってみると面白いです プログラムの詳細は省略 09/19/11
  • 18.
    参考 URL AndroidDevelopers http://developer.android.com/intl/ja/index.html 09/19/11