2014年11月23日日曜日

アプリデータ保存用フォルダ名

アプリからデータを保存するフォルダを作成する場合、
気をつけなければいけないことに気付いた。

例えば、『写真』というAndroid標準アプリは画像データを表示する際は全てのデータの一覧を表示するが、
まずデータがあるフォルダの一覧を表示するものも多い。
有名どころだとLINEは添付画像を選択する際は、まずフォルダの一覧が表示される。

当プロジェクトでは、画像データを扱うアプリを2つリリースしているが、
画像のデータは、アプリ用フォルダを作成し、その下に保存画像用フォルダを作成してそこに保存している。

このとき保存画像用フォルダ名に同じ名前を使っていたため、
前述のLINEや、その他画像を扱うアプリからデータにアクセスする際
どちらのアプリの画像フォルダなのか分かりにくく、ユーザビリィティが良くない。

アプリデータ保存用フォルダ名はユーザーが識別しやすい名前にしておくべきだ。
今後の開発ではしっかり実施していき、先にリリース済みのアプリについては改修予定

2014年11月20日木曜日

TegakiMemoバージョンアップ

【バージョン2.0】
  • タブレット対応しました。
  • メモ描画時のヒストリーバック機能を追加しました。
  • premium版機能を追加しました。
-premium版機能-
  • 画像を取り込んでの描画
  • 描画色を4色追加

2014年11月15日土曜日

SilentCamをバージョンアップ

バージョン 2.1での変更点は下記の通り
  • 画像の日付がずれる不具合を修正
  • 英語対応
追記
画像の日付がずれる現象については、Javaの仕様によるハマりどころでもあったので内容を記すと
画像の日付変更はCalendarクラスのsetメソッドで行っていたが、
引数の指定が、年や日時は指定したい日時をそのまま指定すればよいが
月のみ0~11で指定するという仕様になっていた。
これを知らずに日付指定を行っていたがために、
画像の日付が本来の日付より1ヵ月先となってしまっていた。

また月の部分の引数に12が入った際、エラーとならず0扱い
つまりは1月になっていた。
試してはいないが%12で取って1を加えて月としている気がする。
エラーが発生しなかった事でバグの発見が遅れる結果となった。

2014年10月15日水曜日

SilentCamをバージョンアップしました。

バージョン2.0.3 での変更点は下記の通りです。
  • 画像管理設定をSilentCamのみでの表示にしているにもかかわらず、一度ごみ箱に入れた画像を戻した画像が他アプリから見えてしまうという不具合があり、修正しました。
  • バージョンアップ後の初回起動時に、不具合により他アプリから見えてしまっている画像を見えなくする処理を行います。

2014年10月1日水曜日

特定端末でのカメラプレビューの歪みの問題を解消

先の記事の通り、SilentCamについて
特定端末でカメラプレビューに歪みが出ていたのを解消した。

結論から言えば、原因は2つ。
まず一つ目が、
端末画面の横幅と縦幅を取得した際
どの側面を縦横とするかが端末によって違ったという点。
これはGALAXY S IIIで起きていた歪みの原因であった。

SilentCamの検証に使ったスマホ端末8機種の内、
7機種(日本メーカー製)はスマホを持ったそのままの方向で縦横。
残り1機種、GALAXY S IIIはその逆だった。つまり短い側が縦で長いほうが横。

これはGALAXY特別のおかしさかもしれないが、他にそういう端末もあるかも知れず
また、今後タブレットにも対応させるといった時のことも考え、どちらであっても柔軟に対応できるように実装した。


二つ目が、端末のカメラプレビューの対応サイズ。
これはCamera.Parameters..getSupportedPreviewSizes()メソッドにて取得でき、
戻り値はandroid.hardware.Camera.Sizeのインスタンスのリストとなっている。
このリストでは、概ね最初の要素がディスプレイサイズとなっている場合がほとんどで
index0をプレビューサイズをするという所謂ハードコーディングをしていたが
中にはそうではない場合もあったので、
取得した要素を全て検証し最適なものを適用するという実装にした。

以上で、把握してはいたものの修正できていなかったSilentCamの不具合を解消できた。

また今回、色々な端末のデータを取得する必要があったので、
Android端末を持っている方達にご協力いただいた。 その際、こちらで各端末をPCにつないでログを取るといったことができないため
Display Detail Checlerという
前述の事項で言及したような、端末の各値をスマホ側で確認するためのアプリを作成し
これを使ってデータを収集した。

