質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

UTF-8

UTF-8は8ビット符号単位の文字符号化形式及び文字符号化スキームです。データ交換方式、ファイル形式としては、一般的にUTF-8が使われる傾向があります。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Q&A

解決済

1回答

6350閲覧

UTF-8で作成されたQRコードをXamairn/Android/ZXingでの読み込み処理 共有ランタイム有無での処理の違いについて

uexec

総合スコア11

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

UTF-8

UTF-8は8ビット符号単位の文字符号化形式及び文字符号化スキームです。データ交換方式、ファイル形式としては、一般的にUTF-8が使われる傾向があります。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

0グッド

2クリップ

投稿2017/07/07 04:09

###前提・実現したいこと
Xamarin/Androidにて、QRコードをZXingライブラリを使用して読み込む
モジュールを作成しています。
下記サイトで作成した日本語を設定したQRコードをテストとして使用しています。
http://qr.quel.jp/form_bsc_msg.php
使用したQRコード画像(PNG変換)

プロジェクト作成時、デフォルトの共有ランタイム有りの場合には
添付ソースにて正常に読み込みが可能でした。
リリース等のため、Androidプロジェクトの共有ランタイムチェックを
外して実行したところ、読み込みが不可能となりました。
(QRCodeReader.decode関数がNullを戻します)

上記を正常に読み込むための方法を模索しております、何卒よろしくお願いいたします。

###該当のソースコード

C#

1using System; 2using System.IO; 3using System.Reflection; 4using System.Collections.Generic; 5using System.Linq; 6using System.Text; 7using System.Threading.Tasks; 8using Xamarin.Forms; 9 10namespace QR3 11{ 12 public partial class MainPage : ContentPage 13 { 14 public MainPage() 15 { 16 InitializeComponent(); 17 } 18 19 private void Button_Clicked(object sender, EventArgs e) 20 { 21 // 埋め込みリソースからデータの読み込み 22 var assembly = typeof(MainPage).GetTypeInfo().Assembly; 23 using (var stream = assembly.GetManifestResourceStream("QR3.Data.jpqr.bmp")) 24 using (var reader = new BinaryReader(stream)) 25 { 26 byte[] pbData = new byte[stream.Length]; 27 reader.Read(pbData, 0, (int)stream.Length); 28 var source = new ZXing.RGBLuminanceSource(pbData, 116, 116); 29 30 // BitmapSource→BinaryBitmap変換 31 var binaryBitmap = new ZXing.BinaryBitmap(new ZXing.Common.HybridBinarizer(source)); 32 33 var dict = new Dictionary<ZXing.DecodeHintType, object>(); 34 //dict.Add(ZXing.DecodeHintType.CHARACTER_SET, "ISO-8859-1"); 35 //dict.Add(ZXing.DecodeHintType.CHARACTER_SET, "utf-8"); 36 //dict.Add(ZXing.DecodeHintType.CHARACTER_SET, "shiftjis"); 37 38 // 共有ランタイム有りの場合 39 // 指定なし → 日本語(読み込み成功) 40 // 共有ランタイムなしの場合 41 // 指定なし → NULL(読み込み失敗) 42 // ISO-8859-1 → 読み込めるが文字化け 43 // utf-8 → 読み込めるが文字化け 44 // shiftjis → NULL(読み込み失敗) 45 46 dict.Add(ZXing.DecodeHintType.TRY_HARDER, true); 47 48 var zx = new ZXing.QrCode.QRCodeReader(); 49 var ret = zx.decode(binaryBitmap, dict); 50 } 51 } 52 } 53}

###試したこと
コメントアウト部分 各種文字コードをHintに登録して試しましたが
上手く動作しませんでした。
添付ソースではPCL部分にてZXingライブラリをリンクしてPCL内でデコード処理などを行っています。
Android側で動作するカスタムレンダラーを作成し、Androidプロジェクト内でZXingをリンクし、
カスタムレンダラー内でデコード処理を完結させた場合も同じ結果となりました。

HintにUTF-8を指定した際の戻り値のバイトデータは下記となります。
0x40, 0x69, 0x3f, 0xa9, 0x67, 0xb8, 0xce, 0xa0, 0xec
0x11, 0xec, 0x11, 0xec, 0x11, 0xec, 0x11, 0xec, 0x11, 0xec
(QRコードデータの文字列は「日本語」です)

###補足情報(言語/FW/ツール等のバージョンなど)
言語 C#
開発環境 VisualStudio2015Community Version 14.0.25431.01 Update 3
Xamarin 4.3.0.795 (aece090)
Xamarin.Android 7.1.0.43 (3a62f1e)

プロジェクト環境
Xamarin.Forms v2.3.3.193
ZXingライブラリ ZXing.Net.Mobile v2.2.9

Android側環境
SONY Xperia Z3 SOL26
Android 5.0.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ZXingに詳しくなくコード確認していませんがReleaseで日本語のエンコードデコードで失敗と言ってまず思いつくのはCJKチェックです。

イメージ説明

これにチェックが入っていなかったらチェックを入れて実行して見てください。

投稿2017/07/07 04:35

yu_ka_san

総合スコア29

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uexec

2017/07/07 05:32

yu_ka_san様 ご回答いただきありがとうございます。 早速試させていただきました。 ご回答いただいた内容の通りにCJKにチェックを入れて試してみたところ 処理が成功いたしました、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問