2011年3月31日木曜日

木曽川南岸・鳩吹山のカタクリと山登ってきた~

平日の晴れた日にカタクリを見に連れて行けと言うことで、電車で行ってきました。
とりあえず去年から3/30を予定して準備は前日

「行程」
ルートは名鉄可児川駅から鳩吹山ふもとの「湯の華アイランド」駐車場横にある入り口から、カタクリ群生地、氷室登山口、鳩吹山頂上、大窪登山口、名鉄可児川駅
ゆっくり登って再び同じ駅へ戻ってくる3時間30分程の行程です。


「カタクリの様子」
咲いてます。福寿草と同じくカタクリも日が当たらないと花が開かないため、行くなら天気の日に行ってください。群生地は広くないので花見だけでしたら直ぐに終わってしまいます。かな~り前から比べると花の数自体が少ないそうですが、保護されて増えてるとのことです。

「山登り」
お山へはカタクリ群生地の先にある氷製造池跡の石垣脇から登ってきます。
氷室コースは途中で木曽川が見える場所があるためたいへん景色がよろしいです。

送信者 sakaneya


昼ちょっと前に頂上公園に着、某名鉄駅中にある持ち帰り寿司屋で買っておいた「助六」をたべます。
送信者 sakaneya


大脇登山口方面のアオキ、実は赤いのにアオキって名前の木ね。

送信者 sakaneya


「装備」
今回はハンディGPS機やロガーは持って行かずに、全て携帯電話のGPSでログ採りを行いました。携帯電話は Anadoid機のSAMSUNG Galaxy S、GPSログアプリは山旅ロガーです。
送信者 Android blog Sakaneya


ほんとGalaxy SのGPSはプアーであることを実感できます。


「今回使用したAndroidアプリ 」

地図ロイド:国土地理院地形図、GoogleMap、Yahoo地図、マピオン地図 対応
Name: 地図ロイド
Url: http://market.android.com/search?q=pname:com.kamoland.chizroid

山旅ロガー:GPSロガー
Name: 山旅ロガー
Url: http://market.android.com/search?q=pname:com.kamoland.ytlog

※時間や難易度は年齢や経験、装備によって変わります。今回のメンバーは登山歴20年以上です。

2011年3月30日水曜日

Androidアプリ 「Fake Geotag」もうすぐローンチ

アンドロイドアプリ「Fake Geotag」は、
スマートフォンAndroidで撮影した写真のジオタグを変更するツールです。

「出来ること」
1.ジオタグ(JPG画像に保存されているExifの位置情報)の変更
 たとえば北海道・札幌で撮った写真の情報を沖縄・那覇で撮影したことに出来ます。

2.時間情報の変更
JPG画像に格納されている撮影時間を変更します。写真内部に埋め込まれた時間情報を任意の時間へと変更できます。

「結果」
内部情報から書き換えるため、最初からその場、その時間で撮影したとしか考えられなくなります。


「動作画面」



「募集」
有料アプリですが、動作確認用のデモ版を一定の操作をしてその写真を送っていただいた方には、有料版と同じように使える仕組みを提供します。

目的は動作確認とバグだしです。色々なAndroid機で動作を確認したいのでしばらく動作確認用DEMO版をAndroidマーケットで公開する予定です。
twitterなどでも募集を予定しています。応募してね。

「時期」
3月中にDEMO版を公開予定です。

2011年3月26日土曜日

au NAGOYAのAndroidアプリセミナーへ

au NagoyaのAndroidアプリセミナー に行ってきました。前日に参加申し込み!!
(金曜夜にセミナーの存在をtwitterで知りました。感謝)

http://androider.jp/page/2011/03/986/

セミナー開催が午後1:30ということで、午前中に栄ラシックのドコモ・スマートフォンカフェと矢場町のソニーストア 名古屋で最新機種を触ってきております。

栄ラシック1F・ドコモスマートフォンカフェ(2010年12月1日2012年2月29日)ではソニー・エリクソン、Xperia arcとNECカシオ「N-04C Medias」を堪能
例の平日限定の先着で出てくるお菓子は土曜日でありませんでしたが、ドコモダケのクリーナーをもらいました。

