标签: accessory

Android USB_DEVICE_ATTACHED持久权限

每次重新连接USB设备时,如何让Android不要求许可?我想让它记住USB设备的"默认使用"复选标记,这样我就不必每次都给同一设备授予权限.

我以编程方式检测USB设备(Android手机)何时连接到我的主机设备(Android手机),以便我可以将它们切换到AOA模式并将它们用作附件.基本上我有两个Android手机和一个OTG电缆,我希望他们在彼此之间进行通信.

我有一个线程,不断枚举附加的USB设备:

UsbManager manager = (UsbManager) 
                   context.getSystemService(Context.USB_SERVICE);
while (!m_stopRequested) {
  boolean shouldNotify = false;
  HashMap<String, UsbDevice> deviceMap = m_usbManager.getDeviceList();
  for (Entry<String, UsbDevice> entry : deviceMap) {
    UsbDevice device = entry.getValue();
    if (m_usbManager.hasPermission(device)) {
      int pid = device.getProductId();
      if (device.getVendorId() == VID_GOOGLE(0x18D1) && (pid == ACCESSORY_PID(0x2D01) || pid == ACCESSORY_PID_ALT(0x2D00))) {
        switchDeviceToAOAMode(device);
      }
    } else {
      m_usbManager.requestPermission(device);
    }
  }
  Thread.sleep(1000);
}
Run Code Online (Sandbox Code Playgroud)

我还注册了BroadcastReceiver以接收USB_PERMISSION意图:

private final class USBReceiver extends BroadcastReceiver {

