1

codenameone を使用して Android POS アプリケーションを構築しています。ここから CMSoft BT-Printer SDK を使用したいhttp://www.cm-soft.com/AndroidPrinterSDK.htm。これは AIDL インターフェースを使用します。Codenameone プロジェクトからどのようにアクセスしますか?

4

1 に答える 1

2

1) プロジェクトで、NativeInterface を拡張してプリンター サービスと通信する通常のインターフェイスを作成します。

2) インターフェイス PrinterInterface は NativeInterface{

public void bindService(); public void startScan(); public void stopScan(); }

3) インターフェイスを右クリックし、[Generate Native Access] を選択します。これにより、プロジェクトのネイティブ ディレクトリに実装ファイルが作成されます。

4) native/android dir の下で PrinterInterfaceImpl クラスを取得します。 isSupported() メソッドが true を返すことを確認し、このクラスに Android コードを実装するだけです。

AndroidNativeUtil.getActivity() を使用してアクティビティにアクセスします。例えば:

AndroidNativeUtil.getActivity().registerReceiver(mReceiver, new IntentFilter(RECEIVER));

AndroidNativeUtil.getActivity().unregisterReceiver(mReceiver);

5) impl クラスでは、レシーバーをバインドできます。

final class ScannerReceiver extends BroadcastReceiver {
    @Override

    public void onReceive(Context context, Intent intent) {            
        String data = null;

        if (intent.getAction().equals(RECEIVER)) {
            data = intent.getStringExtra(DATA);
        }

        if (data != null) {
            String msg;

            if (data.startsWith("S:")) {                 
                msg = data.substring(data.indexOf(':', 2) + 1);                    
            }                

            if (data.startsWith("D:")) {
                msg = data.substring(data.indexOf(':', 2) + 1);                    
            }
        }
    }        
}

private final ScannerReceiver mReceiver = new ScannerReceiver();
private final Intent mService = new Intent(SERVICE);
于 2013-08-14T07:17:21.930 に答える