読書会(プログラミングAndroid)第7回議事録
[ 戻る ]
=====================================================
Java読書会BOF 「プログラミングAndroid」を読む会 第7回
=====================================================
.. csv-table:: 開催概要
"日時", "2013年1月26日 10:00 - 17:00"
"場所", "川崎市産業振興会館 第2会議室"
"出席者(敬称略)", "吉本、岩室、門脇、遠藤、高久、中島、松永、高橋(智)、高橋(徹)、今井(書記)"
議事
====
13.10.3 ネットワーク対応のクエリメソッド
----------------------------------------
(p.354 **UriRequestTask** 〜)
- p.358 コード中ほどの、 ``Log.d()`` のdはdebugの意味、
infoのiなど他のものも提供されている。
- p.359 コード初めのwhileの閉 ``}`` は、p.362の下から5行目の ``}`` !
- p.359 コード while内最初の方の、
``if (eventType == XmlPullParser.END_DOCUMENT)`` は、
whileの条件として書かれているので、これがtrueになることは無いはず→不要。
- すべてのeventTypeを列挙したかったのではないか。
- switch case で書くほうがわかりやすい。
- p.359 コード中ほど、 ``(MEDIA + ":" + CONTENT).equals(startName)`` は、
意味的には ``startName.equals(MEDIA + ":" + CONTENT)`` にしたいなぁ。
- 比較演算子の時は許せないが、定数文字列.equals()はきにくわないが
許容範囲かな。最適化される可能性があるので。
- こう書く人の理由は大抵、 ``startName`` のnullチェックが面倒だからだと思う。
でもここでは外側ifでチェックしている。
- p.359 下のifの条件内 ``(YT + ":" + FORMAT).equals(MOBILE_FORMAT)`` は
真になることない。
→ isMobileFormatがtrueになることはない。
→ p.360上方の ``mediaEntry.put()`` が実行されることはない。何だこのコード?
- 本当は、attrNameがYT + ":" + FORMAT、かつ、attrValueがMOBILE_FORMAT を
表したかったのではないか。
- p.361 コード5行目の、 ``idEntry`` はどこで参照されている? → p.362 中ほどのif
13.10.4 挿入とレスポンスハンドラ
--------------------------------
- p.364 コード2行目 ``insert()`` の第二引数の ``initialValues`` は間違いで、
その上(前頁)でセットした ``valuse`` ではないか。
- p.364 コード中ほどの ``rowID`` とifないの ``rowId`` 、大文字小文字だけで
区別しているのが気持ち悪い。
そもそも、表現しようとしているものが違う。
13.10.5 ファイル管理:サムネールの保存
-------------------------------------
- p.366 FileHandlerFactoryクラスの2行目、 ``mCacheDir`` 等、の ``m`` は何の意味?
- member。Microsoft系のコードでよく見かける。
- p.366 ``mCacheDir + "/" + ID`` 文字列を組み立てるのに、直接書いているところと
p.367で定義している ``getFileName(String)`` を使っているところがあって統一が
とれていないし、修正漏れしやすい。
第4部 高度なトピック
--------------------
14章 マルチメディア
-------------------
14.1 オーディオとビデオ
-----------------------
14.2 オーディオとビデオの再生
-----------------------------
14.2.1 オーディオの再生
-----------------------
- p.374 上方のコード、
``// Uri mediaReference = "http://someUriToaMediaFile.mp3";`` は、
コメントでなければこのような書き方はできるのか?
- ダメ。(コメントの意味としては理解できるが。)
- p.375 ``audio`` 配列が ``short`` 型なのは、量子化が16ビットの
エンコードディングを使っているから。
- p.375 AudioTrack()のパラメータ ``audio.length`` は、その下の説明文中には
「バイト数でのオーディオの長さ」 とあるが、 ``audio`` はshort配列なので、
``audio.length`` では「バイト数でのオーディオの長さ」にはならない(半分の長さ)。
- このパラメータの本当の意味は、塊として扱うバッファの長さらしい。
本文の説明が間違い。
14.2.2 ビデオの再生
-------------------
- p.376 コードの下から4行目、seekToのパラメータで、 ``/2`` をしているのはなぜ?
- 本文で「スキップできる」とあるので、単にその例で全体の半分まで
シークする例が書いてあるだけだろう。
14.3 オーディオの録音とビデオの録画
-----------------------------------
14.3.1 オーディオの録音
-----------------------
- p.381 コード4行目、 ``startAcrivityForResult()`` の第二引数 ``1`` って何?
- resultCode、onActivityResultでどのstartActivityForResult()の結果かを
識別する。自分が区別できれば良いので、自分の都合が良い値でよい。
- 何故コールバック関数にしないのだろう? resultCodeを管理しなければ
ならなくなるのでめんどうだと思うのだが。
- この方が資源を使わないから?
- Activityのライフサイクルとして、呼び出した側がコールバックされるまで、
メモリ上にそのままあるとは限らないから。
- p.382 1行目、「(モノラルかカメラ)」は、「(モノラルかステレオ)」の間違い。
14.3.2 ビデオの録画
-------------------
- p.383 コードの ``AudioEncoder.DEFAULT`` , ``VideoEncode.DEFAULT`` と、
出力ファイル名の拡張子 ``.mp4`` に関して、これらの ``DEFAULT`` エンコーダは
``.mp4`` で保存できることはプログラマの知識としてあるのか?
エンコーダも拡張子もどちらも、 ``DEFAULT`` として外だしするとか、
デフォルトでなくどちらも具体的な値にするとかしたい。
- ``.mp4`` 自体は、いろいろなエンコーディングでいれることができる。
14.4 メディアコンテンツの使用
-----------------------------
15章 位置とマップ
-----------------
15.1 位置にもとづくサービス
---------------------------
15.2 マップ
-----------
15.3 Google Mapsアクティビティ
------------------------------
- p.387 uriパラメータのスキームの3つ目、
``geo:0,0?q my_street_address`` は、 ``geo:0,0?q=my_street_address`` の間違い。
4つ目も同様。
- 一つ目、二つ目の ``latitude, longitude`` のスペースはあってもいいのだろうか。
普通は書かないけど。
15.4 MapViewとMapActivity
-------------------------
15.5 MapViewの使用
------------------
15.6 MapViewとMyLocationOverlayの初期化
---------------------------------------
- p.392 囲みの4行目、「地球の赤道が256ピクセル幅で」の意味は? 実際の赤道に
幅が何センチとかはないよね。
- 赤道一周を広げた長さのこと。メルカトル図法で書かれた世界地図の幅。
15.7 MapActivityの一時停止と再開
--------------------------------
15.8 メニューボタンによるマップの制御
-------------------------------------
15.9 キーパッドを使ったマップの制御
-----------------------------------
- p.396 キーパッドとは?
- ハードキーの事
15.10 MapViewを使わないで位置を取得する
---------------------------------------
15.10.1 マニフェストとレイアウトファイル
----------------------------------------
15.10.2 位置プロバイダへの接続と位置の更新の取得
------------------------------------------------
- p.401 ``requestLocationUpdates()`` のパラメータ、 ``minTime`` と ``minDistance`` は、
or, and どちらで働くのか。or の方が意味がありそうだけど。
15.10.3 位置の更新のエミュレート
--------------------------------
- p.402 下方、longitudeとlatitudeの説明が逆
- longitudeは経度
- latitudeは緯度
- p.403 このツール(DDMS)にKMLでデータを与えた場合、各データが送られる間隔は?
- 一気に送られてくる。
- ちなみに、KMLにはタイムスタンプを含めることもできるが、
それが使用されるかは不明。
使用されたとしても、開始からの経過時間ではなく絶対的な時刻なので
使いにくいだろう。
16章 センサー、NFC、スピーチ、ジェスチャ、アクセシビリティ
----------------------------------------------------------
16.1 センサー
-------------
- p.408 定数名 ``SENSOR_DELAY_`` *foo* が意味する値は、
遅延ではなく比率(の逆数の間隔)。
定数名に ``DELAY`` とある以外、定数の説明や引数の説明にはrateが使われている。
- ``registerListener()`` のコード上では、これらの定数値が渡されたときはどこか
別に定義されている間隔ミリ秒を、
それ以外の値は、このパラメータで渡された値がそのままミリ秒として
使われていたような気がする。
16.1.1 位置と姿勢
-----------------
- p.409 訳注、ローパスフィルタとしてはセンサーの出した値が低いか高いかを
そのまま使うのではだめで、その値の出現頻度が低いか高いかとか、
前値との差分が小さいか大きいかなど、なんらかの計算をしないとダメ。
16.1.2 そのほかのセンサー
-------------------------
16.2 Near Field Communication (NFC、近距離無線通信規格)
-------------------------------------------------------
- p.412 カードエミュレータの説明がおかしい
「接触を必要としないカードがデバイスになります」
→「デバイスが接触を必要としないカードになります」
16.2.1 タグの読み取り
---------------------
- p.414 中ほど、 ``getDefaultAdapter(context)`` を呼び出すのはAPIレベル10だけ?
- それ以降のAPIにもcontextを引数に持つものもあるから、APIレベル10以降だろう。
(p.414 下のコードの前で終了)
.. note::
- コードのインデントがおかしいところは、あげていたらきりが無いので省略した。
- 次回は、p.414 下のコードから。
[ 戻る ]