ソニーストア 名古屋展示の端末は、ネットワークに繋がっていません。係の人に「貸して!!」って言うとSIMの入った端末を貸してくれます。
昼の12時頃に行きましたが、Xperia X10の時に見られた人混みと待ちは全然なく、4,5台あったarcに全てさわれました。 宣伝が足りない?

Xperia arcはホント・サクサク、今回はMedia何とかさんは存在しないのか? 普通にギャラリーが用意されているため、カメラ画像も直ぐに確認出来ますw
また、先代のX10も海外公式でAndroidOS Ver2.3へのアップデートされることが発表されて、なんか大逆転な機種になる可能性も。
あと全然話題になっていないようですが、これからのXperiaシリーズにはANT+があります。

※4/4 スマートフォンカフェの延長に従い修正

Xperia arc DPI情報:

送信者 sakaneya


 NECカシオ「N-04C Medias」Dpi情報

送信者 sakaneya
最薄AndroidのMediasです。使った感じは、もろに「初代」ですね。開発者的にはUSBの接続部分がしっかりしており安心できました。

Xperiaもそうですが、ボタンはハードでない方が良いです。IS03のような液晶ボタンはやり過ぎだと思いますが、弱い力でポンポン操れるのは使い勝手がよろしいです。


au NAGOYAでは、セミナー後
SHARPのIS05とHTCのEVOとZOOMを触ってきました。
HTC EVOのDPIは撮り忘れ、Android OS3.xのXOOMはマーケットの接続が良くないのかダウンロード失敗が続いたため今回はあきらめました。

IS05 DPI情報:
送信者 sakaneya
さすが新しい機種です。クロックが上がってるだけあってベースとなった機種よりきびきびしてます。画面サイズは小さいですが、画素数は480x854と細かく、シャープ自慢のフォントは美しいです。

※Android DPI情報のページはこちら
※全て撮影許可を取ってから撮影してます。




 本題の「Androidアプリセミナー」
送信者 sakaneya

auの端末は持って行かなかったのですが、受付でIS03を借していただけました。配られた資料にQRコードが印刷してあり、進行とともにタッチ&トライ形式で進めていく3時間ほどの内容でした。

Androidアプリはインテントをうまく使うのが使いこなしの肝と言うことで、力を入れて解説されていました。
紹介されたアプリの中では、ガチコンと端末同士をぶつけて情報を交換するBumpの反響が一番大きかったようです。やはりインタラクティブな要素のあるアプリは、体感を伴う分意識に残りますね。

他に、セキュリティ関係に付いての注意や心得に力を入れてお話がありました。
某Phoneアプリと違って審査がないことから、地震速報や停電情報アプリがポンポンとタイムリーに発表される分、セキュリティに関しては利用者の能力がより必要になる点が強調されてます。今回セミナー主催?共催?のアンドロイダーでは人力による評価後に紹介されるそうで、その点に関しては問題無いよとの事でした。質疑応答では最低6台の評価機による審査が行われているとの回答がありました。

写真の大画面はアンドロイダーオススメのバッティングゲーム「HOMERUN BATTLE 3D」、IS05のHDMI端子からの直接出力です。携帯にテレビ出力なんぞいらんと思っていましたが、実際見てみるとアレは良い、次選ぶとしたら個人的必須項目かも。


------------------------------------------------------------------
昼前とセミナー後に展示端末を使って動作確認をしてきました。
壁紙設定ツール「ギャラ壁Free」動作確認状況
新しく触ってみた4機種、Xperia arc,N-04C Medias,HTC EVO,Sharp IS05の4機種全て動作を確認

[動作確認した機種]
ドコモ(DOCOMO):
Samsung Galaxy S , Galaxy tab ,
Sharp Lynx 3D SH-03C
SEMC Xperia X10 (SonyEricsson SO-01B)
SEMC Xperia arc (SonyEricsson SO-01C)
N-04C Medias

au by KDDI:
SIRIUS α IS06
HTC EVO
Sharp IS03
Sharp IS05

SoftBank (ソフトバンクモバイル):
Sharp Galapagos

