ダーヤス.com プレミアム

ダーヤス.comにようこそ。プレミアムな情報で、ワークライフバランスの充実を図りませんか。

Androidアプリを作ろう [Android Studio対応版]は良書。あとTimerの繰り返し処理で落ちるときの対処法など。

   

Timerの繰り返し処理で落ちる

さて、久しぶりにiPhoneアプリでリジェクトを受けていてアメリカのapp review teamとやりあっていてらちがあかないからApp review Boardに連絡を取ったところ、within 3 business daysに電話すると言われていて今。
国際電話もらっても多分仕事中で電話に出られないから多分折り返した方がいいんだろうけど、やだなあ通話料すごいかかるんだろうなあ。。。
たかがクソゲーアプリのために高い通話料をかけるとかアホらしいのですが、今年はクソアプリを量産すると決めたのでここで退くわけにはいかない。

で、リジェクトを受けると量産の計画が崩れるということで、かねてより懸念事案であったAndroidアプリ。これの開発を開始することにした。
最初は色々面倒だなと思っていてまあ実際しょっぱなから心折れそうだったのですが、やってやれないことはなさそうな気がしてきた。
アップル様がリジェクトしれくれなかったら一向にアンドロイドアプリに手をつけていなかったであろうことを考えると、拒絶してくれたおかげでより一層自分の能力が上がったわけだ。
感謝感謝。


Androidアプリを作ろう [Android Studio対応版](Nobu_CREATE著)は良書

さて、新しいことを始めるにあたって、グーグルで色々検索してみたところ、なかなか体系だったサイトを見つけるのが難しい。
とりわけアプリ開発の場合、1年くらいで情報が陳腐化していることが多いので、古い情報ばかり引っかかって現在の自分に役立つ情報を見つけるのが難しかったりします。
まあ手慣れていれば古い情報を新しく読み替えることも可能なのですが、まっさらな状態だとむずい。

というわけで購入してみたのがAndroidアプリを作ろう [Android Studio対応版] [Kindle版]というやつで、これ本当に良書だな。

多分Nobu_CREATEという方が個人で作成された本だと思うのですが、ここまで丁寧に書かれてると、最初の本としては完璧ではないかと。
Javaとかいじったことなかったけど、Swiftでオブジェクト指向言語の組み方とかxcodeとかの知識で色々類推すると、ちゃんと読み進められる。
(そういう意味で、全くプログラミングしたことない人とかだと、後半微妙に挫折するかもしれませんが。多少の誤記も後半から見受けられるようになりますし。)

まだ読んでないですか、一番かんたんなJava入門というサイトも開設されているようなので、これからちょくちょく読んでみたい。

"HAXM is not working and emulator runs in emulation mode" for Android Emulator/HAXMの解決

ただ、上記本だと使っているosがウインドウズ。
自分はmacだったので、macでガチで最初の一歩を説明しているサイトが欲しい。
というわけで【Mac版】初心者のためのAndroid Studioインストール方法まとめを参考にしました。
これ読めば簡単にHellow World!まで表示できそうですが、実はエラーが発生して表示に苦労した。。。

色々日本語のサイトだといい情報がなかったので、英語だけどこういうyoutube見たらあっさり解決。
Fix "HAXM is not working and emulator runs in emulation mode" for Android Emulator/HAXM
アプリ開発するにあたっては海外で発信されてる情報にあたる方が解決が早いな。。。

Timerの繰り返し処理には工夫(runOnUiThread(new Runnable(){})が必要

70%くらい上記の書籍を読み進めて、レイアウトの仕方とかイメージファイルの読み出し方とかがわかってきたら、目的のアプリを開発してみることにしました。
どういうのかというと、ダーヤス.comの「web版マスククロック」というやつで、まあ最初にiPhoneアプリで公開したのもこのMaskClockだったので、アンドロイドでもしょっぱなはこれにしようと思いまして。

まず、現在時刻の取得及び表示の方法はこのサイトを参考にさせていただきました。
AndroidStudio システム時刻を表示する

で、コードとしては工夫がないですが、これをタイマー処理で繰り返し実行されるところに書き込めば1秒ごとに表示されるようになるかと。

Timer clockTimer = new Timer();
clockTimerTask clockTimerTask = new clockTimerTask();
clockTimer.schedule(clockTimerTask, 1000, 1000);

でprotected void onCreate(Bundle savedInstanceState) {}内にタイマーとタスクを宣言しておいてから、

public class clockTimerTask extends TimerTask{

        @Override
        public void run() {
        }
}

でpublic void run() {}内に処理を書くと。
日本語のサイトを色々見ても、それ以上の説明があまり見当たらなかったのですが、これをやるとどうしてもエラーが発生して落ちてしまう。

「Unfortunately, app name has stopped」というエラーです。

結局英語のサイトの掲示板でこれの解決方法を見つけました。
stack overflowのUnfortunately, app name has stopped [duplicate]という質問です。

これの最後の回答のところをやってみたら自分でもできた。
繰り返し処理を実行させるには、「runOnUiThread(new Runnable()」という処理を書いておかないとダメみたいですなあ。

色々ハードル高かったけどとりあえず、現在時刻に合わせてマスクマンが体で数字を表現するところまでは行けた。
この調子で頑張ろう。

右下のピンクのメールのアイコンを消す方法

話それますが、アプリ立ち上げるとデフォルトでメールのアイコン見たいのがある。
これ、上記書籍では何ら触れられておらず、アイコンも書籍内の画像では表示されてない。
邪魔くさいので消したいのですがよくわからなかったところ、これも英語の掲示板で解決できた。

How to remove email icon from Android Studio emulation

結局英語に当たるのが手っ取り早いな。これからはそうしよう。

 - アプリ開発