    public void onReceive(Context context, Intent intent) {
        MCSLogger.log(TAG, "Received permission result!"); …
Run Code Online (Sandbox Code Playgroud)

usb android accessory

7
推荐指数
2
解决办法
449
查看次数

它的openAccessory的返回值究竟是什么?

当连接到USB配件时,我正在努力恢复我的Android应用程序.

显然我的ParcelFileDescriptor是null,openAccessory()当我调用它时,该方法不会返回任何内容onResume().

有人经历过那个吗?

java usb android accessory

6
推荐指数
1
解决办法
297
查看次数

如何将 Android Open Accessory 模式实现为服务?

我一直在玩 Android Open Accessory Development Kit。通过遵循Google 提供的 DemoKit 示例,我可以轻松地将解决方案适应我的应用程序。我可以很好地检测、通信和分离附件。

但是,我需要将整个事情作为服务运行。我有一个由 USB_ACCESSORY_ATTACHED 意图启动的基本活动(即,当附件连接时),并且工作正常。但是,一旦我启动我的服务并在其中运行与常规活动中的工作解决方案相同的代码,IOException每当我尝试与配件通信(监控 arduino 端)时,我都会收到一个(“没有这样的设备”)显示成功的 USB 连接)。即使我在服务中指定了正确的 BroadcastReceiver,在 onStartCommand 回调方法中注册它,并使用openAccessory(). 相关代码如下。

@Override
public void onCreate() {
    Log.d(TAG, "ONCREATE");

    manager = UsbManager.getInstance(this);
    mPermissionIntent = PendingIntent.getBroadcast(this, 0, new Intent(
            ACTION_USB_PERMISSION), 0);

    // Register broadcastreceiver for filtering accessory events
    IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
    filter.addAction(UsbManager.ACTION_USB_ACCESSORY_DETACHED);
    registerReceiver(mUsbReceiver,filter);
    super.onCreate();
}

public int onStartCommand(Intent intent, int flags, int startId) {
    Log.d(TAG, "ONSTARTCOMMAND METHOD ACCESSED");

    if (mInputStream != null && …
Run Code Online (Sandbox Code Playgroud)

service android arduino accessory

5
推荐指数
1
解决办法
5335
查看次数

连接外部配件蓝牙设备无需用户交互

根据iOS6以后的EAAccessoryManager类参考使用showBluetoothAccessoryPickerWithNameFilter,我们可以显示一个附件选择器,它将帮助用户连接外部附件,包括iAP over Bluetooth唯一ID.

现在我们想要以编程方式连接该列表中的一个外部附件.

我们需要您的支持.

我们如何以编程方式连接手机范围内的任何外部设备?

如何在没有用户交互的情况下以编程方式连接任何外部设备?

我们如何以编程方式获得用户手机范围内的外部设备列表?

我们如何获得范围内但未连接的外部设备的EAAccessory对象列表?

我们可以在NSUserDefaults中存储EAAccessory对象吗?如果是的话,我们怎么做?由于EAAccessory EAAccessory未实现encodeWithCoder和initWithCoder方法,因此它不允许将其存储到NSUserDefaults中.

使用BTLE我们可以解决这个问题,但我们想要BT Classic中的解决方案.

bluetooth accessory core-bluetooth eaaccessory

5
推荐指数
1
解决办法
1154
查看次数

EAAccessoryManager附件选择器错误

我正在尝试构建一个与外部附件通信的应用程序(通过蓝牙).为了确保应用程序是用户友好的,我希望他不要去设置连接附件,而是显示iOS 6.0包含的附件​​选择器.

要实现这一目标,请简单地致电:

[[EAAccessoryManager sharedAccessoryManager] showBluetoothAccessoryPickerWithNameFilter:nil completion:nil];
Run Code Online (Sandbox Code Playgroud)

现在,我没有使用过滤器和完成(根据iOS类参考,两者都可以是nil ) - 即使我也尝试过使用它们.

现在问题是我的配件出现2到10秒然后从列表中消失,直到我取消弹出窗口并再次显示它.另一个问题是有时它根本没有出现.我还确保设备已配对但未连接.

我尝试使用另一个配件(我自己没有制作的配件)和不同的设备(iPhone 4,4S,5 - iPad - iPod Touch)没有成功.

有没有人有类似的问题?如果是的话你是怎么解决的?这是一个iOS错误吗?这是一个附件错误吗?

谢谢你的回复.

bluetooth accessory ios mfi

5
推荐指数
1
解决办法
2719
查看次数

Android USB主机模式和附件模式

我正在尝试学习Android USB主机/附件连接.我读Android设备可以行为usb主机或USB配件.因此我创建了两个项目,其中一个是usb主机项目,另一个是usb附件项目.我将这些项目安装到两个不同的Android设备上.其中一个有usb主机(Device A)项目,另一个有usb附件(Device B)项目.

我的问题是,我可以将usb主机项目连接到Device B.我可以看到有关设备的所有信息.但在配件项目(设备B)中我看不到有关设备A的任何事情.

manager.getAccessoryList()始终返回null.我的USB配件项目代码在这里.

UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);

for (UsbAccessory accessory : manager.getAccessoryList()) {
    String list = " DESCRIPTION : " + accessory.getDescription() + " MODEL : " + accessory.getModel() + " MANUFACTURER : " + accessory.getManufacturer() + " SERIAL : " + accessory.getSerial();
    Toast.makeText(this, list, Toast.LENGTH_LONG).show();
}
Run Code Online (Sandbox Code Playgroud)

usb android host accessory

5
推荐指数
1
解决办法
5069
查看次数

如何通过USB串口传送Android附件?

特此情况:我正在开发一款必须附件模式下工作的Android平板电脑.原因是因为平板电脑无法提供足够的电力来执行与串行USB微控制器的通信并仍然为其电池充电.

在此输入图像描述

为了实现成功的通信,我必须能够设置一些串行条件 Modbus/RTU

  • 串口地址(即COM1,COM2 ......)
  • 波特率(19200 bps)
  • 数据位(8)
  • 停止位(1)
  • 平价(无)

Delphi的一个很好的例子是Modlink.

一个很好的指导是UART https://github.com/ytai/ioio/wiki/UART

同时,我发现了一些有用的项目,但它们的目的是在主机模式下工作.

https://github.com/mik3y/usb-serial-for-android https://github.com/ksksue/Android-USB-Serial-Monitor-Lite

我正在寻找有关如何创建可与串行USB通信的Android应用程序的任何有价值的信息,指导和参考.

我怎样才能做到这一点?

注意:我正在使用Android Studio.

usb android accessory

5
推荐指数
1
解决办法
4995
查看次数

Android USBAccessory重新连接

将USB配件拔出并重新打开后,我在重新连接它时遇到问题。第一次插入附件时,我可以执行所有步骤以与设备进行实际通信

  1. 列举配件
  2. 获得访问附件的权限
  3. 打开配件
  4. 使用FileDescriptor的I / O流对设备进行读写

当我拔下电缆并再次插入时,我可以完成上面列出的前两个步骤。问题是UsbManager的打开附件返回空值作为ParcelFileDescriptor。是什么原因造成的?可能是某些资源仍被保留,因此Android无法授予我访问该设备的权限吗?我将在调用openAccessory之前释放I / O流并关闭ParcelFileDescriptor。还有其他措施可以正确清理附件吗?有关USB附件的官方文档页面上有一个有关终止通讯的部分,但它并不是很有帮助。

http://developer.android.com/guide/topics/connectivity/usb/accessory.html

usb android accessory

5
推荐指数
0
解决办法
159
查看次数

从 Android USB 配件读取数据的更好方法

我正在用 Java 编写一个 Android 应用程序,该应用程序使用 Android 配件 API 与 USB 配件进行通信。

谷歌文档并没有给出实际读取和写入数据,只是如何打开附件进行通信的例子。

它还说明了两件事:

  1. 通信应该在后台线程中完成,而不是在 UI 线程上。
  2. 读取缓冲区的长度应至少为 16384 字节,因为这是 Android Open Accessory 协议的最大消息长度。

我实现了这样的阅读:

/** boiler plate from example docs: **/
fileDescriptor = usbManager.openAccessory(accessory);

if (fileDescriptor != null) {
    FileDescriptor fd = fileDescriptor.getFileDescriptor();
    inputStream = new FileInputStream(fd);
    readBuffer = new byte[16384];
    // ... some more code that is not relevant for reading data ... //
}

/** my code in separate thread: **/

int read;

while ((read = …
Run Code Online (Sandbox Code Playgroud)

java usb android accessory

5
推荐指数
0
解决办法
427
查看次数

Android adb无线调试与USB配件

我有adb无线连接工作用于在eclipse中调试应用程序,但我遇到的问题是使用USB电缆连接到附件的应用程序.

该应用程序设计为在插入附件时启动,因此我建立了我的ADB连接,然后在eclipse,代码加载等上运行调试,现在当我在应用程序中插入附件启动并运行但失去与eclipse的通信.所以我无法调试!

usb wireless android accessory adb

4
推荐指数
1
解决办法
1650
查看次数

USB 主机和 USB 附件有什么区别?

谁能告诉我 USB 主机和 USB 附件有什么区别?

要通过 USB 从 Android 设备发送数字数据,我应该使用什么模式?

谢谢..

usb android accessory

3
推荐指数
1
解决办法
2883
查看次数

披露指标不会触发附件行动

我正在尝试使用show accessory action segue和披露指示器(如图所示)从tableview转换到嵌入在导航控制器中的viewcontroller.单击包括公开图标在内的任何内容都不起作用 如果我将segue从"附件动作"更改为"选择",则segue可以正常工作,但这可以通过单击tableview单元格中的任意位置来实现.我的目标是仅在按下披露指示时使用"附件动作"才能进行切换.

我知道有一些程序化的方法可以做到这一点,但那些也没有用.我假设通过导航控制器阻止此操作的根本问题也阻止了编程方法的工作.如何让披露指示器转到另一个视图控制器? 附件行动Segue

xcode indicator disclosure accessory ios

1
推荐指数
1
解决办法
562
查看次数