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