takaiwa.net

Android、Java、Web系、Linux、マラソン等の備忘録

2013/12/26

Webページのコメント表示アプリ「Page Commentator」バージョン1.0をリリースしました

0 件のコメント

Android端末で記事閲覧中に、共有ボタンからPage Commentatorを起動すると、はてなブックマークコメントとTwitterコメントを一覧表示するアプリです。Webページに対する反応を素早く閲覧することができます


特にソーシャルボタンやコメント欄などが設置されていないWebページで効果を発揮します。例えば、NHKニュースサイトや、企業のプレスリリースなどなど。そういうサイトでなくても、人気コメントをピックアップして表示することもできるので、なんでこの記事は話題になっているのか?などを手っ取り早く知るきっかけに。

特徴

  • アプリの起動は”共有”から
  • はてなブックマークコメントおよびTwitterのコメントを時系列(新着順)、または人気コメント一覧で表示可能
  • コメントの少ないスマートフォン専用サイトでも、PC版ページのコメントを探すことが可能(精度はぼちぼちです)
  • フィルタ機能によりツイート内のコメントだけを見やすく表示(精度はぼちぼちです)
  • はてなブックマークコメントに対してスターを追加可能
  • Twitterコメントに対して、返信、リツイート、お気に入りへの追加可能
  • アプリ内のソーシャルボタン
    • はてなブックマーク数やツイート数などを表示
    • タッチすると公式ページを開いたり、つぶやいたり、ログイン/ログアウトなどの操作が行えます
  • 閲覧履歴

Google Play

ヘルプページ

その他

たまにアプリが落ちるなどの問題も抱えておりますが、なかなか良い感じのアプリができたと、自負しております。Web閲覧ライフの視野を広げるお手伝いができればと思います。宜しくお願いしますm(_ _)m

2013/12/23

Androidのlogcatで遊ぶ

0 件のコメント

経緯

マルチモニタ厨としてはメインで使っているWindowsマシンを二画面にしており、Eclipseのウィンドウ2枚をそれぞれ置いて作業しているわけですが、片方をLogcat専用にしてデバッグしたり、
  • ソース編集(Eclipse) + ソース閲覧(Eclipse)
  • ソース編集(Eclipse) + ブラウザ
のような組み合わせでも作業したりで、いちいち切り替えるも面倒でログ専用にもう一枚画面が欲しいところです。その傍らに、Googleカレンダーなどを表示したり、定期スクリプトを動かしたりしているUbuntuがあり、Ubuntuの端末はフォントも綺麗なので、どうにかここでtail -fで表示できたらなと思った次第です。

環境

  • Windows 7
  • Ubuntu 12.04
  • 初代Nexux 7 Android 4.3

WindowsマシンのlogcatをUbuntuへ

まぁ、以降はUbuntuメインでやれって話ですが、上記経緯のような環境ということで。WindowsのlogcatをUbuntuに表示してみたいと思います。

Windows⇒Ubuntu連携

特にUbuntuへsambaを入れなくても共有できた気がします(忘れました)。Ubuntuの画面でホームフォルダーを起動してフォルダ上で右クリック、「共有のオプション」の設定で同LAN内のWindowsから見えるようになった気がします。Windowsでは、ネットワークドライブの割り当てでSドライブに割り当てました。

次に、WindowsのAndroid SDKが入っているディレクトリへ移動し、adb.exeが入っているplatform-toolsディレクトリでコマンドプロンプトを開きます。そこで、先ほど割り当てたSドライブへログを流すべく
adb logcat > S:\androidlogcat.log
とコマンドを打ちます。そうすると、logcatの内容がandroidlogcat.logへ吐かれ続けます。それをUbuntuの端末で

tail -f androidlogcat.log

と実行すると、Windowsのlogcatで流れるものと同じものがUbuntuに表示されます。

だがしかし見辛い!

2013/12/20

Windows7右クリック送るで複数ファイルを移動

0 件のコメント

経緯

デジカメで撮った画像やダウンロードした画像、お絵かきソフトで作った画像は、だいたいデスクトップに置いて、アップロードするなり編集するなりするわけですが、

アプリなどを作ってたりすると、ゴミ箱に捨てたり、または別途フォルダにて整理してたりすると、後になってあの画像どうしたっけ!?ということがよく起きるようになりました。なので、管理が煩わしくないようゴミ箱とは別に一律に画像を格納する専用フォルダを用意しました。それのフォルダをデスクトップ(Cドライブ)ではなく、容量の大きいDドライブに置いてるものですから、デスクトップにはショートカットを置いていて、デスクトップから右クリックのドラッグ&ドロップして移動なんてことをするのが割りと面倒で、右クリックでそのフォルダへ移動できたらなと思ってちょっと調べたものです。

やり方

どうやって、移動させるかについては、「送る」の中にWindowsコマンドを実行するようにして、そのWindowsコマンドが移動を担います。で、複数ファイルを選択できるように複数あればループするようにするとこんな感じです。
:Loop
If "%~dpn1"=="" Goto :EOF
MOVE %1 "D:\picture\inbox"
Shift
Goto Loop
これを、「画像置き場へ移動.cmd」みたいなファイル名で、
C:\Users\{ユーザ名}\AppData\Roaming\Microsoft\Windows\SendTo
に保存してやればおkです。