なお、需要があればと思い、Google Playにて公開している。
ディスプレイ詳細取得 D.D.Checker

2014年9月30日火曜日

SilentCamをバージョンアップ

バージョン 2.0での変更点は下記の通り
  • 端末によっては画像の歪みが出ていた為、カメラ部分を刷新し歪みを出さないようにしました。
  • フラッシュが付いている端末では、フラッシュを使えるようにしました。
  • 画像一覧画面でのスクロール時のモッサリ感を改善しました。
  • 撮影画像の並び順を降順(新しいものが上)に変更しました。
また、バージョン2.0は起動できない不具合があっため、後に再度アップデート
現在のバージョンは2.0.1

2014年9月24日水曜日

消音可能カメラ SilentCamが起動できない場合

消音可能カメラ SilentCamバージョン2.0につきまして
Google playにアップロードする際の工程でエラーがあったようで
そのバージョンをインストールされた場合、アプリが起動できないという状況になっていました。

その為再度Google playにアップロードし直し、現在既に反映されています。
バージョン 2.0をインストールされているユーザー様は
大変お手数ですが、バージョン2.0.1へのアップデートをお願い致します。

2014年9月6日土曜日

RecListerをバージョンアップ

バージョンアップの内容は英語対応と、録音データの並び順変更。

録音データの並び順は、一番古いデータが一番上に来ていたものを、最新のデータが一番上に来る形(いわゆる降順)とした。


追記
英語訳の一部修正と、録音データ一覧画面でハードウェアバックキーで『元に戻す』と同じ動作を実装し、9/7に再度アップデートした。
現在のバージョン 2.1.1

2014年8月25日月曜日

Android 2.3 Gingerbread 対応について

先日リリースした TheCompassでは、このプロジェクトとしては初めてAndroid 2.3の端末を動作対象から外した。
理由は、方位針の回転の動き(リアルタイムで回転角を付ける)がAndroid 2.3の環境では容易には作り出せなかったためだ。

踏み込めば再現できそうな感じはあったものの、この開発ではそこまでしなかった。

Android 2.3までを動作対象に含める、と言うのは実のところ開発工数・テスト及びバグフィックスの工数はかなり上がり、体感的にはリリースまでに要する時間は切り捨てた場合と比べ1.5倍に近く膨らむ。


今後の方針としては、基本的に Android4.0未満は動作対象から外すつもりでいる。
もちろん使っている方のいる限り、今後もアプリによっては可能な限り Android 2.3も動作対象させるようにするが、含めることによって開発に負担やボトルネックが生じると思われる場合は、思い切って切り捨てる。


以下のグラフはGoogleが公表している、2014年8月12日までの7日間に集計されたAndroid OSのバージョン別シェアだ。

http://developer.android.com/about/dashboards/index.html#Platform
Android 2.3 Gingerbread のシェアは13.6%となっている。
当プロジェクトで先にリリースした3つアプリはAndroid 2.3も動作対象であるが、インストールされた端末の統計を見てみると実感としてはもっと低い。
Googleのデータは全世界の統計だと思うので、日本では現役で利用されているほとんどの端末が4.0以上になっているのではないかと思う。


バージョンによる癖を把握して低いバージョンでも動作可能なようにプログラミングする、というのは プログラミングを行っている立場で言えば楽しくもある。
しかしながら、限られた人的資源の中でそこに力を入れるのは無駄である。
蓄えたノウハウも、そう遠くない将来無用のものになる。

だとすれば、どんどんと提供される新しい技術に目をやり、それを取り入れた開発にその分の労力を割り当てるというのが私たちの今後の姿勢だ。

2014年8月19日火曜日

方位測定 TheCompassをリリースしました。


方位測定 TheCompass

その名の通り、シンプルな方位測定アプリです。
実際のコンパスと同じようにお使い下さい。


残念ながら、今回初めて
Android 3.0未満の機種を動作対象から外しました。

2014年8月6日水曜日

RecLister バージョン2.0をリリース


お手軽ボイスレコーダー RecLister

前バージョン(1.0)からの変更点は下記の通り
  • lite & premium共通 ― ラベル機能の追加、音声再生途中でのスピーカの切り替え、保護機能追加
  • premium ― ごみ箱機能の追加、メール送信機能の追加

