[Android]リズムマシン的な物を作ってみた

違う意味でハネてる下手糞ドラマーの完成です。
コーディング時間 2h程度。

[Android]BitmapFactory.Options inSampleSize の性能テスト

BitmapFactory.Options inSampleSize の性能テストとか動作とか

Doc

以下のような事が書いてありますが…

public int inSampleSize

Since: API Level 1
If set to a value > 1, requests the decoder to subsample the original image, returning a smaller image to save memory. The sample size is the number of pixels in either dimension that correspond to a single pixel in the decoded bitmap. For example, inSampleSize == 4 returns an image that is 1/4 the width/height of the original, and 1/16 the number of pixels. Any value <= 1 is treated the same as 1. Note: the decoder will try to fulfill this request, but the resulting bitmap may have different dimensions that precisely what has been requested. Also, powers of 2 are often faster/easier for the decoder to honor.

検証用ソース

1/1から、1/36の設定までを10回ずつループ。
出力された画像の幅と、処理時間の平均を出力。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Resources res = getResources();
BitmapFactory.Options options = new BitmapFactory.Options();
 
int sizeMax = 36;
int count = 10;
 
long[][] result = new long[sizeMax][count];
long start;
 
for (int i = 1; i <= sizeMax; i++) {
	for(int j = 0; j < count; j++) {
		options.inSampleSize = i;
		start = System.currentTimeMillis();
		BitmapFactory.decodeResource(res, R.drawable.image, options);
		result[i-1][j] = System.currentTimeMillis() - start;
	}
	Log.d("width" + i, String.valueOf(options.outWidth));
}
 
double sec;
 
for (int i = 0; i < sizeMax; i++) {
	sec = 0;
	for (int j = 0; j < count; j++) {
		sec += result[i][j];
	}
	Log.d("avg:" + (i+1), String.valueOf(sec/count));
}
 
return null;

出力された幅と処理平均時間

…Continue reading

Android SDK Tools のアップデートに失敗する時の対応

Failed to rename directory
C:\android-sdk\tools to C:\android-sdk\temp\ToolPackage.old01.

上記の様なエラーが発生する場合は、
Eclipse, SDK Managerなど関連のソフトウェアを終了させてから、
最新のSDKをブラウザ経由で落として、SDKフォルダ全体を上書きした方が良い結果が得られるようです。
上書きできない場合は、OSの再起動直後にやると良いです。
ちなみに、r15からr19へのアップデートで発生しました。

なお、下記のようにわかりやすいメッセージが出ている場合はこの限りではありません。

[find_lock] Directory locked by explorer.exe

そろそろ、Javari.jp向けProduct Advertising APIについて書いておこうと思う

Javari.jp向けProduct Advertising API

試行錯誤した結果に分かったことなど(未確認情報)。

概要

詳しくは本家

ASIN-Variations関連情報

ある架空の商品 “Nike Dunk High”(以降P) があるとする、
Pには一つのまとまりとして、商品番号(ASIN型:以降PA)が与えられている。
商品にはバリエーションという概念が存在し、
バリエーションは、カラーとサイズなどによるマトリクスとして存在する。
サイズが7種、カラーが3種だとすると、21個のASIN(以降VA)がそれぞれのバリエーションに割り振られている。
なお、バリエーションが存在しない場合でも、PAとVAが同一となることは無い様子(多分)。

んで、言いたいこと

APIで、itemlookup(商品情報取得)などを行うときに、
上記PAを指定した場合はバリエーション情報を取得できるが、
VAを指定した場合はバリエーション情報を取得できない。
これは、上記の仕様をわかっているならば、納得できるのだが、
意識していない場合には引っかかるポイントとなる。

javariで商品を表示する際のURLは、画面遷移により複雑に形成され、
ユーザからすると、PAなのかVAなのか、そもそもどこがASINなのか判断できない事態が発生する。
たとえば以下。
http://www.javari.jp/%E3%83%A1%E3%83%B3%E3%82%BA/b/53268051/ref=topnav_sd_mn_b?ie=UTF8&pf_rd_r=0P2647JGM0VMRB9BQNYZ&pf_rd_m=A2EVFYIVZSJ3AR&pf_rd_t=101&pf_rd_i=53267051&pf_rd_p=103160009&pf_rd_s=headernav#__ie%3DUTF8%26cAsin%3DB000U74ZUE%26fromPage%3Dsearch%26sr%3D1-1%26qid%3D1333033389696%26asinTitle%3D~~5B~~E3~~82~~AF~~E3~~83~~A9~~E3~~83~~BC~~E3~~82~~AF~~E3~~82~~B9~~5D~~20Clarks~~20Desert~~20Boot%26contextTitle%3D~~E6~~A4~~9C~~E7~~B4~~A2~~E7~~B5~~90~~E6~~9E~~9C%26clientPageSize%3D100%26node%3D53325051%26sort%3Drelevance-fs-browse-rank%26nodes%3D594333051%26rnid%3D594333051%26asin%3DB000UTO1D8%26ref%3Dsr_1_1%26pageCode%3Dd

商品画面を見ると、B000UTO1D8が商品全体のASINという事がわかるが、
外部のシステムから判断するときに、URLベースで判断しようと思うと難しい。
参考に簡略化したURLを以下に示す。

その他

amazon本家のアフィリエイト商品リンク作成にて、
上記PAを指定すると、検索結果が返ってこない。
VAを指定すると、結果は返ってくる。
仕様的に間違ってはいないが、ユーザフレンドリーとは言い難い。

現在見ているページをスマホの解像度で小窓に開くブックマークレット

現在見ているページをスマホの解像度で小窓に開くブックマークレット

リンクをブックマークに登録して使用ください。