私のフラッシュアプリでは、ネイティブのAndroid Java呼び出しである「ネイティブ拡張」を作成する必要がありました。この拡張機能は、すべての画像ファイルとそれに対応するサムネイルで構成される文字列を作成し、それを Flash に返します。
私は Java プログラマーではありません。Android コードを書くのはこれが初めての試みです。それで、2日間掘り下げた後、私はこれを思いつきました:
public String getThumbPaths(Uri uri, ThumbContext ctx) {
String out = "";
Cursor cursor = MediaStore.Images.Thumbnails.queryMiniThumbnails(ctx
.getActivity().getContentResolver(), uri,
MediaStore.Images.Thumbnails.MINI_KIND, null);
for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
String imageId = cursor.getString(cursor
.getColumnIndex(Thumbnails.IMAGE_ID));
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor images = ctx.getActivity().managedQuery(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
filePathColumn, MediaStore.Images.Media._ID + "=?",
new String[] { imageId }, null);
String filePath = "";
if (images != null && images.moveToFirst()) {
filePath = images.getString(images.getColumnIndex(filePathColumn[0]));
}
out += cursor.getString(1) + ";" + filePath+";";
}
return out;
}
そして呼び出し
ThumbContext ctx = (ThumbContext) context;
Uri uri = MediaStore.Images.Thumbnails.getContentUri("external"); // content://media/external/images/thumbnails
String paths = getThumbPaths(uri, ctx);
速度を除いて、すべてがうまく機能します。これが Flash-Java-Flash 呼び出しによるものか、上記のコードの一部によるものかはわかりませんが、コンパイルは Flash 内で行われるため確認できません。
だから私の質問は: このコードを高速化できますか? 「for」ループ内で2番目のカーソルなしでこれを行うでしょうか?