注意

コマンドなので、移動先にあるファイルと名前がかぶっていても問い合わせがありません。上書きされてしまうようです。

参考

2013/12/11

透明板を雑にカットして二重窓をDIY

2 件のコメント
なんで雑にカットかと申しますと、大して道具を持ってない素人が透明板をカットしようと思うと、どう頑張ってもクオリティの低い仕上がりになってしまうわけでして....

経緯


古い家に住んでるんですけども、東向きの窓で、朝は朝日が入ってきて今の時期エアコンなんかを点けてると窓の近くで猫が日光浴をするのですが、本当に暖かいの?と思うわけです。

寝起き

エアコンも同様に古いですし、この磨りガラス1枚隔てて外では冷たい風が吹き付けてると思うと、温めているそばから冷やしてるように思えてエネルギー効率が悪いんじゃないかと。なんか直感的に、外との境が薄いだろうというこで、光も通すようにアクリル板なんかを張ったらいいのではと調べてみました。

2013/11/30

プログラミングのマウスとキーボード

0 件のコメント
Amazonのレビューが良くて特に考えずマウスの買って失敗したのでメモしておきたいと思います。

今まで

プログラミングをするにあたり、Windows 2000やXPが全盛の頃は、使い勝手にストレスなければいいと思ってたのと、会社で支給された古いThinkPadの赤いトラックポイントでポインタを操作していたので、そこまでコダワリはありませんでした。また、その頃は有線のMicrosoftのマウスがコスパ良かったんじゃないでしょうか。それから月日が経って、今はデスクトップメインでやっているのですが、無線は高い(勝手なイメージ)とか、別に無線である必要ないとか思って、有線マウスを使ってきましたが(下写真)、いい加減コードが微妙にひっかかたり、劣化でクリックの反応鈍くなってきました。


今見るといいお値段の有線マウス買ってたっぽいです。なんかそんな事を忘れて粗雑に扱ってきた気がしますが...他の色だと安くてこの色は未だに2000円台な模様
お値段だけあって、使い心地が良かったです。小さいのが特徴で、ノートPC向けと言った感じで、デスクトップで使うにはもう少し大きさが欲しいのですが。でもポインタがブレることなく小指と親指でスーッと動かせます。ホイールが適度に重いのも良いです。

仕様

  • 分解能:800 dpi
  • 読み取り方式:光学センサー方式
  • ボタン:2ボタン、ホイール(スクロール)ボタン
  • ケーブル長:1m
  • サイズ:W52×D93×H34mm
  • 重さ:不明。電池入ってないし、下記のより全然軽い

2013/11/28

Opera 18.0 の設定などのメモ

0 件のコメント
別のPCに最新Operaをインストールしてみて、今までのと違うという印象から最新にするのをためらっていましたが、最近Twitterの画像などが表示されず、またTwitterの短縮リンクもなかなか展開してくれないのと、バージョン「15」より前のバージョンに脆弱性があるとのことで、
・「Opera」旧バージョンにXSSの脆弱性、最新版にアップデートをhttp://internet.watch.impress.co.jp/docs/news/20130912_615287.html
バージョン12.6はおさらばして、最新のOpera 18をインストールしました。使い勝手ががらりと変るので、以下にメモしておきます。(内容は使いながら随時追加)

2013/11/26

PCastTV3が予約録画してくれなくなった

1 件のコメント

バージョン

  • PCastTV3 Ver:1.29
  • デバイス:BUFFALO DT-H70/PCIE Video Capture
  • OS: Windows 7

タスクスケジューラには登録される

おまかせ録画にしろ、手動によるテレビ欄からの録画予約にしろ、予約はタスクスケジューラへ登録されるようです。
コントロールパネル > 管理ツール > タスク スケジューラ

適当に予約録画を入れて、タスクスケジューラの挙動を見てみると「タスク エンジンはタスク開始のメッセージを受信しました」と表示され、タスクスケジューラ的には問題なく動作させているようです。PCastTV側の問題だろうとは思いますが....

何が原因かわらず

上記のようにタスクスケジューラで確認したり、ログを見たりしましたが、これ以上調べようがない気がしてきました。PCastTV側の問題と推測できたところで、PCastTV3だけアンインストールして、インストールしてみたいと思います

2013/11/20

Tera Term設定メモ

0 件のコメント

バージョン

  • Version 4.79

フォント

デフォルトのが嫌だったので、Consolas + メイリオに。こちらを参考に
・TeraTermで日本語が化ける件あれこれ - kamata-net.com
http://blog.kamata-net.com/archives/002729.html


若干日本語の幅の手持ち無沙汰感はアレですが。

自動ログイン

