我在V7 POS机(打印模块)安卓机器(V5.1.1)上工作。我已经在我的应用程序中配置了SDK (Jar文件)。服务器应用程序安装在POS机上。打印过程中出现问题。这里我已经包含了我的步骤。我被困在这个问题上一天多了。帮我修好它。
服务已启动。
public void startService(){
Intent intent = new Intent();
intent.setAction("com.justtide.service.dev.AIDL_SERVICE");
intent.setPackage("com.justtide.service.dev");
bindService(intent, mConnection, Service.BIND_AUTO_CREATE);
}设备提供程序
private ServiceConnection mConnection = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
}
@Override
public synchronized void onServiceConnected(ComponentName name, IBinder service) {
// TODO Auto-generated method stub
mDeviceProvider = DeviceProvider.Stub.asInterface(service);
}
};打印机提供程序
printerProvider =mDeviceProvider.getPrinterProvider();
printerProvider.fillStringFormat("TEST",PRINTER_FONT_SIZE_SMALL,PRINTER_FONT_TYPE_BOLD,PRINTER_ALIGNMENT_CENTER);
printerProvider.fillString("001420183990573");
int ret=-1;
try{
ret = printerProvider.print(); // The Problem is occurred here.
} catch (RemoteException e) {
e.printStackTrace();
}这里,我在POS机中包含了我的错误日志。
选择的应用程序出现错误
com.example.justtidev7_demo I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@3e9ea6fc time:3027349
com.example.justtidev7_demo W/System.err: android.os.DeadObjectException
com.example.justtidev7_demo W/System.err: at android.os.BinderProxy.transactNative(Native Method)
com.example.justtidev7_demo W/System.err: at android.os.BinderProxy.transact(Binder.java:496)
com.example.justtidev7_demo W/System.err: at com.justtide.service.dev.aidl.printer.PrinterProvider$Stub$Proxy.print(PrinterProvider.java:274)
com.example.justtidev7_demo W/System.err: at
com.justtide.dao.Printer.print(Printer.java:34)
com.example.justtidev7_demo W/System.err: at
com.justtide.activity.PrintActivity$3.run(PrintActivity.java:111)
com.example.justtidev7_demo W/System.err: at java.lang.Thread.run(Thread.java:818)错误无筛选器
JustD: jdc_connect ...
02-08 15:36:51.577 15261-15276/? E/JavaBinder: *** Uncaught remote
exception! (Exceptions are not yet supported across processes.)
java.lang.NoSuchMethodError: No virtual method printerOpen()I in class
Lcom/just/api/PosDevice; or its super classes (declaration of
'com.just.api.PosDevice' appears in
/system/framework/framework.jar:classes2.dex) at
com.justtide.justtide.aq.d(Unknown Source) at justtide.PrintPicture.startPrint(Unknown Source) at com.justtide.service.dev.i.print(Unknown Source) at com.justtide.service.dev.aidl.printer.PrinterProvider$Stub.onTransact(Unknown Source) at android.os.Binder.execTransact(Binder.java:446)
02-08 15:36:51.577 15261-15276/? E/AndroidRuntime: FATAL EXCEPTION: Binder_1
Process: com.justtide.service.dev, PID: 15261
java.lang.NoSuchMethodError: No virtual method printerOpen()I in class Lcom/just/api/PosDevice; or its super classes (declaration of 'com.just.api.PosDevice' appears in /system/framework/framework.jar:classes2.dex)
at com.justtide.justtide.aq.d(Unknown Source)
at justtide.PrintPicture.startPrint(Unknown Source)
at com.justtide.service.dev.i.print(Unknown Source)
at com.justtide.service.dev.aidl.printer.PrinterProvider$Stub.onTransact(Unknown Source)
at android.os.Binder.execTransact(Binder.java:446)发布于 2019-03-13 08:12:06
已经一年多了,但是嘿...让我试着为未来的读者回答这个问题。
对于初学者来说,异常DeadObjectException仅仅意味着您正在调用的对象已经死于,因为它的宿主进程不再存在。
我可以看到您没有解除绑定您的连接,并且您可能正在使用一个已经失效的连接,但是您正在调用它的print函数。(您正在泄漏,请检查您的日志)
我建议您尝试从PrinterProvider捕获所有语句,并在您的应用程序类文件(即class App extends Application)上启动打印机连接,公开该对象并建立静态连接,然后在您的活动中使用该对象,这样您只能在需要或退出活动时绑定和解除绑定一次。
public class App extends Application {
protected App app;
public static DeviceProvider deviceProvider;
public static PrinterProvider printerProvider;
public static UtilsProvider utils;
private static ServiceConnection conn;
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
this.app = (App) getApplicationContext();
}
/* do your thing i.e connection,
* static methods for printing e.t.c expose them ,
* use them in your activities
*/
}或者,如果这一切都没有任何意义,您可以随时向制造商索要一份文档齐全的SDK。
希望这对某些人有帮助。谢谢
https://stackoverflow.com/questions/48680533
复制相似问题