「ギャラ壁 Free」インストール機種10傑です。2011/03/24時点

Android用壁紙作成・設定ツール 無料版「ギャラ壁 Free」
2011/03/26現在 Ver 2.4.0.1
Name: GalaKabe Free
Url: http://market.android.com/search?q=pname:com.blogspot.sakaneya.galakabe

2011年3月7日月曜日

Android スマートフォン用 壁紙設定 アプリ「ギャラ壁」

本日(2011/03/07)のバージョンアップで、小さな画像を拡大して壁紙を生成する際に画像の拡大方法のパターン「自動(推奨)」「拡大」を選べるようにしました。
言葉だけではわからないと思いますので、下に実例をあげます。

※2011/03/09 より適用範囲を広げた +α版を公開(Free Ver2.4.0.1 / Pro Ver2.5.0.1)

拡大パターンが検出されると、下のようなメニューが表示されます。
拡大では自動(推奨)と拡大を選択することができます。

1.「自動(推奨)」全体が収まるサイズで拡大するパターン



2.「拡大」は、画面サイズいっぱいに広がるように拡大するパターン

このQBは横長画像なので、スクロール画面一面に渡って拡大





※イカちゃん



※壁紙設定アプリ「ギャラ壁」は、画面、画像サイズによって
14パターンの壁紙設定がほぼ自動で行われるようになっています。
特にスマートフォン向けの画像サイズでなくとも
自動的にトリミング・拡大・縮小を行って、待ち受け画面やロック画面用の壁紙を作成できます。

ダウンロードはこちら「アンドロイドマーケット」
使い方「Galaxy Sにスマートフォン用壁紙を設定する.2

※ぶたのウィジットは「ぶためも」、フォロワーさんのウィジット型メモアプリです。

※小さな画像 ex.480x800の端末 縦長画像(横960px以下、縦<横)、横長画像(横480px以下、縦>横)

2011年2月22日火曜日

ドコモ版Galaxy S AndroidOS Ver2.2.1バージョンアップ支援

[ドコモ版 Galaxy S SC-02B のアップデートお祝い]

OS2.2.1から新しく追加された壁紙設定を取り上げます。

変更点1.
このバージョンから壁紙の設定のバリエーションが追加されて
Ver2.2までの横長壁紙を基準とした設定から、
縦長壁紙を基準とした設定も選べるようになります。

変更点2.
縦長壁紙を設定すると、壁紙がスクロールせずに固定されます。

変更点3.
ロックスクリーン用壁紙の設定が追加
個別には書きませんが、設定-->画面-->壁紙の順に移動することで
ホーム画面、ロック画面の壁紙設定が可能になっています。(OSの機能では無かったはず)


[Android OS Ver2.2.1からの壁紙の設定方法]

1.ホーム画面でメニューボタンを押します。


2.WallPaperを選びます。日本語だとたぶん「壁紙の設定」


3.表示されるダイアログからHome Screen Wallpaper を選択します。


4.Galleryが表示されます。

5.壁紙として貼り付けたい画像を選択します。

6.画像を選択するとトリミング画面が表示されます。
Android OS Ver2.2.1からは、下の画像にあるように「横長」に加えて
「縦長」タイプのトリミングができるようになりました。

7.トリミング範囲を指定して保存します。


8.壁紙設定完了


-------------------------

※ギャラ壁は、Android OSVer2.2.1とVer2.2では挙動が違います。
Ver2.2ではスクロールするため横に2枚並ぶように壁紙を生成していますが、
Ver2.2.1からは画面固定に対応した1枚壁紙を生成します。


「ギャラ壁 Free/Pro」は上記設定が、自動でできるツールです。
Android用壁紙作成・設定ツール 無料版「ギャラ壁 Free」Ver2.2.0.0
Name: GalaKabe Free
Url: http://market.android.com/search?q=pname:com.blogspot.sakaneya.galakabe


Android用壁紙作成・設定ツール 有料版「ギャラ壁 Pro」Ver2.3.0.0
Name: GalaKabe Pro
Url: http://market.android.com/search?q=pname:com.blogspot.sakaneya.galakabepro