セキュリティ的なことを考えるとあまりよろしくないですが、セキュリティ的に問題ないものであれば、毎回のパスワードの入力から解放されるのでやっておきたいです。
・Tera Termマクロ活用入門(1):各種ログインを自動化する 3ページ | SourceForge.JP Magazine
http://sourceforge.jp/magazine/10/01/08/0825239/3
 ここのttlファイルをttpmacro.exeで起動してやれば、自動ログインできるようになります。ショートカットなどのコマンド的にはこんな感じで起動します
"C:\Program Files (x86)\teraterm\ttpmacro.exe" "/V" "C:\hoge\sub2login.ttl"

背景

見やすさで言えば黒のままが良いのですが、まあ黒一色も飽きてくるので気分転換に。上記リンクでも触れられてますが、
設定→その他設定→表示タブ→半透明度
の値を200~220にすると雰囲気でます。僕はWindows7で壁紙をランダムにしているのですが、壁紙が白っぽいと、見辛くなってしまうのでTera Termに固定の壁紙を設定してみたいと思います。

画像を編集

ただ、単に壁紙固定でも雰囲気出ないので、こちらの画像を使って


GIMPで編集。

  • メニューの色→明るさ-コントラスト→明るさ:-127
  • メニューのフィルタ→ぼかし→ガウシアンぼかし→水平:120,垂直:120



壁紙に設定

Tera Termのメニュー設定→その他の設定→表示タブ

  • 「Eterm風にする」にチェック
  • 「背景画像」に上記背景画像のパスを設定
  • OKボタンを押して、設定を保存してから、Tera Term再起動する


なかなか雰囲気があっていいですね。ただ、一部文字の色が見辛いですが、そこら辺はおいおい。

参考

・TeraTermで日本語が化ける件あれこれ - kamata-net.com
http://blog.kamata-net.com/archives/002729.html
・Tera Termマクロ活用入門(1):各種ログインを自動化する 3ページ | SourceForge.JP Magazine
http://sourceforge.jp/magazine/10/01/08/0825239/3

追記:2013/11/24

背景は、ゲームの壁紙とか使うと雰囲気でるかも

PR

UbuntuにApache + PHP + PostgreSQL + αインストールメモ

0 件のコメント

Apache

インストール

 sudo apt-get install apache2

動作確認

ブラウザで
http://localhost/

ServerNameを設定

sudo vi /etc/apache2/apache2.conf
にServerName hoge.takaiwa.netを追加

PostgreSQL

インストール

Ubuntuソフトウェアセンターからインストール

動作確認

とりあえず、confファイルをtrustにしておく
sudo vi /etc/postgresql/9.1/main/pg_hba.conf


[再起動]
sudo /etc/init.d/postgresql restart

ログインできることを確認
psql -U postgres

PHP

インストール

sudo apt-get install php5 php5-pgsql

[Apacheを再起動]
sudo /etc/init.d/apache2 restart

動作確認

/var/www/にファイルを作成
sudo vi testphp.php

ファイルに<?php phpinfo(); ?>と入力して、ブラウザで確認
http://localhost/testphp.php

PHP⇔PostgreSQLの確認

上記testphp.phpに以下を記述。
$conn = pg_connect("host=localhost dbname=hogehoge user=foo");
エラーが出るかどうかを見る
tail -f /var/log/apache2/error.log
ブラウザで表示してエラーログに何も出なければOKということで。

+アルファ

Codeigniterの設置

既にWindows上のApacheとかで動かしていたものを、Ubutntu上へ持ってきたメモです。

  • /var/www/の適当なところに一式置く
  • 権限がnobodyになっているので、適当なのに変える
    • sudo chown -R hoge:hoge htdocs
  • ディレクトリの位置が変更(index.phpのディレクトのパス)
    • sudo vi /etc/apache2/sites-enabled/000-defaultのDocumentRoot,Directoryに設定
  • .htaccessを設置
    • 中身
      • http://codeigniter.jp/user_guide_ja/general/urls.html
      • imagesディレクトリの階層にスタイルシートやJavaScriptのディレクトリにある場合には、以下のようにディレクトリを追加する。ここではresourcesディレクトリにまとめてある
        • RewriteCond $1 !^(index\.php|images|resources|robots\.txt)
    • mod_rewriteを有効にする
      • sudo a2enmod rewrite
    • Apacheで有効にする
      • sudo vi /etc/apache2/sites-enabled/000-default
      • AllowOverride Allにする

ZendGdataの設置

  • 手元のZendGdataを/usr/lib/php5へコピー
  • sudo vi /etc/php5/apache2/php.ini
    • 追加:include_path = "/usr/lib/php5/ZendGdata/library"
  • Apacheリスタート

参考

2013/10/28

項目にアイコンを表示するAlertDialog.Builderのダイアログ

0 件のコメント
Androidアプリ中に、AlertDialog.Builderを使って、いろいろな場面でダイアログを表示させてると、処理をまとめたくなるわけですが、あと、アイコンなんかも表示したいなと、


ググってたらスマートなやり方(下記Tom Esterez氏の回答)がありました。
・android - how to add icon in alert dialog before each item? - Stack Overflow
http://stackoverflow.com/questions/3920640/how-to-add-icon-in-alert-dialog-before-each-item
itemsの中身を代えてやれば、簡単に項目の追加削除が行えますね。使い回せそうなクラスが割りと完結に書けたので、アイコンなしバージョンも合せてメモしておきます。

