2015年05月29日

Androidアプリ開発初心者がはまりがちなこと

というか自分がはまったことのメモ

・#define文がない

javaにはCのプリプロセッサで便利な#define文がない

同じ定数があちこちに埋め込んであって、仮の値でやってみようとしたときなどこれが結構不便

そんなときは
public class Constants
{
public static final int MAX_NUM=15;
}
というクラスを作って
「Constants.MAX_NUM」って使うと便利

・SoundPoolの再生音量を着信音量のボリュームの設定に合わせたい

ググると
int ringVol = audio.getStreamVolume(AudioManager.STREAM_RING);
soundPool.play(sounds[0], (float)ringVol, (float)ringVol, 0, 0, 1.0F);
というサンプルが出てくるけどこれは間違い
soundPool.playの引数の音量はfloatで0.0-1.0の間
audio.getStreamVolumeはintで機種によって0〜7とか0〜15とかintが返ってくる
なので、
float ringvol = (float)audio.getStreamVolume(AudioManager.STREAM_RING) /(float)audio.getStreamMaxVolume(AudioManager.STREAM_RING);
soundPool_.play(soundid_hoge, ringvol, ringvol, 0, 0, 1.0F);
が正解

・R.javaで”エラー: がありません”というエラーが出る

R.javaの
public static final int 0=0x7f060000;
とかいう行でエラーしてる場合