【機能】
・ギャラリーやWEB上の画像を壁紙に変換します。
・WEB上の画像を壁紙として利用できます。
・標準のツールとは違い拡大をしない変換のため、壁紙がぼやけることがありません。但し 横479ドット以下 縦799ドット以下の画像については拡大を行います。

・Exif回転情報付きのJPG画像が適切に扱えます。(Pro版のみ)
・ギャラリーで回転された画像に対応します。(Pro版のみ)
・iPhone用サイズの壁紙の変換が可能です。(Pro版のみ)
・壁紙生成専用のモード(Pro版のみ)

2011年2月21日月曜日

Galaxy SにSDカードが刺さっているかどうかを確認する

一般向けには、Settings->SD card and phone storageで確認出来ます。


以下はプログラムを組む場合について書いてあります。

「まえおき」
現在Galaxy S専用に撮った写真やムービーをSDメモリにバックアップするアプリを作っています。
作っていて問題になったのは、バックアップ先のSDカードが携帯に刺さっているかを判断する方法が「Galaxy S(たぶんシリーズ的に)」存在しないことです。
このような各種チェックはバックアップ先の容量等...を確認するために必要です。


Galaxy Sは他のAndroid機と外部SDメモリの扱いがかなり違います。
端折って書きますが、Galaxy S以外の多くのAndroid機では外部SDメモリが刺さっているかどうかをAPI的に判断出来ます。


たとえば
public boolean isMountedExSD(){
  return Environment.MEDIA_MOUNTED.equals(Environment.MEDIA_MOUNTED);
}
こんな感じ、でもこれはGalaxy Sには使えません。


詳しくはu-sukeの日記「2010-12-11 Nexus one と Galaxy S の違いにハマる
やAndroid会のログ「 Galaxy S の マイクロSDカードマウントについて質問です。
に考察があります。


「対応」
SDカードが抜かれている場合に取得出来る容量は、内蔵メモリ(SD)の容量と同じ事を利用して、下のように組みました。

つまり
アンマウント状態:内部、外部とも同じ容量が返ってくる
マウント済み:内部、外部で違った容量
で判断してます。


/**
* Galaxy Sに外部SDメモリがマウントされているか否か
* @return true:マウントされている false:マウントされていない
*/
public boolean isMountExSD_GalaxyS(){
  //内蔵メモリのパス
  String pathIn = getSdMountedPath();

  //外付けSD用のパス
  String pathEx = getSdMountedPath() + "/" + "external_sd";

  long exAvailableSize = getAvailableSize(pathEx);
  long exALLSize = getSize(pathEx);

  long inAvailableSize = getAvailableSize(pathIn);
  long inALLSize = getSize(pathIn);

  if(exAvailableSize != inAvailableSize && exALLSize != inALLSize)
    return true;
  
  return false;
}

/**
* SDメモリカードパスを取得
* @return
*/
public String getSdMountedPath(){
  File exMountedPath = Environment.getExternalStorageDirectory();
  if(exMountedPath == null)
    return null;
  
  return exMountedPath.getPath();
}

/**
* path先の使用可能容量を返す
* @param path 探索先
* @return 0:失敗 0以外:メモリ容量(Byte)
*/
public long getAvailableSize(String path){
  StatFs fs = new StatFs(path);
  long bkSize = fs.getBlockSize();
  long avaBlocks = fs.getAvailableBlocks();

  return bkSize * avaBlocks;
}

/**
* path先の総容量を返す
* @param path 探索先
* @return 0:失敗 0以外:メモリ容量(Byte)
*/
public long getSize(String path){
  StatFs fs = new StatFs(path);
  long bkSize = fs.getBlockSize();
  long bkCount = fs.getBlockCount();

  return bkSize * bkCount;
}
例外処理とかnullチェックは適当に追加してください。

2011年2月11日金曜日

自分のAndroidアプリに LibAndroTranslationを組み込んで翻訳してもらおう!!

Androidライブラリ「libandrotranslation」を使ってみました。
もの凄く簡単に「翻訳支援機構」が自分のアプリの取り込める事ができてお勧めです。