2013/10/09

Androidプロジェクトの実行時にDx warningやConversion to Dalvik format failedと言われてしまう件

0 件のコメント
まだちょっとよく分かってないのですが、メモを残しておきます。

AndroidプロジェクトのlibディレクトリにいくつかJarファイルを追加して、実行しようとするとEclipseのコンソールに以下のようなメッセージが表示されてしまう現象なのですが、
[2013-10-09 21:59:20 - HogePj] Dx warning: Ignoring InnerClasses attribute for an anonymous inner class
(org.htmlparser.beans.BeanyBaby$1) that doesn't come with an
associated EnclosingMethod attribute. This class was probably produced by a
compiler that did not target the modern .class file format. The recommended
solution is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of ignoring
this warning is that reflective operations on this class will incorrectly
indicate that it is *not* an inner class.
同じようなエラーが、
  • org.apache.commons.httpclient
  • org.apache.commons.logging
についても表示されています。あと、コンソールの最後に
[2013-10-09 22:06:17 - Dex Loader] Unable to execute dex: Multiple dex files define Lorg/htmlparser/util/SimpleNodeIterator;
[2013-10-09 22:06:17 - HogePj] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lorg/htmlparser/util/SimpleNodeIterator;

と表示されていました。検索してみると、プロジェクトのクリーンがうまくいってない感じの記事がヒットします。
・"Conversion to Dalvik format failed with error 1" の解決策 - 某ソフト作者の開発日記
http://d.hatena.ne.jp/halts/20120516/1337170409
こちらのやり方を試してみましたが、ダメでした。
・java - Android - Apache commons libraries & Exchange Web Service Managed API - Stack Overflow
http://stackoverflow.com/questions/8524208/android-apache-commons-libraries-exchange-web-service-managed-api
Ansdroid already contains commons-http (not sure which version is used, but it is 4 or better), so you have to ensure that your build process does not pack aleready contained jars into apk.
こちらに、commons-httpは既に入ってるという風に書かれているのをヒントに、以下の対応を行いました。
  • htmlparser.jarとhtmllexer.jar → libsから別ディレクトリへ移動させ、ビルドパスへ外部JARとして適用
  • commons-httpclient.jar → libsから削除
  • commons-logging.jar → libsから削除
この対応で、プロジェクトをクリーンしてビルドすると警告等出なくなり、起動できました(゜∀。)

2013/10/02

猫が1歳くらいになったのとこの1年を振り返って

0 件のコメント
昨年10月末に猫を拾ったときが、推定1ヶ月だったので、

拾った日

たぶん1歳くらいになりました。

最近

エサ

エサを12ヶ月までの子猫用から、


普通のエサにしました。


子ねこ用に比べ、他にも種類があったのですが、マグロと野菜味にしてみました。

2013/09/28

JavaではてなAPIのOAuth

0 件のコメント

あらすじ

ここのドキュメントにあるお話をJavaでやってみようと
・Consumer key を取得して OAuth 開発をはじめよう - Hatena Developer Center
http://developer.hatena.ne.jp/ja/documents/auth/apis/oauth/consumer
サンプルコードもあるんですけど、Perl版とRuby版しかなくてどっちもあまりやったことないので一筋縄にいきませんでした。

OAuthのJavaライブラリ

OAuthのライブラリは、oauth-signpostを使いました。
・oauth-signpost - Simple OAuth message signing for Java - Google Project Hosting
http://code.google.com/p/oauth-signpost/
アクセストークン取得までは、GitHubにあるTwitterのサンプルですが、これを参考にサクッと取得ができました。
・signpost-examples/OAuthTwitterExample/src/TwitterMain.java at master · mttkay/signpost-examples · GitHub
https://github.com/mttkay/signpost-examples/blob/master/OAuthTwitterExample/src/TwitterMain.java

2013/09/27

Android JUnit testかJUnit testかでログの出力先を切り替える

0 件のコメント
テスト駆動開発でコーディング、テスト、リファクタリングというサイクルを素早く回す必要があるのですが、Eclipse上のAndroidでやる場合Android JUnit testは端末へのインストール処理を挟むためどうしても起動が遅いです。

起動で一呼吸している間にモチベーションや集中がどっかへ行ってしまいます。そのため、極力ロジック部分を切り離して(Androidを含まない)JUnit testとして起動した方が光の速さで起動するので良いと思います。それに伴って、特に意識せずにAndroidとロジック部分の結合度も下がるというメリットもあります
※「特に意識せず」というのはAndroidのクラス利用しようとしてたらコンパイラが指摘するから

ただ問題なのがログですね。テスト対象のクラスに埋め込むandroid.util.LogのLog.v("tag", "message")という感じで使うLogcatに表示してくれるメソッドは、JUnit testで起動するとエラーが出ます。使えるようにする方法もあるのかもしれませんが、以下のようなやり方を思いついたので掲載しておきます。

