2015年1月31日土曜日

[スマホアプリ] アイコン配布サイト

検索もできて便利なので、スマホアプリのアイコン画像を探すのに下記2サイトをよく使っています。

FIND ICONS

Iconfinder


[PHP] empty()でCan’t use function return value in write contextが出た場合の対応

empty()関数に変数ではないもの(値を返す関数など)を指定すると'Can’t use function return value in write context'が出ます。

一度、関数の結果等を変数に入れてから、その変数をemptyに渡せばこのエラーは解決されます。

2015年1月22日木曜日

[MS Excel VBA] CSVファイルの文字コードをUTF-8(BOMあり)に変換して保存する方法

CSVファイルの文字コードがShift_JISやUTF-8(BOMあり)でない場合、Excelで開くと文字化けします。これを文字化けしない様にVBAでコード変換するには次のようなプロシージャ(マクロ)を作ると便利です。


このコードを動かす為にはADODB.Streamを使えるようにしなければいけません。具体的には、参照設定にて「Microsoft AxtiveX Data Objects X.X Library」を追加します。

参照設定がわからない人は、参照設定を修正、削除する方法などが参考になります。

参考:
 VBA:VBAでファイルの文字コードを変換するサンプルプログラム
 NonSoft - ADODB.Streamによる文字コード変換のサンプル(VB6)

[Android] [Android Studio] 新規アクティビティ(Activity)を追加する方法

Android Studioにて新しいアクティビティ(画面)をアプリケーションに追加する方法です。 

1. app->java->追加したいパッケージを選択して右クリック(MacはCtrl+右クリック)します。

2. 表示されるメニューから[新規]->[Activity]->好きなタイプのアクティビティを選択します。
 
3. アクティビティ作成のウィザードが開くので必要なら変更して、[終了]を押下します。

4. 作成したアクティビティの定義は自動的にAndroidManifest.xmlに追記されます。(下図の反転部分)



[Android] 任意のアクティビティ(Activity)を初期表示に指定する方法

プロジェクトのAndroidManifest.xmlにて、初期表示に指定したいアクティビティ(画面)の<activity>タグ内に下記のように<intent-filter>を記述します。


2015年1月15日木曜日

[Java] [Amazon Product Advertising API] ASINを指定して本のタイトルと著者を得るサンプル

Amazon Product Advertising API を使って、ASINを与えることで、当該商品(ITEM)の商品名を得るサンプル(Sample Code & Libraries : Amazon Web ServicesProduct Advertising API Signed Requests Sample Code - Java REST/QUERY)をベースASINを指定した書籍のタイトルと著者を取得するメソッドを作ってみました。

作ってみた(元々のサンプルに手をいれた)サンプル => AWSTest

ビルドにはcommons-codecライブラリ(外部jar)が必要ですのでリンク先から取得してプロジェクトに追加してください。

また、実行にはAmazon Access Key ID、Amazon Secret Access Key、Amazon Affiliate IDの指定が必要です。この3つの値をItemLookupSampleクラスのAWS_ACCESS_KEY_ID、AWS_SECRET_KEY、AWS_AFFILIATE_IDのstatic変数にそれぞれセットします。

mainメソッドはItemLookupSampleにあります。

参考:
 ・Amazon Product Advertising API を利用して世界各国の商品価格差リサーチツールを作ってみる | imagination-i
 ・ISBN、UPC、JAN、EAN、ASINとは?

2015年1月3日土曜日

[Android] アプリに端末のカメラ機能へのアクセス許可を与える

アプリから端末のカメラ機能にアクセスしたい時、Androidではアプリ側のAndroidManifest.xmlに次の記述を追加します。

参考
 c.3 カメラ - ソフトウェア技術ドキュメントを勝手に翻訳

[Android] apkファイルに目的のクラスファイルやリソースが含まれているか確認する方法

androidの開発でbuildを実行すると最終的に.apkファイルが生成され、このapkファイルがエミュレータや実機に送られ、アプリがインストールされます(というのが私の理解です。間違っていたらツッコミください) 。

エミュレータ、実機での実行時に何らかのクラスが読み込めないというエラーが生じた場合等、apkファイルにちゃんと目的のクラスファイルやリソース等が含まれているか確認したいと思います。その方法は次の通りです。

d2j-dex2jar.shは

https://code.google.com/p/dex2jar/downloads/list

でダウンロードできますので、ダウンロード後、任意の場所に置いてパスを通します。

参考
 Tips : Android Studio Gradle Pluginでjarをapkに含めずにコンパイルする - [séns]
 

2015年1月2日金曜日

[Android] [Android Studio] jarだけではなくsoファイルが提供される外部ライブラリをプロジェクトに取り込む方法(バーコード読み取りライブラリ Scanditの例)

[Android] [Android Studio] 外部ライブラリ(jarファイル)をプロジェクトに取り込む方法

では、外部jarファイルをapp/libs/に置いて、syncすればよいと書きました。しかし、私用でバーコード読み取り機能を実装するにあたって、Scanditというライブラリを組み込んでみた所、jarファイルの取り込みだけではどうしてもエミュレータ、実機で

java.lang.UnsatisfiedLinkError: Couldn't load scanditsdk-android-4.3.1

という実行エラーが表示され、アプリが実行できませんでした。

Scanditのライブラリはjarファイル

./app/libs/scanditsdk-barcodepicker-android-4.3.1.jar

だけでなく、環境別のsoファイルが用意されています。このエラーはscanditsdk-androidに同梱されているsoファイルがビルドに組み込まれていないために生じたエラーのようです。

ダウンロードしたScanditのライブラリのjarファイル(scanditsdk-barcodepicker-android-4.3.1.jar)と同階層に存在する、armeabi、armeabi-v7a、x86の3つのディレクトリを./app/src/main/jniLibsに階層をディレクトリ構造を保持したままコピーします(jniLibsはディレクトリは存在していないので、 コピー前に作っておきます)。

この状態で、ビルド&実行したところ、UnsatisfiedLinkErrorが解決して、アプリが動くようになりました。

この方法は、一般的にsoが同梱されるライブラリにて同様に使える方法のようです。Scanditの用にsoファイルが提供されるライブラリの取り込み方を整理すると、


  1. jarファイルを./app/libs/にコピーする
  2. 「Project with Gradle Files」を実行する
  3. ./app/src/main/jniLibsディレクトリを作成する
  4. jniLibsディレクトリにsoファイルをディレクトリ構造を保ったままコピーする。(aaa/bbb.soなら、jniLibs/aaa/sss.soになるようにコピーする)


以上です。

参考:
 Adding a .so file in Android Studio
 Include .so library in apk in android studio