LibAndroTranslationとは:
libandrotranslation ホームから引用ここから
--------------------------------------------
LibAndroTranslationはAndroidアプリの多言語化を助けるためのライブラリです。

通常、アプリの国際化対応は開発者が行います。

しかし、実際に開発者がたくさんの言語のリソース(strings.xml)を用意することは非常に難しいです。

LibAndroTranslationではすべてのリソースを開発者が用意するのではなく、 アプリ自体にリソースの翻訳画面をもたせて 親切なユーザがリソースを翻訳し開発者に送信できる環境を提供します。


-------------------
引用ここまで


何が便利か:

1.翻訳したいリソースを別に用意する必要が無い
   res/valuses/に存在するxmlリソース名を元に以下の画面の様な
   アクティビティを自動生成してくれます。
送信者 Android blog Sakaneya

翻訳してくれるユーザーは、以下の様に翻訳文を入力することになります。
送信者 Android blog Sakaneya


上記アクティビティのメニューにメールが用意されており、
翻訳結果がXMLファイルとして開発者の元に届きます。

リソース名の突き合わせは必要ありません
そのまま使えるXMLファイルが送られてきます。
送信者 Android blog Sakaneya


2.導入が簡単
導入方法は「Description」にあります。

手順通りeclipseに一度インポートしてしまえば、eclipseにライブラリとして認識されます。
後はただ導入したいプロジェクトにライブラリとして追加するだけです。
送信者 Android blog Sakaneya


3.サンプルがそのまま流用できる
インテントで設定ページのアクティビティを呼ぶだけです。
私はpreferenceの1つに「Translation」という項目を設けて実装しました。
サンプルコードをそのまま使ってます。

送信者 Android blog Sakaneya

Preferenceに項目として出すよう「translation」を記述
/res/xml/preference.xml



  




以下の様に設定を表示するpreference表示アクティビティにリスナーを仕込み
/src/../PreferenceActivity.java
//「その他」カテゴリーのリスナー設定
private void setOther(){
  Preference setOther3 = findPreference("translation");
  setOther3.setOnPreferenceClickListener(new PreferenceClickListener());
}

//リスナー
private class PreferenceClickListener implements OnPreferenceClickListener {
 public boolean onPreferenceClick(Preference preference) {

  if(preference.getKey().equals("translation")){
   translation();
   return true;
  }

  return false;
 }
}
 

それに反応するメソッドを書く(この部分がサンプルソース)
/src/../PreferenceActivity.java続き
private void translation(){

    String mailAddress ="sakaneya@gmail.com";
    String versionName = DeployUtil.getVersionName(this);
    String aboutApp = APPLICATION_NAME + " "+SUFFIX+" ver"+versionName+"\n" ;

    Intent intent = new Intent(this, TranslationListActivity.class);
    // 翻訳データの送信先メールアドレス
    intent.putExtra(TranslationListActivity.INTENT_EXTRA_MAIL_TO, mailAddress);

    // 翻訳データのメールの題名に入るアプリ名
    intent.putExtra(TranslationListActivity.INTENT_EXTRA_MAIL_APPNAME, aboutApp);
    ArrayList ignores = new ArrayList();
    ignores.add("app_name");
    ignores.add("no_i18n.+");

    //無視するリソース名を入れる
    //strings_about.xml
    ignores.add("String_AboutEmailDescription");
    ignores.add("String_AboutTwitter");
    ignores.add("String_AboutTwitterDescription");
    ignores.add("String_AboutBlogDescription");

    // 翻訳画面に表示させたくないリソース名のパターン(正規表現)
    intent.putExtra(TranslationListActivity.INTENT_EXTRA_IGNORE_PATTERNS, ignores);

    // 翻訳データの保存先を変更したい場合に指定する
    // デフォルト Environment.getExternalStorageDirectory()+"/MyTranslation"
    // intent.putExtra(TranslationListActivity.INTENT_EXTRA_DIR,
    //              Environment.getExternalStorageDirectory()+"/LibAndroTranslationSample");
    
    this.startActivity(intent);
}


まとめ.
簡単に導入できるので是非使いましょう。
私の第1弾はスウェーデン語になりそうです。