Log.vの箇所に下記のようなクラスを利用します。システムプロパティの文字を判定して、Log.vかSystem.out.printlnかをif文で分岐させてるだけです。

import android.util.Log;

public class MyLog {

    private static String runtime =
        System.getProperty("java.runtime.name");

    public static void v(String tag, String msg) {

        if(0 <= runtime.indexOf("Android")) {
            Log.v(tag, msg);
        }
        else {
            System.out.println(tag + ":" + msg);
        }
    }
}

ちなみに、System.getProperty("java.runtime.name")の戻り値は、
  • Android JUnit test実行時 : Android Runtime
  • JUnit test実行時 : Java(TM) SE Runtime Environment
という文字列を返します。
まあ、でも結合テストや運用のログには中で分岐させてるのは好ましくないかもしれませんね。テスト駆動開発用ということで。

代替案として、Eclipseへ新たにJavaプロジェクトを追加して、そこでロジック部分をテスト駆動で実装する。テストが終わったら本プロジェクトにコピーしてやる。ログの部分は同じようにMyLogクラスを設け、双方同じ名前のパッケージ内入れてLog.v (本プロジェクト側)やSystem.out.println (新たに追加したプロジェクト側)で出力してやれば、テスト済みのクラスを本プロジェクトへコピーするだけでいけます。

追記:2013/12/27

>代替案として、Eclipseへ新たにJavaプロジェクトを追加して、そこでロジック部分をテスト駆動で実装
と書いてますが、代替案としてもやらない方がいいですね。Javaプロジェクトで動くものが、Androidで同じように動くとは限らないので。ライブラリとか使ってる場合とか。当たり前ですね.....

2013/09/26

Android API Level 16でアクションバーの色が変らないメモ

0 件のコメント
values-11やそれ以前からコピぺしたきたstyles.xmlを使ってると、どこがダメなんだよ!と小一時間考えてしまったのでメモしておきます。


values-14のstyle.xmlは以下の通り。基本的には、「android:」で開始されるitem名にしないと適用されないという結論です。

<style name="AppTheme" parent="Theme.Sherlock.Light.DarkActionBar">
    <item name="android:actionBarStyle">@style/Widget.MyTheme.ActionRed</item>
</style>

<style name="Widget.MyTheme.ActionBar.TitleTextStyle"
    parent="TextAppearance.Sherlock.Widget.ActionBar.Title">
    <item name="android:textColor">#ffffff</item>

</style>

<style name="Widget.MyTheme.ActionRed" parent="Widget.Sherlock.ActionBar">
    <item name="android:background">#FF2222</item>
    <item name="android:icon">@drawable/action_log</item>
    <item name="android:titleTextStyle">@style/Widget.MyTheme.ActionBar.TitleTextStyle</item>
</style>

※ActionBarSherlockを使っています。
※直接色の値を記述してたり、どこかの定義を参照してたり、混ざってますがサンプルということで気にしないでください。

API Level毎のActionbarの色の確認は、Eclipseの下図プルダウンのレベルを変更することで行えますが、


たぶん、マニフェストに定義している全体のテーマが反映されてて、

<application
    android:label="hoge"
    android:theme="@style/AppTheme" >

Activity個別にテーマを設定している場合はやっぱりアプリを起動するしかないのかと思っているところです。

PR
Smashing Android UI レスポンシブUIとデザインパターン

2013/09/25

JumblrでPhotoSetとEclipse実行とコマンドプロンプト実行で挙動が異なるなど

0 件のコメント
Tumblr APIのJavaライブラリJumblrが公開されていて、それを使っていろいろとやってみているところです。なかなか一筋縄にいかないです。

PhotoSetの投稿

まずPhotoSetですが、1つの投稿に複数の写真を入れるやつです。GitHubのmasterに公開されているものには実装されていません。photo_postブランチの方に実装されています。
・tumblr/jumblr · GitHub
https://github.com/tumblr/jumblr/tree/photo_post
注意しないといけないのが、ブランチの方はmaster側に実装されているものが入ってなかったりするので、Photo.java、PhotoPost.java、PhotosetPost.javaをとってくるなどしてmasterに良い感じにマージしてやる必要があります。

また、このPhotosetPost.javaはレイアウトの指定ができないので、下記のようなレイアウトが自由に選べません。投稿すると勝手なレイアウトが割り当てられます。


Photo Setのレイアウトは、
・Photo set のレイアウトの指定 - p’s diary
http://d.hatena.ne.jp/poochin/20120329/1332994978
こちらで書かれているように、数字の羅列を一緒に送ってやれば良いそうです。なのでPhotoPost.javaを開いて、以下のdetailメソッドのようにphotoset_layoutを追加してやれば、レイアウトも指定できます。

/**
 * Get the detail for this post (and the base detail)
 * @return the details
 */
@Override
public Map<String, Object> detail() {
    Map<String, Object> details = super.detail();
    details.put("type", "photo");
    details.put("link", link);
    details.put("photoset_layout", photoset_layout);
    details.put("caption", caption);

    if (pendingPhotos != null) {
        for (int i = 0; i < pendingPhotos.size(); i++) {
            PhotoType type = pendingPhotos.get(0).getType();
            if (type != null) {
                details.put(type.getPrefix() + "[" + i + "]", pendingPhotos.get(i).getDetail());
            }
        }
    }

    return details;
}

