miyaji
unread,Jul 20, 2011, 1:25:15 PM7/20/11Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to 日本Androidの会
お世話になっております。
Zxingを利用したQRコードの読み取りを実装しています。
Camera.PreviewCallbackで得た、byte[]をBitmapFactory.decodeByteArray利用して
bitmap化、
その後Zxingを利用した画像の解析へ、といった流れで実装しようと思っているのですが、
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inSampleSize = 2;
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0,
data.length,opts);
で取得したbitmapが何度やってもnullになってしまいます。
dataはbyte[]で値が入っていることは確認しております。
BitmapFactory.decodeByteArrayでnullが返ってくる…みたいなページは検索して見かけたのですが、
解決法まで発見することができませんでした。
何か可能性がございましたら、教えていただけますと幸いです。
よろしくお願いいたします。
以下に該当のCamera.PreviewCallback を掲載いたします
--------------
BitmapFactory.decodeByteArray(data, 0, data.length,opts);
private final Camera.PreviewCallback previewCallback =
new Camera.PreviewCallback() {
public void onPreviewFrame(byte[] data, Camera camera) {
Log.i(TAG, "onPreviewFrame");
camera.setPreviewCallback(null);
BitmapFactory.Options opts = new
BitmapFactory.Options();
opts.inSampleSize = 2;
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0,
data.length,opts);
Result result =
mDecoder.decode(bitmap, mResolution.x,
mResolution.y,
getFrameRect());
if (result != null) {
previewCount = 0;
BarcodeFormat code = result.getBarcodeFormat();
Log.i(TAG, "preview success(" + code + ", "
+ result.getText() + ")");
// QR_CODE形式のバーコードのみ続きの処理を行う
if(code == BarcodeFormat.QR_CODE){
Bitmap img = mDecoder.getResultBitmap0();
//mResultDialog.set(img, result);
//mResultDialog.show();
} else {
// QR_CODE形式意外のバーコードの場合は
// 警告ダイアログを表示する
mCamezon.showIncorrectDialog(code.toString());
}
} else {
Log.i(TAG, "preview failed");
if (previewCount < TRY_PREVIEW) {
Log.i(TAG, "retry preview");
previewCount++;
requestPreview();
} else {
Log.i(TAG, "give up preview");
previewCount = 0;
// 解析不能なので、再びオートフォーカスで
// 画像取得しなおす
requestAutoFocus();
}
}
}
};