UsbReciever.java 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package com.epson.mobilephone.common.usb;
  2. import android.app.Activity;
  3. import android.app.PendingIntent;
  4. import android.content.BroadcastReceiver;
  5. import android.content.Context;
  6. import android.content.Intent;
  7. import android.hardware.usb.UsbDevice;
  8. import com.epson.mobilephone.common.PrintingLib.define.Constants;
  9. import java.util.Iterator;
  10. import org.opencv.videoio.Videoio;
  11. public class UsbReciever extends Activity {
  12. public static final String ACTION_USB_PERMISSION = "com.epson.otg.USB_PERMISSION";
  13. private static UsbPermissionReceiverCallback permissionGrantedcallback;
  14. public interface UsbPermissionReceiverCallback {
  15. void permissionGranted(Context context, boolean z);
  16. }
  17. protected void onResume() {
  18. super.onResume();
  19. Intent intent = getIntent();
  20. String action = intent.getAction();
  21. if ("android.hardware.usb.action.USB_DEVICE_ATTACHED".equals(action)) {
  22. EpLog.i("Tag", "android.hardware.usb.action.USB_DEVICE_ATTACHED");
  23. UsbDevice usbDevice = (UsbDevice) intent.getParcelableExtra("device");
  24. if (usbDevice != null) {
  25. Iterator<UsbPrinter> it = UsbPrintDriver.getInstance(this).findPrinters(false, Constants.EPSON_VENDERID).iterator();
  26. while (it.hasNext()) {
  27. if (it.next().getUsbDevice().getDeviceId() == usbDevice.getDeviceId()) {
  28. EpLog.i("Tag", "EPSON Printer ATTACHED");
  29. getPermission(usbDevice, new UsbPermissionReceiverCallback() {
  30. public void permissionGranted(Context context, boolean z) {
  31. if (z) {
  32. String className = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName()).getComponent().getClassName();
  33. Intent intent = new Intent("android.intent.action.MAIN");
  34. intent.setFlags(Videoio.CAP_INTELPERC_IMAGE_GENERATOR);
  35. intent.addCategory("android.intent.category.LAUNCHER");
  36. intent.setClassName(context, className);
  37. try {
  38. UsbReciever.this.startActivity(intent);
  39. EpLog.d("EPSON", "UsbReciever ACTION_MAIN");
  40. } catch (Exception e) {
  41. e.printStackTrace();
  42. }
  43. }
  44. EpLog.d("EPSON", "UsbReciever finish()");
  45. UsbReciever.this.finish();
  46. }
  47. });
  48. return;
  49. }
  50. }
  51. }
  52. } else if (ACTION_USB_PERMISSION.equals(action)) {
  53. synchronized (this) {
  54. UsbDevice usbDevice2 = (UsbDevice) intent.getParcelableExtra("device");
  55. if (!intent.getBooleanExtra("permission", false) || usbDevice2 == null) {
  56. EpLog.d("EPSON", "permission denied for device");
  57. if (permissionGrantedcallback != null) {
  58. permissionGrantedcallback.permissionGranted(this, false);
  59. }
  60. } else {
  61. EpLog.i("EPSON", "HAS PERMISSION");
  62. if (permissionGrantedcallback != null) {
  63. permissionGrantedcallback.permissionGranted(this, true);
  64. }
  65. }
  66. permissionGrantedcallback = null;
  67. }
  68. }
  69. }
  70. public static class UsbReceiver extends BroadcastReceiver {
  71. public void onReceive(Context context, Intent intent) {
  72. if ("android.hardware.usb.action.USB_DEVICE_DETACHED".equals(intent.getAction())) {
  73. EpLog.i("Tag", "android.hardware.usb.action.USB_DEVICE_DETACHED");
  74. UsbDevice usbDevice = (UsbDevice) intent.getParcelableExtra("device");
  75. if (usbDevice != null) {
  76. UsbPrintDriver.getInstance(context).deletePrinterPermmited(usbDevice);
  77. }
  78. }
  79. }
  80. }
  81. public boolean getPermission(UsbDevice usbDevice, UsbPermissionReceiverCallback usbPermissionReceiverCallback) {
  82. boolean hasPermission = UsbPrintDriver.getInstance(this).getUsbManager().hasPermission(usbDevice);
  83. if (!hasPermission) {
  84. UsbPrintDriver.getInstance(this).getUsbManager().requestPermission(usbDevice, PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0));
  85. permissionGrantedcallback = usbPermissionReceiverCallback;
  86. } else {
  87. EpLog.i("EPSON", "HAS PERMISSION");
  88. if (usbPermissionReceiverCallback != null) {
  89. usbPermissionReceiverCallback.permissionGranted(this, true);
  90. }
  91. }
  92. return hasPermission;
  93. }
  94. }