ちなみに、ネットの情報によれば写真は1日75枚までという制限があるようです。ドキュメントには容量制限以外は特に書かれてないのですが。

2013/09/21

Evernoet連携のAndroidアプリ「Note Linker」バージョン0.1をリリースしました

0 件のコメント

Note LinkerはEvernoteのノートリンクを集めた目次(ノート)を作成する無料アプリです。

Windows クライアントでのイメージ

ノートを目次としてまとめる事で、ノートを探す手間を減らすことができます。

アプリのホーム画面

アプリの目次閲覧画面

このアプリの特徴的な部分は、目次の元となるノートにバックリンクを挿入することができる点です。ブログのような感覚でリンクを辿ることで、スムーズにノートを閲覧できます。

Evernoteに旅行の写真とか入れてる方は旅行アルバムの目次として、アイデアをとりあえず突っ込んでる方はアイデア集の目次として作成すれば、あのノートどこへやったっけ?という手間の軽減にお役に立てると思います。


Note Linker ヘルプページ

ご意見・ご感想・不具合のご報告などお気軽のお問い合わせください。お問い合わせ方法は、

また、Google Playでの評価をお待ちしておりますm(_ _)m

2013/09/19

Android 現状の見てる状態の画面回転をロック

0 件のコメント
Android端末でごちゃごちゃ処理している時に画面を回転させると、onDestroyが呼ばれActivityが再生成されて面倒なわけですが、ちょっとした処理を待たせるような時はActivity再生成の対策を考えるよりは画面を固定してしまった方が面倒なことも少ない。というわけで、ググってみるとあまりコレだ!という感じのがなかなか出てこないのでメモしておきます。

まあ、(たぶん)昔の端末は画面の回転は縦か横かだったのが、最近のは画面の向きに即して4パターン変る仕様になったのと & ユーザ側で画面をロックしたいなどのアプリ利用でのノウハウもあってすぐに出てこないと言った感じでしょうか。

こちらに、ありがたいメソッドがあるのですが、
・Androidで回転を固定にしたり解除したりする方法について : 新・開発者の戯言
http://blog2.kojin.biz/2010/04/23/androidで回転を固定にしたり解除したりする方法につ/
 これは、縦か横かの固定なので、Android 2.1と2.3とかの端末だとうまく行くのですが、Nexus 7とかを逆の縦(逆の横)に向けておいて、このメソッドを走らせると画面がくるんと回って固定されてしまうわけです。そして解除するとくるんと元に戻る。

そういうのもひっくるめていいやり方がありました。
・How to Lock screen orientation when displaying reverse landscape in android? - Stack Overflow
http://stackoverflow.com/questions/6410237/how-to-lock-screen-orientation-when-displaying-reverse-landscape-in-android
autremoiさんの回答でlockScreenOrientation()のメソッド。4パターン判定して固定しています。Surface.ROTATION_180とSurface.ROTATION_270に直接値が入ってますが、これはSCREEN_ORIENTATION_REVERSE_PORTRAITとSCREEN_ORIENTATION_REVERSE_LANDSCAPEがAPI Level 9以上であることから、それ以前用に向けてのことです。
・ActivityInfo | Android Developers
http://developer.android.com/reference/android/content/pm/ActivityInfo.html#SCREEN_ORIENTATION_REVERSE_LANDSCAPE
まあ、そもそもSurface.ROTATION_180にSurface.ROTATION_270入らないので大丈夫のような気がしなくもないですが。

上記2つのメソッドから使い回しできるようstaticメソッドに書き換えたのを載せておきます。

    /**
     * 画面の回転を固定・解除する関数
     * @param flg 真なら回転固定 偽なら回転可能
     */
    public static void lockScreenOrientation(Activity activity, Boolean flg){
        if(flg){
            switch (((WindowManager) activity.getSystemService(Activity.WINDOW_SERVICE))
                    .getDefaultDisplay().getRotation()) {
            case Surface.ROTATION_90:
                activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
                break;
            case Surface.ROTATION_180:
                activity.setRequestedOrientation(9/* reversePortait */);
                break;
            case Surface.ROTATION_270:
                activity.setRequestedOrientation(8/* reverseLandscape */);
                break;
            default :
                activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            }
        }else{
            activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
        }
    }

PR
Androidプログラミングレシピ増補改訂版 アーキテクチャ/UI/ネットワーク編

2013/09/17

AsyncTaskの実行中にProgressDialog表示させ画面回転させるとIllegalArgumentException

0 件のコメント
よくやるやつ。

Activity上でAsyncTaskを継承したクラスのインスタンスを生成。このクラスのコンストラクタでProgressDialogのインスタンスを生成してダイアログを表示。onPostExecuteでダイアログをdismiss()する。このdismissするまでに画面を回転させると、

java.lang.IllegalArgumentException: View not attached to window manager

