# ASKManager `ASKManager` は、自販機とのデータ送受信を行う API を提供するクラスです。 自販機からの応答を受け取るには、アプリケーション側で `ASKManagerCallBack` インターフェースを実装し、 `setASKManagerCallBack` メソッドを使用してコールバックを設定してください。 これにより、自販機から応答があった際に [`ASKManagerCallBack.onReceivedJVMAResult`](ASKManagerCallBack.md#onreceivedjvmaresult) が呼び出され、 取得したデータを受け取ることができます。 なお、AsReader との接続および制御については、`DeviceManager` クラスを使用してください。 --- ## getInstance ASKManagerインスタンスを返します。 ```java public static ASKManager getInstance() ``` ### 戻り値 ```{list-table} :align: left :class: list-table * - 型 - 説明 * - ASKManager - ASKManager インスタンス ``` ### サンプルコード ```java ASKManager askManager = ASKManager.getInstance(); ``` --- ## setAskManagerCallBack [`ASKManagerCallBack`](ASKManagerCallBack.md) インターフェイスを実装したインスタンスを設定します。 ```java public void setAskManagerCallBack(ASKManagerCallBack askManagerCallBack) ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 引数名 - 型 - 説明 * - askManagerCallBack - ASKManagerCallBack - ASKManagerCallBackインターフェイスを実装したインスタンス ``` ### サンプルコード: ```java AsReaderSDK.getInstance().getASKManager().setAskManagerCallBack(new ASKManagerCallBack() { @Override public void onReceivedJVMAResult(List list, JVMAModel jvmaModel) { // list: 受信データ // jvmaModel: ACK/NAK の種類 } @Override public void onASKManagerError(String message) { // message: エラーメッセージ } @Override public void onReceiveASKCommandMessage(String message) { // message: コマンドメッセージ } }); ``` --- ## setDataRecords 識別コードリストを設定します。 ```java public void setDataRecords(List dataRecords) ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 引数名 - 型 - 説明 * - dataRecords - List `` - 識別コードリスト ``` ### サンプルコード: ```java List dataRecords = new ArrayList<>(); dataRecords.add(JVMADataId.InputCashQuantity.getName()); dataRecords.add(JVMADataId.QuitCashQuantity.getName()); AsReaderSDK.getInstance().getASKManager().setDataRecords(dataRecords); ``` --- ## getTerminalPassword ターミナルパスワードを返します。 ```java public String getTerminalPassword() ``` ### 戻り値 ```{list-table} :align: left :class: list-table * - 型 - 説明 * - String - ターミナルパスワード ``` ### サンプルコード: ```java String terminalPassword = AsReaderSDK.getInstance().getASKManager().getTerminalPassword(); ``` --- ## setTerminalPassword ターミナルパスワードを設定します。 ```java public void setTerminalPassword(String terminalPassword) ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 引数名 - 型 - 説明 * - terminalPassword - String - ターミナルパスワード ``` ### サンプルコード: ```java AsReaderSDK.getInstance().getASKManager().setTerminalPassword("1234567890"); ``` --- ## getTerminalSettingCode ターミナルセッティングコードを返します。 ```java public String getTerminalSettingCode() ``` ### 戻り値 ```{list-table} :align: left :class: list-table * - 型 - 説明 * - String - ターミナルセッティングコード ``` ### サンプルコード: ```java String terminalSettingCode = AsReaderSDK.getInstance().getASKManager().getTerminalSettingCode(); ``` --- ## setTerminalSettingCode ターミナルセッティングコードを設定します。 ```java public void setTerminalSettingCode(String terminalSettingCode) ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 引数名 - 型 - 説明 * - terminalSettingCode - String - ターミナルセッティングコード ``` ### サンプルコード: ```java AsReaderSDK.getInstance().getASKManager().setTerminalSettingCode("1234567890"); ``` --- ## getCommandCode 送信コマンドを返します。 ```java public JVMACommand getCommandCode() ``` ### 戻り値 ```{list-table} :align: left :class: list-table * - 型 - 説明 * - JVMACommand - 送信コマンド [`JVMACommand`](Enum.md#jvmacommand)を参照 ``` ### サンプルコード: ```java JVMACommand command = AsReaderSDK.getInstance().getASKManager().getCommandCode(); ``` --- ## setCommandCode 送信コマンドを設定します。 ```java public void setCommandCode(JVMACommand curCommandCode) ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 引数名 - 型 - 説明 * - curCommandCode - JVMACommand - 送信コマンド [`JVMACommand`](Enum.md#jvmacommand)を参照 ``` ### サンプルコード: ```java AsReaderSDK.getInstance().getASKManager().setCommandCode(JVMACommand.VmDataCollect); ``` --- ## getSettingDataList 送信コマンドを返します。 ```java public Map> getSettingDataList() ``` ### 戻り値 ```{list-table} :align: left :class: list-table * - 型 - 説明 * - Map`> - 設定データリスト [`JVMADataId`](Enum.md#jvmadataid)を参照 ``` ### サンプルコード: ```java Map> settingDataList = AsReaderSDK.getInstance().getASKManager().getSettingDataList(); ``` --- ## setSettingDataList 設定データリストを設定します。 ```java public void setSettingDataList(Map> settingDataList) ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 引数名 - 型 - 説明 * - settingDataList - Map`> - 設定データリスト [`JVMADataId`](Enum.md#jvmadataid)を参照 ``` ### サンプルコード: ```java List itemCodeList = new ArrayList<>(); itemCodeList.add("10513800000000"); itemCodeList.add("12004400000000"); itemCodeList.add("10500400000000"); Map> settingData = new HashMap<>(); settingData.put(JVMADataId.ShouhinCD, itemCodeList); // 設定データをセット AsReaderSDK.getInstance().getASKManager().setSettingDataList(settingData); ``` --- ## getRetryTime データクリア失敗時のリトライ回数を返します。 ```java public int getRetryTime() ``` ### 戻り値 ```{list-table} :align: left :class: list-table * - 型 - 説明 * - int - リトライ回数 ``` ### サンプルコード: ```java int retryTime = AsReaderSDK.getInstance().getASKManager().getRetryTime(); ``` --- ## setRetryTime データクリア失敗時のリトライ回数を設定します。 ```java public void setRetryTime(int retryTime) ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 引数名 - 型 - 説明 * - retryTime - int - リトライ回数 ``` ### サンプルコード: ```java AsReaderSDK.getInstance().getASKManager().setRetryTime(2); ``` --- ## getTimeout SDKのタイムアウト時間を返します。 ```java public float getTimeout() ``` ### 戻り値 ```{list-table} :align: left :class: list-table * - 型 - 説明 * - float - タイムアウト時間 ``` ### サンプルコード: ```java float timeout = AsReaderSDK.getInstance().getASKManager().getTimeout(); ``` --- ## setTimeOut SDK のタイムアウト時間を設定します。 設定された時間内に AsReader からの応答がない場合、SDK 側でタイムアウトと判断し、エラーコード NAK0x93 が発生します。 (詳細は、[`JvmaNAKData`](JVMAPacket.md#nak) クラス を参照) SDK 側のタイムアウト設定は、万が一リーダーからの応答が得られない状況に備え、 アプリ側で通信処理を終了させる フェイルセーフ機能 です。 たとえば、接続の不具合や予期せぬ障害でリーダーが応答しない場合でも、 SDK 側のタイムアウトが働くことでアプリが無限に待ち続けるのを防ぎます。 なお、リーダー側の応答に必要な時間より SDK 側のタイムアウト時間が短いと、 通信が正常に完了する前に処理が中断される可能性があります。 そのため、SDK 側のタイムアウト時間はリーダー側のタイムアウト時間より十分に長めに設定してください。 ```java public void setTimeOut(float second) ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 引数名 - 型 - 説明 * - second - float - SDKのタイムアウト時間。 デフォルトは 10 秒です。 0 を設定した場合、SDK側でタイムアウト処理を行いません。 設定可能な最小値は 6 秒です。6 以下(0 を除く)を指定した場合、自動的に 6 秒が適用されます。 ``` ### サンプルコード: ```java AsReaderSDK.getInstance().getASKManager().setTimeOut(10); ``` --- ## startCommunication 設定されたデータにもとづいて通信を開始します。 ```java public void startCommunication() ``` ### サンプルコード: ```java AsReaderSDK.getInstance().getASKManager().startCommunication(); ``` --- ## getVmData 自販機データを収集します。 ```{code-block} java :caption: 指定日時あり public void getVmData(boolean isInputTimeRecord, List dataRecords) ``` ```{code-block} java :caption: 指定日時あり public void getVmData(boolean isInputTimeRecord, List dataRecords, Date specifiedDate) ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 引数名 - 型 - 説明 * - isInputTimeRecord - boolean - タイムレコード(ID: 0BA0)を追加するかどうか。 true: 追加する / false: 追加しない * - dataRecords - List `` - 収集対象データのID。複数指定可能。 [`JvmaDataId`](Enum.md#jvmadataid) オブジェクトのみを含む配列。 ※ 空の場合はすべてのデータを収集します。 * - specifiedDate _(オプション)_ - Date - 指定日時 ``` ### サンプルコード: ```java List dataRecords = new ArrayList<>(); dataRecords.add(JVMADataId.InputCashQuantity.getName()); dataRecords.add(JVMADataId.QuitCashQuantity.getName()); // 取得する日付を指定 Calendar calendar = Calendar.getInstance(); calendar.set(2025, Calendar.JULY, 1); Date date = calendar.getTime(); // データ収集を実行 AsReaderSDK.getInstance().getASKManager().getVmData(true, dataRecords, date); ``` --- ## collectSettingData 自販機設定データを収集します。 ```{code-block} java :caption: 指定日時あり public void collectSettingData(boolean isInputTimeRecord) ``` ```{code-block} java :caption: 指定日時あり public void collectSettingData(boolean isInputTimeRecord, Date specifiedDate) ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 引数名 - 型 - 説明 * - isInputTimeRecord - boolean - タイムレコード(ID: 0BA0)を追加するかどうか。 true: 追加する / false: 追加しない * - specifiedDate _(オプション)_ - Date - 指定日時 ``` ### サンプルコード: ```java Calendar calendar = Calendar.getInstance(); calendar.set(2025, Calendar.JULY, 1); Date date = calendar.getTime(); AsReaderSDK.getInstance().getASKManager().collectSettingData(true, date); ``` --- ## sendSettingData 自販機に設定データを設定します。 ```{code-block} java :caption: 日時指定あり public void sendSettingData(boolean isInputTimeRecord) ``` ```{code-block} java :caption: 日時指定あり public void sendSettingData(boolean isInputTimeRecord, Date specifiedDate) ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 引数名 - 型 - 説明 * - isInputTimeRecord - boolean - タイムレコード(ID: 0BA0)を追加するかどうか。 true: 追加する / false: 追加しない * - specifiedDate _(オプション)_ - Date - 指定日時 ``` ### サンプルコード: ```java Calendar calendar = Calendar.getInstance(); calendar.set(2025, Calendar.JULY, 1); Date date = calendar.getTime(); AsReaderSDK.getInstance().getASKManager().sendSettingData(true, date); ``` --- ## sendSettingData2 自販機に設定データⅡを設定します。 ```{code-block} java :caption: 日時指定なし public void sendSettingData2(boolean isInputTimeRecord) ``` ```{code-block} java :caption: 日時指定あり public void sendSettingData2(boolean isInputTimeRecord, Date specifiedDate) ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 引数名 - 型 - 説明 * - isInputTimeRecord - boolean - タイムレコード(ID: 0BA0)を追加するかどうか。 true: 追加する / false: 追加しない * - specifiedDate _(オプション)_ - Date - 指定日時 ``` ### サンプルコード: ```java AsReaderSDK.getInstance().getASKManager().sendSettingData2(true); ``` --- ## clearVmData 自販機データ収集とクリアを一括で実行するメソッドです。 このメソッドは、自販機からデータを収集した後に、内部で [`confirmClear`](#confirmclear) を実行してクリア状態を確認します。 コールバック [`ASKManagerCallBack.onReceivedJVMAResult`](ASKManagerCallBack.md#onreceivedjvmaresult) は、 自販機データ受信時とクリア状態確認時の **2回** 発行されます。   ### 📌 clearVmData の仕様と利用時のポイント clearVmData は、自販機からデータを取得した後に、自販機内のデータをクリアする処理を一度に行えるメソッドです。 仕様上、Androidデバイスでの最終データ受信を待たずに、自販機側のデータクリア処理が実行されるため、 データの取りこぼしが発生しないように、以下の手順でのご利用を推奨します。 ✅ 安全な利用手順 1. [`getVmData`](#getvmdata) で必要なデータを受信する 2. 以下のいずれかの方法でクリア処理を行う  • [`allClear`](#allclear) を使用してクリアする  • `clearVmData` を使用してデータをクリアする(取得データは最小限にする) ```{code-block} java :caption: 日時指定なし public void clearVmData( boolean isInputTimeRecord, List dataRecords ) ``` ```{code-block} java :caption: 日時指定あり public void clearVmData( boolean isInputTimeRecord, List dataRecords, Date specifiedDate ) ``` ### パラメータ ```{list-table} :align: left :class: list-table :widths: 20 20 60 * - 引数名 - 型 - 説明 * - isInputTimeRecord - boolean - タイムレコード(TimeRecord "0BA0")の追加要否 `true`:追加、`false`:追加しない * - dataRecords - List `` - 収集対象のデータIDの配列([`JvmaDataId`](Enum.md#jvmadataid) オブジェクトのみ)。 ※ 空の場合は全データを収集 * - specifiedDate _(オプション)_ - Date - 収集日時を指定する場合に使用 ``` ### サンプルコード: ```java // データIDリストを作成 List dataRecords = new ArrayList<>(); dataRecords.add(JVMADataId.InputCashQuantity.getName()); dataRecords.add(JVMADataId.QuitCashQuantity.getName()); // 日付を設定 Calendar calendar = Calendar.getInstance(); calendar.set(2025, Calendar.JULY, 1); Date date = calendar.getTime(); // メソッドを呼び出し AsReaderSDK.getInstance().getASKManager().clearVmData(true, dataRecords, date); ``` --- ## clearVmDataWithoutConfirmation 自販機データを収集し、その後自販機データをクリアします。 このメソッドはクリア状態の確認を行わないため、必要に応じて [`confirmClear`](#confirmclear) を別途呼び出してください。 ```{code-block} java :caption: 日時指定なし public void clearVmDataWithoutConfirmation( boolean isInputTimeRecord, List dataRecords ) ``` ```{code-block} java :caption: 日時指定あり public void clearVmDataWithoutConfirmation( boolean isInputTimeRecord, List dataRecords, Date specifiedDate ) ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 引数名 - 型 - 説明 * - isInputTimeRecord - boolean - タイムレコード(ID: 0BA0)を追加するかどうか `true`:追加する / `false`:追加しない * - dataRecords - List `` - 識別コードリスト([`JvmaDataId`](Enum.md#jvmadataid) を推奨)。 空の場合は全データを対象 * - specifiedDate _(オプション)_ - Date - クリア対象の指定日時(省略可能) ``` ### サンプルコード ```java List dataRecords = new ArrayList<>(); dataRecords.add(JVMADataId.InputCashQuantity.getName()); dataRecords.add(JVMADataId.QuitCashQuantity.getName()); Calendar calendar = Calendar.getInstance(); calendar.set(2025, Calendar.JULY, 1); Date date = calendar.getTime(); AsReaderSDK.getInstance().getASKManager() .clearVmDataWithoutConfirmation(true, dataRecords, date); ``` --- ## allClear 自販機内のデータをすべてクリアします。 `allClear` 実行時は、**81通信完了後に** SDK から自動的に [`confirmAllClear`](#confirmallclear) が呼び出され、 クリア状態を確認します。 ```{code-block} java :caption: 日時指定なし public void allClear( boolean isInputTimeRecord ) ``` ```{code-block} java :caption: 日時指定あり public void allClear( boolean isInputTimeRecord, Date specifiedDate ) ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 引数名 - 型 - 説明 * - isInputTimeRecord - boolean - タイムレコード(ID: 0BA0)を追加するかどうか `true`:追加する / `false`:追加しない * - specifiedDate - Date - 指定日時(省略可能) ``` ### サンプルコード ```java Calendar calendar = Calendar.getInstance(); calendar.set(2025, Calendar.JULY, 1); Date date = calendar.getTime(); AsReaderSDK.getInstance().getASKManager().allClear(true, date); ``` --- ## confirmClear 自販機データ収集クリア確認を行います。(02クリア確認) ```java public void confirmClear() ``` ### サンプルコード: ```java AsReaderSDK.getInstance().getASKManager().confirmClear(); ``` --- ## confirmAllClear ```java public void confirmAllClear() ``` **メソッドの説明**: オールクリア確認を行います。(81クリア確認) ### サンプルコード: ```java AsReaderSDK.getInstance().getASKManager().confirmAllClear(); ``` --- ## sendOnlineSettingData 自販機にオンライン用設定データを設定します。 `sendOnlineSettingData` は、指定日時付き・なしの 2 パターンがあります。 ```{code-block} java :caption: 日時指定なし public void sendOnlineSettingData( boolean isInputTimeRecord ) ``` ```{code-block} java :caption: 日時指定あり public void sendOnlineSettingData( boolean isInputTimeRecord, Date specifiedDate ) ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 引数名 - 型 - 説明 * - isInputTimeRecord - boolean - タイム情報有無 * - specifiedDate - Date - 指定日時(指定しない場合は省略可) ``` ### サンプルコード #### 日時指定なし ```java AsReaderSDK.getInstance().getASKManager().sendOnlineSettingData(true); ``` #### 日時指定あり ```java Calendar calendar = Calendar.getInstance(); calendar.set(2025, Calendar.JULY, 1); Date date = calendar.getTime(); AsReaderSDK.getInstance().getASKManager().sendOnlineSettingData(true, date); ``` --- ## sendOnlineWorkingSettingData 自販機にオンライン用作業時データを設定します。 `sendOnlineWorkingSettingData` は、指定日時付き・なしの 2 パターンがあります。 ```{code-block} java :caption: 日時指定なし public void sendOnlineWorkingSettingData( boolean isInputTimeRecord ) ``` ```{code-block} java :caption: 日時指定あり public void sendOnlineWorkingSettingData( boolean isInputTimeRecord, Date specifiedDate ) ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 引数名 - In/Out - 型 - 説明 * - isInputTimeRecord - In - boolean - タイム情報有無 * - specifiedDate - In - Date - 指定日時(省略可) ``` ### サンプルコード #### 日時指定なし ```java AsReaderSDK.getInstance().getASKManager().sendOnlineWorkingSettingData(true); ``` #### 日時指定あり ```java Calendar calendar = Calendar.getInstance(); calendar.set(2025, Calendar.JULY, 1); Date date = calendar.getTime(); AsReaderSDK.getInstance().getASKManager().sendOnlineWorkingSettingData(true, date); ``` --- ## collectOnlineSettingData オンライン用設定データを収集します。 `collectOnlineSettingData` は日時指定あり・なしの2パターンがあります。 ```{code-block} java :caption: 日時指定なし public void collectOnlineSettingData( boolean isInputTimeRecord ) ``` ```{code-block} java :caption: 日時指定あり public void collectOnlineSettingData( boolean isInputTimeRecord, Date specifiedDate ) ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 引数名 - 型 - 説明 * - isInputTimeRecord - boolean - タイム情報有無 * - specifiedDate - Date - 指定日時(省略可) ``` --- ### サンプルコード ```{code-block} java :caption: 日時指定なし AsReaderSDK.getInstance().getASKManager().collectOnlineSettingData(true); ``` ```{code-block} java :caption: 日時指定あり Calendar calendar = Calendar.getInstance(); calendar.set(2025, Calendar.JULY, 1); Date date = calendar.getTime(); AsReaderSDK.getInstance().getASKManager().collectOnlineSettingData(true, date); ``` --- ## allClearOnline 自販機のオンラインデータをすべてクリアします。 `allClearOnline` は日時指定あり・なしの2パターンがあります。 ```{code-block} java :caption: 日時指定なし public void allClearOnline( boolean isInputTimeRecord ) ``` ```{code-block} java :caption: 日時指定あり public void allClearOnline( boolean isInputTimeRecord, Date specifiedDate ) ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 引数名 - In/Out - 型 - 説明 * - isInputTimeRecord - In - boolean - タイム情報有無 * - specifiedDate - In - Date - 指定日時(省略可) ``` ### サンプルコード ```{code-block} java :caption: 日時指定なし AsReaderSDK.getInstance().getASKManager().allClearOnline(true); ``` ```{code-block} java :caption: 日時指定あり Calendar calendar = Calendar.getInstance(); calendar.set(2025, Calendar.JULY, 1); Date date = calendar.getTime(); AsReaderSDK.getInstance().getASKManager().allClearOnline(true, date); ``` --- ## confirmAllClearOnline オンラインデータオールクリア確認を行います。(86クリア確認) ```java public void confirmAllClearOnline() ``` ### サンプルコード: ```java AsReaderSDK.getInstance().getASKManager().confirmAllClearOnline(); ``` --- ## sendTcpIpSettingData 自販機にTCP/IP用設定データを設定します。 日時指定あり・なしの2パターンがあります。 ```{code-block} java :caption: 日時指定なし public void sendTcpIpSettingData( boolean isInputTimeRecord ) ``` ```{code-block} java :caption: 日時指定あり public void sendTcpIpSettingData( boolean isInputTimeRecord, Date specifiedDate ) ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 引数名 - In/Out - 型 - 説明 * - isInputTimeRecord - In - boolean - タイム情報有無 * - specifiedDate - In - Date - 指定日時(省略可) ``` ### サンプルコード ```{code-block} java :caption: 日時指定なし AsReaderSDK.getInstance().getASKManager().sendTcpIpSettingData(true); ``` ```{code-block} java :caption: 日時指定あり Calendar calendar = Calendar.getInstance(); calendar.set(2025, Calendar.JULY, 1); Date date = calendar.getTime(); AsReaderSDK.getInstance().getASKManager().sendTcpIpSettingData(true, date); ``` --- ## collectTcpIpData TCP/IP 用設定データを収集します。 日時指定あり・なしの 2 パターンがあります。 ```{code-block} java :caption: 日時指定なし public void collectTcpIpData( boolean isInputTimeRecord ) ``` ```{code-block} java :caption: 日時指定あり public void collectTcpIpData( boolean isInputTimeRecord, Date specifiedDate ) ``` ### パラメータ ```{list-table} :align: left :class: list-table * - 引数名 - 型 - 説明 * - isInputTimeRecord - boolean - タイム情報有無 * - specifiedDate - Date - 指定日時(省略可) ``` ### サンプルコード ```{code-block} java :caption: 日時指定なし AsReaderSDK.getInstance().getASKManager().collectTcpIpData(true); ``` ```{code-block} java :caption: 日時指定あり Calendar calendar = Calendar.getInstance(); calendar.set(2025, Calendar.JULY, 1); Date date = calendar.getTime(); AsReaderSDK.getInstance().getASKManager().collectTcpIpData(true, date); ``` --- ## setCenterPassword 汎用のコマンド送信用メソッドです。 ```java public void setCenterPassword() ``` **メソッドの説明**: センターパスワードを設定します。 ### サンプルコード: ```java AsReaderSDK.getInstance().getASKManager().setCenterPassword(); ``` --- ## ⚠️ resetStat【非推奨】 ビジーフラグをリセットします。 通常は SDK が自動で管理するため、このメソッドの使用は推奨されません。 将来的に削除される可能性がありますので、必要な場合のみ利用してください。 ```java public void resetStat() ``` ### サンプルコード: ```java AsReaderSDK.getInstance().getASKManager().resetStat(); ```
代替手段を表示 `resetStat` は通常使用する必要はありません。 ビジーフラグは SDK 内で自動的に管理されています。 - 通信処理後のコールバック (`onReceivedJVMAResult` など) を正しく実装してください。 - 処理が完了したことをコールバックで受け取ることで、ビジーフラグは自動でリセットされます。 - もし処理が完了しない場合は、ログ (`SDK.log` など) を確認し、通信シーケンスの見直しを行ってください。