2015年10月23日金曜日

作ればわかる!Androidプログラミング 第3版 - 第7章

 「チキチキ障害物レース センサーと SurfaceView でゲームを作ろう!」

 落っこちました!のコードが見当たらなかったので追加してみた。再スタートもできるから修正方法には問題はなさそうかな。


 ゲーム作りに一歩進んだぞと。
 ここまで動いていると文字だけでなく効果音も出したいなと思うけどいまは次へ進むことを優先したい。
 このサンプルゲームは単純だけどこれはこれで面白かったのは内緒である。

いままで Nexus6 で実機動作の確認をしてきたけれど WiFi が死んでいる HTL21 が使えないかと思って接続してみたらあっけなく接続できた。
 ただし Android のバージョンが 4.1.1 になっているところに注意が必要だがそこまでの技術レベルに達していないので問題にならない。
 これで Nexus6 との配線やりとりが減っただけでも時間短縮である。

2015年10月17日土曜日

作ればわかる!Androidプログラミング 第3版 - 第6章

 第5章はマテリアルデザインに未対応なため Android Studio が自動生成するコードとの違いを追うのが大変だったので少し頑張ったところでパスした。

 第6章の「振って、ゆらして琉球音階を作ろう」に着手。
 実は先日の midi データはここで使いたかったのです。

 傾斜角にはマイナスが存在するけれども絶対値に変換する場所が音を鳴らすコードのあとで実行されていたのでアプリが止まるという現象を発見したので変換箇所を変更した。
 動くようになったので傾斜角90度の時の音を鳴らそうと思ったらなかなか出ない。
 89度が限界でスクリーンショットは取り逃がしましたw



 書籍の25%くらいは吹っ飛ばしてきてるけど気にしない。
 できるところを進めていくほうがモチベーションをキープできる。

 いままで実機は Nexus6 を使っていたけれども USB ケーブルの抜き先が面倒なので WiFi が死んでいる HTL21 を使うことにした。
 SOL21 は繋がらなかったけれどさすがは HTC 機。あっけなく繋がった。
 ただ OS のバージョンが 4.1.1 になってしまったのはいたしかたない。

 いよいよ次は簡単なゲーム作りの章だ。
 楽しみ楽しみ。

2015年10月16日金曜日

音階の MIDI ファイルが欲しいので GarageBand で作ってみた。

 探してみたけど音楽はあるけど単純な音階が見つからなかった。
 まあ確かに作ってもプログラムのテスト時くらいにしか使われることはないだろうし誰も作ろうと思わない。

 なので GarageBand で作ってみようとしたんだけど .mid への出力ができない。
 読み込みはできて音を鳴らすことができるにも関わらず。

 そこで google 先生にきいたところどんぴしゃりの回答が出ているサイトを見つけた。
 「GarageBandからmidiファイルに書き出す」
http://jtakao.blog.fc2.com/blog-entry-19.html
 確認されたバージョンは GarageBand 6.0.5 とのこと。
 内容をみると単なる perl スクリプトの加工らしいので問題はなさそうということで試した。
 ちなみにいま使っているバージョンは以下の通り。

 バージョンは大幅に上がっていましたがそれぞれ無事に動きました。

 なお MIDI ファイルが欲しくなったのは参考書で作ろうとしているアプリがセンサと絡めて音を鳴らそうとしているために必要としているから。
 いまはその作った MIDI ファイルが該当ディレクトリにドラッグアンドドロップができなくて困っているw

2015年10月5日月曜日

作ればわかる!Androidプログラミング 第3版 - 第4章でコケる 続 - ギブアップして次にいきます。

 画面レイアウトがおかしいのはいろいろと工夫してなんとか表示できるようになった。
 横画面にすると下にあるボタン二つが消えてしまうので時計の縦方向を小さくしたかったけれどどこをいじればよいのかわからなかったので保留。

 次に発生した問題はその表示している時間を取得できない。
 というより関数が使用不可の状態です。

 さてここからまたまた時間がかかりそうだ。
 あとは時間設定をして通知を出すようにするだけなので全体的に進んでいると思われる。

 指摘された二つの関数は新しいものを使うようにと記載があった。
http://developer.android.com/intl/ja/reference/android/widget/TimePicker.html
 直したんだけれども「確定」ボタンをタップするとエラーが出てしまって手詰まり。


 二つの関数が関わっている部分をコメントにすると動く。
 となるとやはりこの二つの関数を徹底的に調べないとだめなのか。
 そんなに難しいことをしているとは思えないんだけれどもエラーが出るということは勘違いしているようにも思える。
 もう少しコードを見直してみようっと。

2015年10月3日土曜日

Nexus6 を root 化した。

~ $ fastboot oem unlock
...
(bootloader) Please select 'YES' on screen if you want to continue...
(bootloader) Unlocking bootloader...

(bootloader) Unlock completed! Wait to reboot

OKAY [ 66.046s]
finished. total time: 66.046s
~ $ fastboot flash recovery /Users/xueli/Downloads/twrp-2.8.7.1-shamu.img
target reported max download size of 536870912 bytes
sending 'recovery' (11700 KB)...
OKAY [  0.430s]
writing 'recovery'...
OKAY [  0.193s]
finished. total time: 0.623s
~ $

 なんかあっけなかったw
 HTC 機で痛い目をみたのでカスタムロムを入れる予定はありません。

2015年10月2日金曜日

作ればわかる!Androidプログラミング 第3版 - 第4章でコケる

 すんなりとは進んで行かないのがプログラミング。

 レイアウトを組むために xml をサンプル通りにコードを入力していったところそれらしい画面ができた。
 ただし EditText 大きな枠になっていることと二つの小さなボタンが表示されないこと以外は。

こうなってくると何もわからずに進めているからお手上げ状態。
 いくつか枠がおかしいと思われるところがあるのでそこから攻めてみるか。

 いくらなんでも EditText の枠が大きすぎるのは謎である。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:id="@+id/mainLayout"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".MainActivity"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:showIn="@layout/activity_main" >

    <TextView
        android:text="@string/todo"
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />


    <EditText
        android:id="@+id/editText"
        android:layout_below="@+id/textView"
        android:layout_alignParentStart="true"
        android:layout_above="@+id/timePicker"
        android:layout_alignEnd="@+id/timePicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TimePicker
        android:id="@+id/timePicker"
        android:layout_centerVertical="true"
        android:layout_alignParentStart="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        style="?android:attr/buttonStyleSmall"
        android:text="@string/set"
        android:id="@+id/set"
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        style="?android:attr/buttonStyleSmall"
        android:text="@string/cancel"
        android:id="@+id/cancel"
        android:layout_alignTop="@id/set"
        android:layout_alignEnd="@id/timePicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />


</RelativeLayout>

 Nexus6 で動かしてみたら EditText の入力エリアがないこと以外はきちんと表示された。
 そうなると Android Studio 側の問題なのかな。

MELSECNET/HのリモートI/O局経由のMODBUS(R)通信について

http://fa-faq.mitsubishielectric.co.jp/faq/show/13661  別ネットワークの先にぶら下げるってどういうことだろう。