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 <String>

識別コードリスト

サンプルコード:

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を参照

サンプルコード:

JVMACommand command = AsReaderSDK.getInstance().getASKManager().getCommandCode();

setCommandCode

送信コマンドを設定します。

public void setCommandCode(JVMACommand curCommandCode)

パラメータ

引数名

説明

curCommandCode

JVMACommand

送信コマンド
JVMACommandを参照

サンプルコード:

AsReaderSDK.getInstance().getASKManager().setCommandCode(JVMACommand.VmDataCollect);

getSettingDataList

送信コマンドを返します。

public Map<JVMADataId, List<String>> getSettingDataList()

戻り値

説明

Map<JVMADataId, List <String>>

設定データリスト
JVMADataIdを参照

サンプルコード:

Map<JVMADataId, List<String>> settingDataList = AsReaderSDK.getInstance().getASKManager().getSettingDataList();

setSettingDataList

設定データリストを設定します。

public void setSettingDataList(Map<JVMADataId, List<String>> settingDataList)

パラメータ

引数名

説明

settingDataList

Map<JVMADataId, List <String>>

設定データリスト
JVMADataIdを参照

サンプルコード:

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のタイムアウト時間。
デフォルトは 10 秒です。
0 を設定した場合、SDK側でタイムアウト処理を行いません。
設定可能な最小値は 6 秒です。6 以下(0 を除く)を指定した場合、自動的に 6 秒が適用されます。

サンプルコード:

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)を追加するかどうか。
true: 追加する / false: 追加しない

dataRecords

List <String>

収集対象データのID。複数指定可能。
JvmaDataId オブジェクトのみを含む配列。
※ 空の場合はすべてのデータを収集します。

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)を追加するかどうか。
true: 追加する / false: 追加しない

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)を追加するかどうか。
true: 追加する / false: 追加しない

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)を追加するかどうか。
true: 追加する / false: 追加しない

specifiedDate
(オプション)

Date

指定日時

サンプルコード:

AsReaderSDK.getInstance().getASKManager().sendSettingData2(true);

clearVmData

自販機データ収集とクリアを一括で実行するメソッドです。
このメソッドは、自販機からデータを収集した後に、内部で confirmClear を実行してクリア状態を確認します。
コールバック ASKManagerCallBack.onReceivedJVMAResult は、
自販機データ受信時とクリア状態確認時の 2回 発行されます。

 

📌 clearVmData の仕様と利用時のポイント

clearVmData は、自販機からデータを取得した後に、自販機内のデータをクリアする処理を一度に行えるメソッドです。
仕様上、Androidデバイスでの最終データ受信を待たずに、自販機側のデータクリア処理が実行されるため、
データの取りこぼしが発生しないように、以下の手順でのご利用を推奨します。

✅ 安全な利用手順

  1. getVmData で必要なデータを受信する

  2. 以下のいずれかの方法でクリア処理を行う
     • allClear を使用してクリアする
     • clearVmData を使用してデータをクリアする(取得データは最小限にする)

日時指定なし
public void clearVmData(
    boolean isInputTimeRecord,
    List<String> dataRecords
) 
日時指定あり
public void clearVmData(
    boolean isInputTimeRecord,
    List<String> dataRecords,
    Date specifiedDate
)

パラメータ

引数名

説明

isInputTimeRecord

boolean

タイムレコード(TimeRecord “0BA0”)の追加要否
true:追加、false:追加しない

dataRecords

List <String>

収集対象のデータIDの配列(JvmaDataId オブジェクトのみ)。
※ 空の場合は全データを収集

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)を追加するかどうか
true:追加する / false:追加しない

dataRecords

List <String>

識別コードリスト(JvmaDataId を推奨)。
空の場合は全データを対象

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)を追加するかどうか
true:追加する / false:追加しない

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 など) を確認し、通信シーケンスの見直しを行ってください。