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