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

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

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

無線通信

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

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

Q&A

解決済

1回答

1871閲覧

データの比較、照合について

Shirokuma555

総合スコア0

NFC

無線通信

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

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

0グッド

0クリップ

投稿2020/06/23 01:49

前提・実現したいこと

KDCリーダーというスキャナーを使用したアプリを作っています。
読み込んだJsonファイルとリーダーで読み取ったデータを照合するという機能を実装したいです。

現在、Jsonファイルを読み込み、一覧表示させるところまで出来ていて、リーダを購入した時についてきたSDKをただ組み込んだだけという状況です。
onActivityResult内でJsonデータと読み取ったデータを照合したいのですが、NFCDataReceivedで読み取ったデータをonActivityResultで参照するにはどうしたらよいでしょうか?考えられる手段、別の案があれば教えていただきたいです。

よろしくお願いいたします。

該当のソースコード

PickActivity

1 2public class PickActivity extends AppCompatActivity implements 3 KDCDataReceivedListener, 4 KDCBarcodeDataReceivedListener, 5 KDCGPSDataReceivedListener, 6 KDCMSRDataReceivedListener, 7 KDCNFCDataReceivedListener, 8 KDCConnectionListener { 9 10 11 private static final String TAG = "PickActivity"; 12 private KDCReader _kdcReader; 13 private HandlerThread handlerThread; 14 private Handler handler; 15 private CustomAdapter _rdData; 16 17 18 private static final int READ_REQUEST_CODE = 1; 19 private int targetNumber; // 処理対象番号 20 private int maxItemSize; // 最大アイテム数 21 private String engin_name_1; // エンジン名1 22 private String engin_name_2; // エンジン名2 23 private String engin_name_3; // エンジン名3 24 private String engin_name_4; // エンジン名4 25 26 27 @Override 28 protected void onCreate(Bundle savedInstanceState) { 29 super.onCreate(savedInstanceState); 30 setContentView(R.layout.activity_pick); 31 32 33 // 外部ファイルの選択ダイアログを表示 34 Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); 35 intent.addCategory(Intent.CATEGORY_OPENABLE); 36 intent.setType("*/*"); 37 startActivityForResult(intent, READ_REQUEST_CODE); 38 39 40 _rdData = new CustomAdapter(this, android.R.layout.simple_list_item_1, new ArrayList<String>()); 41 42 43 if (handlerThread == null) { 44 handlerThread = new HandlerThread("HandlerThread"); 45 handlerThread.start(); 46 handler = new Handler(handlerThread.getLooper()); 47 } 48 49 _kdcReader = new KDCReader(this, this, this, this, this, this, false); 50 51 } 52 53 54 @Override 55 public void onActivityResult(int requestCode, int resultCode, Intent resultData) { 56 super.onActivityResult(requestCode, resultCode, resultData); 57 58 try { 59 60 // ダイアログの応答結果が正常の場合 61 if (requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK) { 62 if (resultData != null) { 63 64 // 選択したファイルのURIを取得 65 Uri uri = resultData.getData(); 66 67 // JSONファイルの読み込み 68 final JsonReader jsonReader = new JsonReader(); 69 jsonReader.reader(getApplicationContext(), uri); 70 71 // 処理対象番号の初期化 72 targetNumber = 0; 73 // 最大アイテム数の取得 74 maxItemSize = jsonReader.jsonList.size(); 75 // エンジン名1~4の設定 76 StringBuilder sb = new StringBuilder(); 77 sb.append(jsonReader.engin_series_1); 78 sb.append("-"); 79 sb.append(jsonReader.engin_type_1); 80 engin_name_1 = new String(sb); 81 82 sb = new StringBuilder(); 83 sb.append(jsonReader.engin_series_2); 84 sb.append("-"); 85 sb.append(jsonReader.engin_type_2); 86 engin_name_2 = new String(sb); 87 88 sb = new StringBuilder(); 89 sb.append(jsonReader.engin_series_3); 90 sb.append("-"); 91 sb.append(jsonReader.engin_type_3); 92 engin_name_3 = new String(sb); 93 94 sb = new StringBuilder(); 95 sb.append(jsonReader.engin_series_4); 96 sb.append("-"); 97 sb.append(jsonReader.engin_type_4); 98 engin_name_4 = new String(sb); 99 100 // メイン画面に1件目の部品情報を設定 101 setMainInfo(jsonReader, targetNumber, maxItemSize); 102 103 104 private void setMainInfo(JsonReader jsonReader, int targetNumber, int maxItemSize) { 105 106 // メイン画面のViewを取得 107 TextView number = findViewById(R.id.number); 108 TextView parts_name = findViewById(R.id.parts_name); 109 TextView code_no = findViewById(R.id.code_no); 110 TextView rack_no = findViewById(R.id.rack_no); 111 TextView engin_name_red = findViewById(R.id.engin_name_red); 112 TextView quantity_red = findViewById(R.id.quantity_red); 113 TextView engin_name_blue = findViewById(R.id.engin_name_blue); 114 TextView quantity_blue = findViewById(R.id.quantity_blue); 115 TextView engin_name_yellow = findViewById(R.id.engin_name_yellow); 116 TextView quantity_yellow = findViewById(R.id.quantity_yellow); 117 TextView engin_name_green = findViewById(R.id.engin_name_green); 118 TextView quantity_green = findViewById(R.id.quantity_green); 119 120 // Viewに処理対象の情報を設定 121 ArrayList<ListData> jsonList = jsonReader.jsonList; 122 123 // 番号 124 StringBuilder sb = new StringBuilder(); 125 sb.append(jsonList.get(targetNumber).getNumber()); 126 sb.append("/"); 127 sb.append(maxItemSize); 128 number.setText(new String(sb)); 129 130 // 部品名 131 parts_name.setText(jsonList.get(targetNumber).getParts_name()); 132 133 // コードNo. 134 code_no.setText(jsonList.get(targetNumber).getCode_no()); 135 136 // 棚 137 sb = new StringBuilder(); 138 sb.append(jsonList.get(targetNumber).getRack_no()); 139 sb.append("("); 140 sb.append(jsonList.get(targetNumber).getRack_line()); 141 sb.append("段"); 142 sb.append(jsonList.get(targetNumber).getRack_row()); 143 sb.append("列)"); 144 rack_no.setText(new String(sb)); 145 146 // エンジン名1~4 147 engin_name_red.setText(engin_name_1); 148 engin_name_blue.setText(engin_name_2); 149 engin_name_yellow.setText(engin_name_3); 150 engin_name_green.setText(engin_name_4); 151 152 // 数量1~4 153 sb = new StringBuilder(); 154 sb.append(jsonList.get(targetNumber).getQuantity_red()); 155 quantity_red.setText(new String(sb)); 156 157 sb = new StringBuilder(); 158 sb.append(jsonList.get(targetNumber).getQuantity_blue()); 159 quantity_blue.setText(new String(sb)); 160 161 sb = new StringBuilder(); 162 sb.append(jsonList.get(targetNumber).getQuantity_yellow()); 163 quantity_yellow.setText(new String(sb)); 164 165 sb = new StringBuilder(); 166 sb.append(jsonList.get(targetNumber).getQuantity_green()); 167 quantity_green.setText(new String(sb)); 168 } 169 170 private static class CustomAdapter extends ArrayAdapter<String> { 171 CustomAdapter(Context context, int resource, ArrayList<String> objects) { 172 super(context, resource, objects); 173 } 174 } 175 176 177 //RFID 178 @Override 179 public void NFCDataReceived(KDCData kdcData) { 180 Log.d(TAG, "NFCDataReceived:" + kdcData.GetDataBytesLength()); 181 String data = kdcData.GetNFCUIDReversed(); 182 183 if (data != null) { 184 data = data + " " + kdcData.GetNFCData() + " "; 185 } else { 186 data = kdcData.GetNFCData() + " "; 187 } 188 189 // タグの種類:RFIDとか 190 // data += kdcData.GetNFCTagType().GetName(); 191 new addDataRunnable(data); 192 } 193 194 @Override 195 public void MSRDataReceived(KDCData kdcData) { 196 } 197 198 @Override 199 public void DataReceived(KDCData kdcData) { 200 Log.d(TAG, "DataReceived:" + kdcData.GetDataBytesLength()); 201 String data = kdcData.GetRecord(); 202 203 runOnUiThread(new addDataRunnable(data)); 204 } 205 206 @Override 207 public void ConnectionChanged(BluetoothDevice device, int state) { 208 } 209 210 // バーコード 211 @Override 212 public void BarcodeDataReceived(KDCData kdcData) { 213 } 214 215 @Override 216 public void GPSDataReceived(KDCData kdcData) { 217 } 218 219 /** 220 * Custom Runnable 221 */ 222 private class addDataRunnable implements Runnable { 223 private String read_data; 224 225 addDataRunnable(String read_data) { 226 this.read_data = read_data; 227 } 228 229 @Override 230 public void run() { 231 if (read_data != null) { 232 _rdData.add(read_data); 233 _rdData.notifyDataSetChanged(); 234 Log.d("data", String.valueOf(read_data)); 235 236 } 237 } 238 } 239 240}

補足情報(FW/ツールのバージョンなど)

AndroidStudio4.0.0, Java

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

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

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

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

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

guest

回答1

0

自己解決

自己解決しました。ありがとうございました。

投稿2020/08/05 08:39

Shirokuma555

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問