という例外が発生します。対策の一つとして、そもそも画面を回転させないというのもあり、過去のアプリにもやりましたが、それ以外のとりあえずの対応として、ProgressDialogの処理をActivityにやらせることにしました。

AsyncTaskのインスタンスを生成する前にActivity上にProgressDialogのインスタンスを生成して、AsyncTaskの処理終りにdismiss()。あと、ActivityのonDestroyが走った時に、ダイアログが開いてればdismiss()というやり方でとりあえず手持ちの端末では例外は発生しないようです。

どうやってActivity側からAsyncTaskの処理終りを捕まえるかについてなど処理のイメージは以下のソースで。※手持ちのソースから抜粋したので、コンパイラは通してません。

public class HogeActivity extends Activity {

    private ProgressDialog mDialog = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hoge);

        mDialog = new ProgressDialog(this,
                R.string.msg_loading);
        mDialog.show();

        LoaderTask task = new LoaderTask(){

            @Override
            protected void onPostExecute(Void result) {
                super.onPostExecute(result)
                // 処理終りでダイアログを閉じる
                closeDialog();
            }
        };
        task.execute();
    }

    private static class LoaderTask 
        extends AsyncTask<Void, Void, Void> {

        @Override
        protected Void doInBackground(Void... params) {
            // なんか処理
            return null;
        }
    }

    private void closeDialog() {
        if(null != mDialog) {
            mDialog.dismiss();
            mDialog = null;
        }
    }

    @Override
    protected void onDestroy() {
        this.closeDialog();
    }
}


参考
mokkouyouの開発日記 ProgressDialogとAsyncTaskの(おそらく)正しい使い方
Android/View_not_attached_to_window_manager - tech.cm55.com

PR
AndroidエンジニアのためのモダンJava

2013/09/14

署名付きのapkファイルを書き出すとadmobが表示されない(凡ミス)

0 件のコメント
凡ミスを小一時間悩んだのでのメモしておきます。

Google Playに登録すべくEclipseから署名付きのapkファイルを出力して、Dropbox経由でAndroid端末にインストールしてみると、admobが表示されなくなりました。デバッグ段階では表示されていたのに。

Logcatを見ると、「Cannot find adapter class 'com.google.ads.mediation.admob.AdMobAdapter'. Did you link the ad network's mediation adapter? Skipping ad network.」だの「java.lang.ClassNotFoundException: com.google.ads.mediation.admob.AdMobAdapter」表示されています。ビルドのやり方に問題があるかと思ってましたが、違いました。

admobを表示させるxmlファイルのads:adUnitIdの値が違う値でした。admobのサイトにログインしてそこに記述されているパブリッシャー IDにしてやると、うまく表示されました。

こんなミスをする思い当たる節がありませんが、何かしたのでしょう。解決のヒントは以下のリンクよりいただきました。
・android - What is the class GADMAdapterCustomEvents - Stack Overflow
http://stackoverflow.com/questions/12284188/what-is-the-class-gadmadaptercustomevents
ちなみに、 ビルドに問題がある場合は、こちら↓のお話が参考になるかもしれません。
・Yet Another Diary: Androidで外部JarがAPKファイルに取り込まれなくなった時の対処法
http://yasu-2.blogspot.jp/2012/04/androidjarapk.html

それにしても、Admobのサイトに依頼数がカウントされているので、何をキーにそのアプリが依頼したんだと疑問も残りますが...

[PR]
Smartphone Ads iPhone・Androidアプリへの広告の実装と管理テクニック

2013/08/05

android ListView上にポップアップメニューとUIの葛藤と失敗

0 件のコメント
同じような失敗を繰り返さないよう書き留めておきます。

やりたい事

適当なUIのサンプルがなかったのですが...
こういうドロップダウンなポップアップメニューを、


ListViewの各行に設置して、その行のアイコンをタッチすると表示されるようにしたい。表示するメニューの項目は削除、編集(タイトル変更)という操作など。

このようなポップアップメニューを各行に設けることで、その行に対する操作であることが直感的で分かりやすいのではと思ったからです。
以下、抽象的な話になりますが、
行に対する操作なら、次の点も考えられます。
  • 行をタッチ → 操作用のActivityを起動
    • →そのActivity内に削除・編集のトリガーを設ける
    • →もしくはそのActivityのメニューに削除・編集トリガーを設ける
  • ListViewの子要素に削除・編集トリガを設ける
既に行をタッチでActivityを起動するようにしており、そこにListViewの行の操作をもってくるのは誤解を招きそう。またListViewの子要素は見た目も素直で良いのですが、子要素で操作というのは違和感があるので、どうにかポップアップメニューで考えてみたいと思います。

どうやって実装?

AndroidにPopupMenuというのがあって、これを実現するのに良さそうなのですが、
・PopupMenu | Android Developers
http://developer.android.com/reference/android/widget/PopupMenu.html
APIがLevel11以上....