これは”0.ogg”というファイルをリソースに追加したときに起きました
ファイル名は[a-z].でないとだめみたいです(ファイル名の拡張子以外の部分が変数名になるようで
0.jpgとか拡張子以外の部分が数字のファイルをresに追加するとエラーになります

・レイアウトのプレビュー画面が表示されない
MNCとなってる部分を"Android 4.0"等のPreview版以外に設定する。
ラベル:アプリ製作
posted by one-hand-engineer at 08:58| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2015年05月28日

Androidアプリのアイコンできるかな

resの下の
mipmap-hdpiの下に 72x72
mipmap-mdpiの下に 48x48
mipmap-xhdpiの下に 96x96
mipmap-xxhdpiの下に 144x144
のhoge.pngのファイルを放り込んで

で、manifestの下のAndroidManifest.xmlの
android:icon="@mipmap/hoge"
で指定(本体の解像度に合わせて適当な解像度のものを選んでくれるらしい)
Android2.3の古い機種でもdrawableの下には何も置かなくても大丈夫でした
iOSより簡単
ラベル:アプリ製作
posted by one-hand-engineer at 09:42| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2015年05月27日

Androidアプリ「点字学習」リリース

点字学習ーA_SS.jpg

Androidアプリ「点字学習」をリリースしました。
記念すべきAndroidの初アプリです。
iOSからのポーティングではなく結局Javaでほとんどスクラッチから書くことに。
iOSと両用ならTituniumなりPhoneGapなりで書けばいいじゃんと思われるかもしれないけど、どうせそのうちネイティブじゃないと書けないようなもの作りたくなるし、クロスプラットフォームっていまいち信用してないし(余計な手間がかかったり、制限が大きかったり)

無料ダウンロードはこちらから Android2.3以降対応です

Get it on Google Play
ラベル:アプリ製作
posted by one-hand-engineer at 07:50| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2015年05月26日

採血のプロを見た

病気になってから採血する機会も多くて、今回も血液検査をやったのですけど採血が今までで一番上手でした。
元々私の腕って皮膚が薄くて血管が太くて新米の看護師さんに「これなら私でもできます!」と感謝されるぐらい採血担当者大喜びの血管なんですけど、今回の人は気づくか気づかないかぐらいの早さで素早く針を刺して血を抜くときも針には何の振動もあたえず全く痛みもなかった。とにかく早くて正確。
思わず「すごい上手ですね」と感想を言おうかと思ったぐらい。プロの仕事は気持ちいい。
posted by one-hand-engineer at 08:31| Comment(3) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2015年05月25日

Androidのお勉強中

前に試した時はEclipseだったのだけど今はAndroidStudioっていう統合開発環境があるのね
”hello world”しか作ったことないからEclipseだろうがAndroidStudioだろうが馴染みがないことにかわりはないのだけどね

早速AndroidStudioをインストール
Gradleって何? → buildツールの名前なのね Gradle Scriptsっていうのがbuildスクリプトで
Activity? → iOSでいうViewのことのようだ
AndroidManifest.xml? (そういや選挙ですっかり”マニフェスト”って言わなくなったな ”守らないもの”っていうマイナスのイメージが残りすぎたものな)

いきなり知らない単語ばかりで外国に来たようだ

試しに新しいprojectを作って緑の三角ボタンで実行っと

おお、これだけで"hello world"って表示されるのね
まずは”hello world"を表示するところまでと思ってたら1時間で終わってしまった。

もうちょっとやってみようとactivity.main.xmlのレイアウトを表示しようとすると
"Rendering Problems: Class could not be instantiated: - android.support.v4.widget.DrawerLayout"
というエラーが出て表示できない

SDK versionが低いとエラーになるようだ API8(Froyo対応)でやってたからだな
File→Project StructureのappのFlavorsタブからMin Sdk Versionを変更。
対応SDKを最新のAPI22(Lollipop)に変更して一度projectをcloseして再度openしたらエラーが消えてちゃんと画面のレイアウトが表示された

でもその後API8(Froyo)に戻して実機で実行しようとすると
今度はFailure [INSTALL_FAILED_OLDER_SDK]
で実行できない…

どうやら実機で動かす時はProject StructureのappのFlavorsタブじゃなくて
Gradle Scriptsのbuild.gradleというファイルの設定が効いてるらしい。

見ると
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.welfapp.test1"
minSdkVersion 8
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
となってるので
targetSdkVersionの22を8にしたらFroyoの実機で動いた。

さぁ、開発環境はできた。
実機もFroyoとKitKatのスマホがある。(G,H,I,J,Lとタブレットも欲しいとこだけど、そこまでまじめにvalidationをする気はないからいいや)
作ろうと思えば何でも作れるぞ。
あとは腕さえあればなぁ…

慣れてないこともあるけどiOSよりAndroidの方が難しそう…
プラットフォームやversionがいくつもあるのも難だなぁ
Android 2.2から5までサポートしようとしたらAPI8からAPI22までだものなぁ
iOS6,7,8の比じゃない

しかし、よく考えてみたらJavaもほとんど使ったことないのだった
OnClickListenerでボタンクリックのイベントを処理しようとしてonClickが一回だけしか呼ばれなくてさっそくはまった…

1日かかってsetContentView(R.layout.activity_main)をonCreate()とonClick()の2箇所でやってるのが原因と判明
setContentViewはViewごとに1回しか呼ばない方がいいようだ。
Androidの作法は難しいな…

レイアウトで
「The following classes could not be instantiated: - android.support.v7.internal.widget.ActionBarOverlayLayout」
とエラーが出てレイアウトの表示がされないときは
res/values/styles.xml の"Theme"を"Base.Theme"に書き換えるといい

< style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar" >

projectのバックアップをとろうとディレクトリ丸々zipでとっておいて、展開して元に戻そうとしたらprojectが開けない…(ずっとグルグルしてる…)
スナップショットみたいに作業の途中の段階で丸ごと保存しておきたいのだけどできないのか? たまたまか?

しかし、思ったように画面のレイアウトができない 
全然WYSIWYGじゃなくてXMLを直いじりだものなぁ 
今思うとInterfaceBuilderよくできてるわ 
開発環境は完全にiOSの勝ちだな
ちょっと複雑な画面を作ったら動かそうとするとAndroidStudioが”応答なし”になるし、消耗してだいぶやる気がなくなった
ラベル:アプリ製作
posted by one-hand-engineer at 07:49| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2015年05月23日

続・歯が痛い

右(健側)の奥歯が噛んだ時や水がしみて時々キーンと痛くなる件、奥さんのお友達の歯医者さんに聞いてみたら「エナメル質がすり減ったことによる知覚過敏では?」ということで舌で触っても何もおかしくないし見た目も虫歯にはなってないので「たぶん、それ!」ということでシュミテクトを買ってきてもらって1週間ぐらい磨いてたらだいぶ痛くなくなってきた。(体調不良や精神的なものもあるんだろうなぁ)
気がついたら痛い側だったことを忘れて右側で噛んでたぐらい。
左(麻痺側)はちゃんと噛めてるかわからないし、味もよくわからないし、親しらずを抜いた跡の歯ぐきに食べ物が挟まると痛いし、咀嚼が足りなくて消化が悪くて栄養が悪いのかなんか元気出ないし腹の調子も悪いし、何より噛むと時々ものすごく痛いのでかなりブルーになってたのだけど少し回復。

前に「口腔ケアは大事」と書いたけど、本当に歯は大事。
歯が痛いのがこんなにダメージが大きいとは思わなかった。
posted by one-hand-engineer at 09:53| Comment(1) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2015年05月22日

退院5周年

だけど2年前にがくっと調子悪くなって以来調子は悪くなる一方…
手の震えはひどくなるし、目も見にくいし、ふらつくし、おまけに歯まで痛くなるし…
少しづつでもよくなってりゃいいけど後退は希望がなくなるなぁ… 
年とったらさらにひどくなると思うと…
posted by one-hand-engineer at 08:50| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2015年05月21日

オートジャイロはなぜ浮くか

オートジャイロ.jpg
オートジャイロってカリオストロの城でおなじみの回転翼の飛行機(でもヘリと違って動力で翼が回ってるわけじゃない カリ城のはロケットみたいなのがついてるけど、常時あれで回ってるわけじゃない)
機体が前進した時の風の力で翼が回転するわけだけど、翼が回転するってことはピッチがマイナスなわけで、じゃなんで浮くの??と疑問に思った。
何でも気になってしまう、僕の悪いクセです。

まず、飛行機は翼の揚力だけで飛んでいるのではない、というのは

この映像を見ても明らか。(胴体(とプロペラの推進力)だけで飛んでる)
(しかし、片翼がもげてきりもみに入りかけたのをたてなおしてほぼ高度ゼロでナイフエッジして着陸とは、このパイロットは本当にすごい 神業)

オートジャイロがなぜ浮くかは
http://blogs.yahoo.co.jp/kai_yamamoto/58125330.html
がわかりやすい
回転軸に対してマイナスピッチでも地面に対してはプラスピッチということですね
あと、回転翼の揚力だけじゃなくて、この人も
”その殆どは翼の腹に風を当てることで機体を押し上げる力で飛行しているように思います”
と書いてますね。

あるいは
http://www.natural-science.or.jp/article/20090109183111.php
カエデの実みたいに回転すると落下速度は遅くなる 下から風が吹いてると釣り合って落ちなくなる 下からもっと風が吹くと上に行く(浮く) という方がわかりやすいか。

って、オスプレイのヘリモードと固定翼モードの転換ってどうやってるのだろうということを調べててオートジャイロまで脱線しちゃったのだけどね。

ちなみにオスプレイについてわかったこと

・飛行モードは十数秒ぐらいで転換できるらしい。
・左右のプロペラは翼の中でシャフトでつながってて片方のエンジンが止まっても両方のペラが回るらしい。
・オートローテーション降下もできるらしい。
(でも高度があるときは固定翼モードで速度もでてるだろうから普通の固定翼機のように滑空で降下してオートローテーション降下を使う機会は現実にはほとんどないでしょう)

オスプレイは固定翼の利点と回転翼の利点のいいとこどりを実用レベルで実現したよくできた機体だと思います。
でもそのために機構は複雑になり操縦は難しくなりKISSの原則から外れるのであまり好きな設計じゃないですけど…

ラベル:飛行機
posted by one-hand-engineer at 10:16| Comment(2) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2015年05月20日

「ばら色タイムカプセル」



「真夜中のパン屋さん」の大沼紀子さんの。
13才の女の子が崖から飛び降りて自殺をはかったところを偶然助けてくれたお年寄りが入居してる老人ホーム「ラビアンローズ」で働き出して、そこのバラ園には死体が埋まってるのか?とか、そこで働くちょっと裏がありそうなイケメン調理人の正体は、とか。
やっぱ面白いもの書く人は別の作品も面白い。
ポプラ文庫で中学生が主人公で再婚とか介護とか痴呆症とか内容と見た目が全然違う。
ラベル:本/マンガ
posted by one-hand-engineer at 08:49| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2015年05月19日

人は変われど景色は変わらず

TVで昔家族旅行で行った観光地の映像を見て、もう一緒に行った父はこの世にいないし、自分ももう旅行に行けるような体じゃなくなってしまったし、そこの景色はあまり変わってないのに人はだいぶ変わってしまったなぁとしみじみと思った。
子供が結婚して家族旅行で行ったら同じ景色を見るのかなぁ…とか考えて。
”歳々年々人同じからず”…
posted by one-hand-engineer at 09:51| Comment(1) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする