徒然ブログ

Pebble Timeを買いました

日本でもついにAndroid Wearが発売されそろそろスマートウォッチのアプリを作りたいなぁとか思っていました。
順当にAndroidWearにしようかと思っていたんですが、いろいろあって Pebble Time を購入しました。

AppleWatchやAndroidWearと比べ有利な点:

・時計を常に表示できる(普段AppleWatchは真っ暗、AndroidWearはアンビエントモード(省電力モード))
・7日も電池が持つ(使い方にもよりますが、少なくとも私の使い方では4日ぐらい持ちます)

AppleWatchやAndroidWearと比べ不利な点:

・低解像度の64色表示反射型液晶(ゲームボーイアドバンスみたいな液晶なので外光がないと見えません。ただし、昼間の直射日光の下では逆に抜群に見やすいです)
・低スペックなCPU・メモリ
・タッチパネルなし(すべてボタンで操作します)
・日本語対応なし(ただし、有志による日本語拡張パックがいくつかあり簡単に日本語化できます)

私自身は普段時計をしているので、時計として使えるのが必須条件になっていました。
その点で言えば、いろいろあるスマートウォッチの中で現時点で一番時計として使えるのがPebble Timeだと思います。

SplastageClient v0.9.0β 公開

SplastageClient version 0.9.0 βをGooglePlayにて公開しました。
SplastageのサーバーAPIを使用してステージ情報を表示するAndroid用クライアントアプリケーションです。
ベータ版としているのは下記の項目がまだ未実装のためです。

・フェスマッチの表示が行えない
・アイコンなどがデフォルトのまま

フェスについては8/22開催時のイカリングのデータから作成する予定にしています。
アイコンについては別途考え中です。。。

device-2015-08-16-193530

Splastage v1.0.0 公開

Splastage version 1.0.0 をGitHubでソースコードを公開しました。
スプラトゥーンの最新のステージ情報を表示することができるツールです。

スプラトゥーンの公式サイトでは現在のステージ情報を取得する場所が2箇所あります。
製品サイトのナワバリバトルのステージ情報
フレンド交流サイト イカリングのステージ情報

製品サイトの方はレギュラーマッチの現在・前回・前々回のデータが取得できます。
イカリングの方はレギュラーマッチとガチマッチ両方の現在・次回・次々回のデータが取得できます。
ガチマッチのデータを表示するためにはイカリングの方を取得するしかないのですが、こちらはニンテンドーネットワークIDでログインする必要があります。
全ての処理をAndroid側で行うことは可能なのですが、Go言語の試作をかねて今回はデータの取得自体はサーバー側プログラムで行うようにしています。これによりアカウント情報はクライアント側で行う必要はありません。

久しぶりの更新

前回の更新からだいぶ空いてしまいました、、、
ぶっちゃけスプラトゥーンにはまってしまってプログラムを作る時間が減ってしまって書くネタがなかったです。
FPS/TPS系のゲームがものすごく下手くそな自分でも問題なく楽しめるバランスが素晴らしいです。(ただ、やっぱりバケモノ級に上手い人はいて手も足も出ないときはすごく悔しいですが。)

最近リアルな方でPHPをやっているのですが、これはなんというか適当に書いても適当に動いていてすごいのですが、使えば使うほど自分がダメになっていくような気がしてます。
そこで何か違うものに変えられないかなぁと何かをちょっと勉強しようと考えています。

候補
・Ruby(Ruby on Rails)
・Java(Play Framework 2?)
・Go(Revel?)

ウィクロイド v1.3.8公開

ウィクロイドv1.3.8を本サイト上で公開しました。
本バージョンでは前回のバージョンで修正しきれていなかったFAQが取得できない問題が修正されます。
v1.3.7で取得したデータにはFAQが含まれていない状態で保存されているため、v1.3.8にバージョンアップ後に再度データの取得処理を行う必要があります。

どうやらいつの間にかWIXOSS公式サイトのカード一覧がスマートフォン対応が行われており、ある程度は見やすくなっています。
そのせいでデータ構造が変わってしまってデータの取得が行えなくなっていたわけですが、、、
データ表示速度や一覧性についてはまだウィクロイドの方が優位に思えるので公開は続ける予定です。

[Tips] NTP時刻取得

スマートフォンの時刻は基本的には3Gの電波などから時刻を取得している(NITZ)ため概ね正確なのですが、1秒程度の誤差あるようです。
そこからさらに制度を高めるにはNTPを使って時刻を取得します。
実際に時刻があっているかどうかはJST Clockのサイトで確認しています。

・SntpClient

Androidのソースコードの中にそのものズバリSNTPの機能を持ったクラスです。

[Tips] バイブレーション鳴動(Vibrator)

Androidでバイブレーションを鳴らすにはVibratorクラスを使用します。

・AndroidManifest.xml

まず必ずマニフェストに権限を付与しておく必要があります。
これが無いと “Requires VIBRATE permission” のようなエラーが発生します。

・vibrate

パラメーターにはミリ秒を指定します。
バターンや繰り返しを指定して連続して鳴動することも可能です。
繰り返した場合はcancel()で停止できます。

[Tips] 効果音再生(SoundPool)

時報アプリの時報音のような効果音(短い音)を鳴らす場合はSoundPoolクラスを使用します。

・setOnLoadCompleteListener

Android 2.2以降から使用できます。
SoundPoolではSoundPool#load()呼び出しが非同期で行われるため、読み込みが完了していなくても処理が帰ってきます。
そのため、SoundPool#loadの呼び出し直後にSoundPool#play()を行った場合に音が鳴らない場合があります。
このリスナーを使用すると読み込み完了が検知できます。

・play

読み込んでいた効果音を再生します。
読み込みが完了していなかった場合などの時は鳴らない場合もあります。
パラメーターには音量やループ回数などを指定できます。

・release

オブジェクトを解放します。
SoundPoolは保持上限があるようなので、必要なければ適時リリースした方が良いと思います。
ただし、2、3ファイルぐらいなら確保しっぱなしでも問題無いです。

[Tips] 非同期で処理する(AsyncTask)

Androidで非同期処理を行う方法はいくつかあるのですが、UI操作が絡んだ場合はAsyncTaskを使用します。

・クラス定義

AsyncTaskを継承する際に指定するクラスはそれぞれ<doInBackgroundの引数型, onProgressUpdateの引数型, onPostExecuteの引数型>です。
doInBackgroundなどのメソッドの引数型についても合わせて変更します。

・onPreExecute

プログレスダイアログの初期化などの非同期処理実行前の前処理を行います。
UIスレッドで動作するため、UIに関すること以外の初期化処理は基本的には行いません。

・doInBackground

重たいファイル処理や通信処理など画面処理とは関係がない重たい処理を行います。
UIスレッドではないためウィジェットやダイアログ操作を行うとエラーになります。もし処理途中で画面処理を行いたい場合はpublishProgressを呼び出すことでonProgressUpdateに処理を行わせることができます。
また、引数には呼び出し元のexecuteで実行した際に渡された値が入ってきます。

・onProgressUpdate

プログレスダイアログの更新などの進捗状況表示処理を行います。
UIスレッドで動作します。

・onPostExecute

非同期処理が成功・失敗の結果の表示などの後処理を行います。
UIスレッドで動作します。