もうそれなら、Level11(バージョン3.0)以前は利用できないアプリとして考えたのですが、このブログ書いてる最近の記事の利用状況では、
・Google、Androidバージョン別シェアでJelly Beanが40.5%の大台に到達 | 携帯 | マイナビニュース
http://news.mynavi.jp/news/2013/08/04/008/index.html
Level15以上(バージョン4.x系)のシェアが増えつつあるものの、Level10(バージョン2.3.3 - 2.3.7)も未だに33%もあり、また、この1つの機能のために、この33%の方々にゴメンネーするのは気が引け、何かいい方法はないかと模索したところ、似たようなSpinnerで実装してみることにしました。

2013/06/30

七輪で炭火焼きなど 3回目

0 件のコメント
外で冷たい物を飲むにはいい季節になってきました。

今回の食材

  • 焼き物
    • 沖キス
    • 鶏皮
    • 手羽先
    • 玉ねぎ
    • ピーマン
  • その他
    • キュウリともやし鶏肉のサラダ

2013/06/21

Webページを暗くしてダイアログのようなものを表示させる

0 件のコメント
Webページでもたまに見かけますが、Androidとかでダイアログを表示させると、ダイアログの背景は暗くしてダイアログを際立たせるようなエフェクトがありますね。

※Webで自作したもの


今ならフラットデザインがーと聞くので、流行とは逆行しますが。フラットデザインなら、ウィンドウが重なったようなエフェクトはそもそもなくて、ダイアログの中身がそのまま一画面として遷移するといった感じでしょうか。

とは言え、ダイアログは操作的にわかりやすくていいと思いますし、簡単なものであればライブラリを組み込まなくてもググったら意外とぱっと実装できたのでメモしておきます。

2013/06/15

七輪で炭火焼きなど 2回目

0 件のコメント
前回からの反省も踏まえ、また七輪で焼いてみた。この暑い時期、酒を飲む=七輪で焼きながらなのでしばらく毎週のようにやると思う。

今回の食材


  • 焼き物
    • アジ(塩焼き)
    • 鶏皮
    • スペアリブ
  • 野菜
    • 玉ねぎ(写ってないけど)
    • サラダ
    • 豆を茹でたの
  • 豆ご飯のおむすび

2013/06/14

EclipseのJUnit実行完了後に音を鳴らすプラグイン

0 件のコメント
こちらのありがたいテスト駆動開発のお話を基に、

Video streaming by Ustream


Androidアプリケーション開発で、

2013/06/13

猫の夏対策

0 件のコメント
台風による南からの風の影響か今日は今年一番の暑さ。


午前の急な気温上昇についていけない。猫も。

2013/06/11

七輪で炭火焼きなど

0 件のコメント
七輪で焼きものをサクっとできるよう備忘録。

炭火焼きは飲みながらやるのでまずは氷を作る。ロックなどでお酒をいだく場合は、透明な氷が欲しいところ。そういう場合はこちらを参考
・■透明なロックアイスの作り方(透明な氷) - こどもとおでかけ 関西「行ってきました」
http://d.hatena.ne.jp/itekita/20080708/1282006375
透明な良い氷はスーパーなどで買ってくるイメージだったけど、こちらを見つけてから意外と簡単にできるんだと、試してみることに。まあ、自作するデメリットは

  • 完全に凍らせないよう時間を気にしておかないといけない
  • 冷凍庫のスペースをとる
  • 自分で砕く手間

こんなところだろう。まずは容器から、冷凍庫に入る大きさを測ったら、確保できるスペースは幅20cm x 高さ15cmくらい。上記のリンクでは、漬け物容器をオススメされてたので、ホームセンターへ行ってみたら確かに500円以下であったけどちょっとデカいのしかなかった。ということで、円形でないけど費用対効果的によさそうな、K-tool SUPER PACK 1.9㍑お砂糖入れ(98円)を2つ購入。


2つなのは、使用中と凍らせ中の使い分け。サイズは書いてなかったので家で測ったら、幅16cm×高さ12cm 控え目ながらフタもあるし良い感じ。凍らせる目的の容器ではないのだけど。

Windows7のデスクトップに自作ガジェットでWebページを表示させる

0 件のコメント
作業中に使ってるToDo管理Webアプリケーションを予備のパソコンに表示しているが、Androidのテスト中はそのパソコンにデバッグに使ってるeclipseのLogcatを表示させたい。Virtual Boxで動かしているAndroidはIPアドレスがわかればLAN内の別マシンからでも
adb connect 192.168.1.xx
で接続することができ、Logcatを鑑賞することができる。かと言って、このToDo管理も経過時間などを表示しているので、常に表示させておきたいのだけど、メインパソコンで開いてても、よく忘れてままにしていることがあって困っている。そこで、Windows 7のデスクトップガジェットにすれば、他のウィンドウを閉じた時や、ウィンドウを移動した際に思い出すだろうと、Webページを表示するガジェットはないかと探したら、意外と簡単に作れることがわかったので、メモ。

まず、C:\Program Files\Windows Sidebar\Shared Gadgetsにhoge.gadgetというフォルダを作成。

中に以下の3ファイルを作成
  • gadget.xml
  • icon.png
  • page.html

それぞれ中身は、