Android本の写経メモ(CHAPTER5:アクティビティ、CHAPTER6:通信)
(この記事は自分のメモ代わりです。内容が古かったり間違っていることもありますのでご注意ください。)
おや?Androidカテゴリーで絞り込んでもCHAPTER4がないよ。気にしない気にしない。
CHAPTER5からversion1.2.2にしました。CHAPTER5が終わる前に1.3のbetaが出てたんで迷ったんですけど、一緒に勉強してる友人にbetaはやめときって言われたのでやめました。
5-1
Android内でアプリが特定の機能(カメラとか電話とか)を使う場合、AndroidManifest.xmlにパーミッションを設定しないといけないんですね。
Manifest.permission | Android Developers
何がどう必要なのかまではわかりませんが、注意が必要なことはわかりました。
<uses-permission>設定の罠 - Qiita
5-4
最近、importはAndroid Studio任せで自分で書いてないのですが、たまにはソフトも間違えるようです。android.osじゃなくて、javaのを呼んでました。
MyService.java内
import java.util.logging.Handler; //誤
import android.os.Handler; //正
5-7
layout/main.xmlとlayout-xlarge/main.xml内
fragmentのclassは、自分のパッケージ名にしましょう。
6-1
import java.net.URL;
は、自動で呼ばれなかったので、自分で書き足しました。
CHAPTER6-3よりversion1.3.2です。
6-3
R.layout.rowdataに該当するxmlファイルがありませんでした。
本のサンプルプログラムからコピーして配置です。
6-7
パッケージcom.google.android.gms.gcmは存在しませんでした。
「ライブラリの追加」とは、SDK Managerでのインストールと、build.gradleにdependenciesを追記のこと。
ic_launcherとして、ic_launcher.xmlをdrawable直下に右クリックで自動create。
GCMにメッセージ送信するのをRubyで書きました。htmlとCGIするのは面倒だったから、ruby単体で実行。
(あれ?これホント?今度このへんもっかい検証します。)
Android本の写経メモ(CHAPTER2:基本API、CHAPTER3:ユーザーインタフェース)
CHAPTER2からは、manifest.xmlについての記述がありませんでしたし、CHAPTER1と同じだからいいよね?ていう話もなかったので迷いました。
何だか急に突き放された気分です。
さて、2-2からお絵描きが始まったんですが、ごくごく初歩的な疑問がわいてきました。
「座標の位置は画面サイズによって変わる?」
答えが本にはなかったので、隣で一緒に勉強している知人のURBANO(京セラ)とわたしのNexus5を並べてみました。
左がURBANO、右がNexus5。両方とも5インチディスプレイで、上の画像は幅をそろえてあります。なので、Nexus5のバーチャルボタン(?)の分を差し引いても、図形の大きさが違いますね。
というわけで、AndroidのCanvasでお絵描きをするときは、機種依存だということがわかりました。
ちなみに、GDG京都のAndroid勉強会でもお世話になってる方が、Canvasについて記事を書かれてたのを見つけたので、貼っておきます。
AndroidのCanvasを使いこなす! – 基本的な描画 | NET BIZ DIV. TECH BLOG
AndroidのCanvasを使いこなす! – PorterDuff | NET BIZ DIV. TECH BLOG
2-4
キーイベントは、Nexus5に物理ボタンがないので動きませんでした。隣のURBANOは動いてたので、大丈夫そうです。
2-7
SuerfaceViewは、自分で用意したサンプル画像が白くて、背景も白かったので、背景を変えられないものかとちょっと調べてみました。
SurfaceViewの罠?(笑) | 車輪の再発見みたいな?
Androyer in Japan: SurfaceViewの留意点
Androidで動く携帯Javaアプリ作成入門(12):SurfaceViewならAndroidで高速描画ゲームが作れる (1/3) - @IT
SurfaceViewてちょっと特殊なんですね。これらの記事がちょっと古いというのと、内容をうまく反映させられなくて、まだできてません・・・。本の写経を先に進ませたいので、リファレンスも読みながらまた気が向いたらやり直します。
さて、CHAPTER3から、Android Studioのバージョンを1.2.1.1へ変更しました。
そのせいか、デフォルトで作られるコードが微妙に違う部分があったりするのですが、デフォルト部分には手を触れず、本に書いてあるとおりの指示だけすれば今のところ問題ありません。 詰まったときはブログで紹介したいと思います。
そして、この章から、manifest.xmlへの追記が必要だったりするのですが、それがCHAPTERの最後に書いてあったりするので気づかずに実行して動かない!とかありました。
そのへんは、ちょっと親切じゃないと思います。
3-6
Google Developers ConsoleのUIが変わってますね。だいたいこの辺という感じで、本の指示を実行していけば問題なかったので、詳細は省略します。
1つだけ、APIキーを作るときのフィンガープリントのセミコロンの後ろにつけるパッケージ名は、ちゃんと自分で作ったパッケージ名にしましょう。理屈がわかると当たり前なのですが、「パッケージ名」というのがピント来なかったので、例に書いてあるとおりにしていて、動きませんでした。
「パッケージ名」は、MapViewEx.javaの1行名、本のコードでいうと、"net.npaka.mapex"がそれです。超初心者は、そういうところでもつまづいたりするんですよ・・・。
ちなみに、API有効操作をしなかったらこんなlog出ました。単純に、本の手順をひとつ飛ばしたミスだったんですけど、参考まで。
E/MDM﹕ [150] b.run: Couldn't connect to Google API client: ConnectionResult{statusCode=API_UNAVAILABLE, resolution=null}
このとき、エラーメッセージを読むのは避けて通れない道だと思って、がんばってAndroid Studioのlogと向き合ってみました。このおかげで、log読む壁は越えたと思います。(^ ^)
スマホを水没させたときにしないほうがいいこと、したほうがいいこと(Nexus5水没体験談)
昨年の1月に買ったNexus5を洗濯機に入れてしまって、水没&故障させてしまいました。スマホユーザーのみなさんのお役に立てればと思って、ここに写真とともに失敗談を披露したいと思います(笑)
フリースの胸ポケットに入れたまま、洗濯機に入れてしまいました。水に浸かってた時間は1分そこそこだったと思います。わりとすぐ気がついたつもりです。でも、引き上げたときには、スマホの隙間や穴の空いたところからティッシュで拭えないぐらいの水が出てきました。
その後、私がやったことは、水を出そうとひたすら振り、それが落ち着いたようにみえたので、乾燥剤と一緒にジップロックに入れて冷蔵庫に3日ほど放置しました(初日は乾燥剤がなかったので生米投入)。
まずこの、ひたすら振ったのがまずかったようです。振ることで基板や部品の隙間に余計に入り込んでしまっていました。(あとで写真貼ります。)
また、Nexus5は防水じゃないくせに裏フタがぴったり張り付いたデザインになっていて、ネジ穴もありません。
なので、乾燥剤と一緒に放置したところで、中に入り込んだ水分は抜けないし、乾燥もしないんですね。「スマホ 水没」でググると、振らずに冷蔵庫に放置で復活した例もありますが、水の入り具合がマシだったり、隙間が多い構造になってたんでしょう。
今回の失敗から私がオススメする水没時の対応はこうです。
-
絶対に振って水を出そうとしない。立てたりティッシュでくるんだりして、自然に出てくるものだけ拭き取る。(電源ボタンを押さないように注意。)
-
自分で裏フタ等を開けられる人は、開けられるとこまで開けて、すぐに中の水分を拭き取る。塩分を含むものが入り込んだ場合は、水道水でもいいのでそっと基板を洗い流してから、水分を拭き取る。このとき、基板や部品をこすらず、自然にティッシュなどに水分を吸わせるように。また、ティッシュの細かい繊維などが部品に付着しないように注意する。そうして、分解したまま2日ほど乾燥剤と一緒に放置するほうが、まだ復活の可能性あり。
-
自分でフタを開けられない人は、翌日すぐに修理に出す。フタをしたまま乾燥剤と一緒に冷蔵庫に入れておいても、ムダになる可能性のほうが高い。
とにかく、スマホを水没させてしまったら、開けて中を拭かないとダメだと思います。
その前に、そんなことしなくて済むよう、ご注意ください。。。
えー、それでここからはちょっとオタクな話になります。(笑)
スマホの分解についてですが、世の中にはいい人がいっぱいいて、大概のものは分解方法をYouTubeにのせてくれてます。
今回参考にしたのは、この2件です。
- How to Replace Your Google Nexus 5 Battery - YouTube
- 「Nexus 5」を分解して中身を分析した写真&ムービー公開、どれぐらい修理しやすいかが判明 - GIGAZINE
以前、Nexus oneを開けたのはちょうど2年前ですねw
Nexus oneの電源ボタンを直してみた - satomicchyのつぶやき
このときも、Youtubeのお世話になりました。
細かい分解手順はYoutubeを見てもらうとして、水没で故障した様子をアップしておきます。
裏フタを開けて、マザーボード側のカバー(Y型のネジで止まってた!)を外したところです。この状態では分からなかったんですよ。なぜ電源が入らないのか。キレイに見えるでしょ?
で、マザーボードのウラ側を見てびっくりです。
真っ白。
CPUの周りの金属は多分、放熱板です。右側の四角いのは、SIMスロットです。
これでもう「終わった」と思いました。(笑)
放熱板はごくごく小さいクリップのようなもので止まってるだけだったので、どうせならと思って開けてみました。
はい、サビですw
よく見ると、こちらは部品の端子まわりが変色してますw
ということで、1台目Nexus5は終わってしまったので、2台目Nexus5で写真を撮ってご紹介しましたw。
あ、ちなみに連絡先が全部なくなったと思ってたんですが、Googleにちょっと魂を売ってたおかげで、gmailを設定したら同期してたアドレス帳?が入ってきました。いつのかわかりませんが、親戚のものとかはありましたから、まずは一安心です。
まぁ、この頃は、SNSで連絡取り合うことも多かったので、それほど痛手にはなりませんでした。
みなさんもお気をつけください!
Robi製作日記(13号〜22号)
一気に9号分作りました。すごく進んだ気がしますw
なぜかというと、右腕ができたら左腕を作るという順番だったので、やること同じだし、写真もそこそこに、わーーーーっと作りました。
一応順番に撮った写真をあげていきます。
13号
じゃーん。Robiキャラのステッカーがついてました!MBAに貼ろうっと♡
13号のパーツはこちら。
肩のサーボモーターです。これをID16番にセット。
もちろん、フタは開けたままです。13号はここまで。
14号
久しぶりの表紙です。なぜって、ASIMOが写ってるから♪
みなさんはASIMOを見たことありますか?わたしは数年前に日本科学未来館 (Miraikan)で見たんですが、びっくりしました。あの動きに。子どもより少し大きめの身長で、ホントに人間ぽくて、そんなに早い動きはできませんけど、二足歩行で歩くロボットは何か違うイメージを与えますね。見たことない方はぜひ見てみてください。ロボットに対する印象、絶対変わります。
さて、14号のパーツはこちら。
ボディーに肩のサーボモーターと腕をつなげます。
上腕(前回まで肩と言ってたところ)のサーボモーターとカスケードです。よく動く場所だからなのか、ケーブルの引き回しの指示がちょっと細かいです。
こんなふうに、わざわざケーブルをたるませたりしてます。組み上がったときに、ちゃんと動いてくれるかどうか心配になってきました・・・。
固定したところがこちら。肩と上腕のサーボモーターは、軸が90度違います。上腕と前腕は45度違います。はい、これで肩と前腕の関係が難しくなりました(笑)
ということで、右腕ができあがったので、ここからは左腕です。パーツの写真と最後の出来上がりだけアップしておきます。
15号
16号
17号
18号
19号
20号
21号
22号
サーボモーター1個だけの号なんて、もうどれも一緒です。毎週でちまちま買ってたら、絶対発狂してます(笑)
右腕と違って、サーボモーター用のケーブルが長くなってますね。
15号〜22号の完成品がこちら。左腕がボディーに付きました。
左右合わせて、今はこんな感じです。
次回からは足を作るみたいです。