このバージョンアップで盛り込みたかったが、間に合わなかったのが
・英語対応
・視認性を向上させるためのアニメーション
という2項目あり、これについては近いうちに再度バージョンアップを予定

2014年7月31日木曜日

消音可能カメラ SilentCamのバグにつきまして

当プロジェクトで開発しましたアプリ、消音可能カメラ SilentCamに以下のバグが発見されました。
  1. カメラ画面で、特定の条件でボタンが利かなくなる。
  2. 特定端末でプレビューが歪む(撮影した画像も同様)
1に関しては修正が完了しており、バージョン1.1に反映しています。
2に関しては現在調査中です。⇒解決しました。
現象が確認できている機種はGALAXY S IIIです。 その他の端末でも同様の現象が起きているようであれば、 私どものサイトのお問い合わせから情報をいただけますと助かります。

2014年7月15日火曜日

当プロジェクトとしての3作目のアプリをリリース

アプリ名はリリース前に被っていないか下調べをしたつもりだったが、リリース後に同名アプリが存在していることに気付いた。

これに関しては変更しようかと思っている。
GooglePlay DLページ

このアプリに実装した主な機能

・シャッター音調整(着信音量に応じる・マナーモード時消音)
シャッター音は必要な時もあると想定し、完全無音とせず調整可能にした。

・撮影画像の端末内での共有範囲の指定
このアプリで撮った写真を『写真』や『ギャラリー』、あるいは画像編集アプリといった別アプリでも表示するか、このアプリでのみ表示するかを選択できるようにした。
また一度別アプリでも表示する設定にしても、いつでもこのアプリでのみの表示に戻す事が可能

・撮影画像の向き自動判定
一部動作しない機種あり

・撮影画像の向き編集


バージョンアップでの実装予定機能

  • 撮影時のフラッシュ
  • ビューワーの横向き対応
  • 起動時画面を設定にて選択できるようにする(カメラor撮影画像一覧)

2014年6月12日木曜日

Androidアプリの画面遷移時のアニメーションについて

当プロジェクトで開発したアプリTegakiMemoは、
スタック的に見て、ユーザーが今の画面の位置を把握しやすいよう
画面遷移を、iOSアプリの画面遷移に似せて横スライド式とした。

実装にあたっては、AndroidManifestで
Activityごとに画面遷移時のアニメーションを付与した独自テーマを指定する形をとった。

しかし、最終的に解決はしたものの
端末によっては、こちらの意図した動きにはならなかった。
動きに違いが出ていた原因は、以下の2点によるものであった。

  1. Androidのバージョン違い
  2. 端末の設定


1について
Android4.0以上と Android2.3xで同じ指定にも関わらず、動きに違いが出た。
これに関しては、動きに違いが出ているActivityのJavaソースの中で
setThemeメソッドを使い、バージョンによってテーマを振り分けることで解決できた。

━━━ 2014/11/23 追記 ━━━

setThemeメソッドを使い振り分けるにはAndroid2.3x用のテーマを作成する必要があるので、
overridePendingTransition(int enterAnim, int exitAnim)
というActivity遷移時のアニメーションを指定できるメソッドがあるのでその方が楽だった。
使い方はstart()あるいはfinish()の後にメソッドを呼び出す。

━━━━━━━━━━━━━━━


2について
特定端末で、画面遷移アニメーションが 全く生じないというものがあった。
原因はトランジションアニメーションスケールという設定がオフになっていたため。

これについては、実は結構根深い。
どういうことかといえば、
2の問題を見つけるきっかけとなった端末(以下検証端末Dとする)は、新品であったためだ。
その端末は初期設定がトランジションアニメーションスケール設定が【オフ】だということになる。
たぶん一般的なユーザーはこのような設定は触らないだろう。

またAndroid4.0以上ではこの設定は開発者向けオプションの中にある

ましてやAndroid4.2(だったと思う)からは、初期状態では開発者向けオプションは表示されていない。
いよいよ一般的なユーザーは設定を変更することは無いだろう。
初期状態においてその部分が、
アプリのプログラムに特別な干渉を加えない【1x】ではなく
画面遷移時のアニメーションを無効とする【オフ】になっている端末があるということ

ちなみに検証端末DはAndroidのバージョンが4.2.2であった。

もし、検証端末Dと同じ端末を使っている方が、このアプリをダウンロードして使ってくれたとしても
苦心して実装した画面遷移の動きは、届くことはないと思われる。

全くもって開発者泣かせな事象である。