当前位置:首页 » 安卓系统 » android监听usb

android监听usb

发布时间: 2022-07-26 22:10:52

A. 如何在Android平台上使用USB Audio设备

Android对USB的支持有两种模式:
HOST模式:Android设备为USB总线和外设供电,数据传输是双向的。
Accessory模式:即附件模式,Android作为附件,手机和电脑连接,通常是这种模式,由USB Device端向总线供电,数据传输方向是双向的。这就是为什么手机插到电脑上可以充电的原因。

在讨论具体代码之前,需要先讲一下再host模式下面的调试办法,因为数据线的端口被外设使用了,那么,传统的连接数据线调试的方法已经不行了。官网给出了解决办法:
1、请把Android设备用数据线连接到电脑,当然,也要把Android设备的wifi打开。
2、在windows命令行下,进入SDK platform-tools/ 目录(具体看SDK安装在哪个目录了),执行 adb tcpip 5555 回车。这里其实是打开了adb调试的无线端口(Android设备在电脑上的端口映射),其实后面的数字可以随便来,只要端口没有被占用。
3、adb connect <device-ip-address>:5555键入回车,这里的device-ip-address是Android端的IP地址。
4、最后adb usb回车,假如没有问题,现在已经可以在eclipse上看到logcat的输出了。

其实还有个简单的办法,可以在应用商店上下一个无线ADB工具,随便哪个都可以,这类工具就是在Android端做了上面的那些工作,而且还不用连数据线,但是第三步的那个操作还是要在windows的命令行窗口手动输入的。

B. android 开发 获取手机usb连接器的路径

给你一个思路:
因为所有的外部存储插入都会有一个系统监听触发,usb存储和sd卡的监听都是一样的,所以可以通过监听获得他的路径。这个是主要现象的代码,你自己补充一下其他的细节。

做一个监视外界存储设备的监听:

IntentFilter mIntentFilter = new IntentFilter();
mIntentFilter.addAction(Intent.ACTION_MEDIA_MOUNTED);
registerReceiver(mountReceiver, mIntentFilter);
然后在响应里边输出路径:

private BroadcastReceiver mountReceiver = new BroadcastReceiver(){

public void onReceive(Context context, Intent intent){

String path = intent.getData().getPath(); //在这里得到新插入外部存储的路径,sd卡或者usb存储能获得。

if(path.startsWith(EXTERNAL_SDCARD_STORAGE) || path.startsWith(EXTERNAL_USB_STORAGE)){
Log.e("This Log is the path for you!",path);
};

C. android如何监听有没有插入usb线

代码如下:

private USBBroadCastReceiver
mBroadcastReceiver;

IntentFilter iFilter = new IntentFilter();

iFilter.addAction(Intent.ACTION_MEDIA_EJECT);

iFilter.addAction(Intent.ACTION_MEDIA_MOUNTED);

iFilter.addAction(Intent.ACTION_MEDIA_REMOVED);

iFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);

iFilter.addDataScheme("file");
mBroadcastReceiver = new
USBBroadCastReceiver();
registerReceiver(mBroadcastReceiver,
iFilter);

private class USBBroadCastReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent)
{
String action = intent.getAction();

if
(action.equals(Intent.ACTION_MEDIA_EJECT)) {

//USB设备移除,更新UI
} else if
(action.equals(Intent.ACTION_MEDIA_MOUNTED)) {

//USB设备挂载,更新UI
}
}
}

D. 为什么我的监听USB插拔广播接收器只能监听一次

用这段代码 在你的广播接收器 添加 就会监听到 插进 拔出
if (intent.getAction().equalsIgnoreCase(
"android.hardware.usb.action.USB_STATE")) {

if (intent.getExtras().getBoolean("connected")) {

Toast.makeText(context, "USB已连接", Toast.LENGTH_SHORT).show();
Intent intent1=new Intent(context, UsbConMyService.class);
context.startService(intent1);

} else {

Toast.makeText(context, "USB已断开", Toast.LENGTH_SHORT).show();
Intent intent2=new Intent(context, UsbDisconMyService.class);
context.startService(intent2);

}

E. 如何查看USB方式连接Android设备的外接设备信息

这篇文章主要介绍了Android中查看USB连接的外接设备信息的代码实例,需要的朋友可以参考下

1,USB存储设备(如:U盘,移动硬盘):

//USB存储设备 插拔监听与 SD卡插拔监听一致。

代码如下:

private USBBroadCastReceiver
mBroadcastReceiver;

IntentFilter iFilter = new IntentFilter();

iFilter.addAction(Intent.ACTION_MEDIA_EJECT);

iFilter.addAction(Intent.ACTION_MEDIA_MOUNTED);

iFilter.addAction(Intent.ACTION_MEDIA_REMOVED);

iFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);

iFilter.addDataScheme("file");
mBroadcastReceiver = new
USBBroadCastReceiver();
registerReceiver(mBroadcastReceiver,
iFilter);

private class USBBroadCastReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent)
{
String action = intent.getAction();

if
(action.equals(Intent.ACTION_MEDIA_EJECT)) {

//USB设备移除,更新UI
} else if
(action.equals(Intent.ACTION_MEDIA_MOUNTED)) {

//USB设备挂载,更新UI
}
}
}

//获得挂载的USB设备的存储空间使用情况

public static String getUSBStorage(Context context){
// USB Storage

//storage/udisk为USB设备在Android设备上的挂载路径.不同厂商的Android设备路径不同。

//这样写同样适合于SD卡挂载。
File path = new File("/storage/udisk");

StatFs stat = new StatFs(path.getPath());
long blockSize =
stat.getBlockSize();
long totalBlocks = stat.getBlockCount();

long availableBlocks = stat.getAvailableBlocks();
String usedSize =
Formatter.formatFileSize(context, (totalBlocks-availableBlocks) *
blockSize);
String availableSize = Formatter.formatFileSize(context,
availableBlocks * blockSize);
return usedSize + " / " +
availableSize;//空间:已使用/可用的
}

2,USB外接输入设备(如:键盘,鼠标,扫描枪)

复制代码
代码如下:

try {

//获得外接USB输入设备的信息
Process p=Runtime.getRuntime().exec("cat
/proc/bus/input/devices");
BufferedReader in = new BufferedReader(new
InputStreamReader(p.getInputStream()));
String line = null;

while((line = in.readLine())!= null){
String deviceInfo =
line.trim();

//对获取的每行的设备信息进行过滤,获得自己想要的。

}

} catch (Exception e) {
// TODO: handle
exception
e.printStackTrace();
}

另:设备信息也可以通过 adb
shell 进入执行 cat /proc/bus/input/devices看到。

USB外接输入设备信息打印如下:

复制代码
代码如下:

I: Bus=0003 Vendor=11c0 Proct=0030
Version=0110
N: Name="ACRUX USB Keyboard"
P:
Phys=usb-0000:00:04.0-1.3/input1
S:
Sysfs=/devices/pci0000:00/0000:00:04.0/usb1/1-1/1-1.3/1-1.3:1.1/input/input3
U:
Uniq=
H: Handlers=mouse1 event3
B: PROP=0
B: EV=17
B: KEY=70000 0 0
0 0 0 0 0 0
B: REL=103
B: MSC=10

I: Bus=0003 Vendor=11c0
Proct=0030 Version=0110 这行信息会在Android设备与USB设备数据交互的是否使用到。

关于USB外接设备如何与Android设备数据数据交互的代码书写可以参考:

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

N: Name="ACRUX USB Keyboard" 这行说明了外接的USB设备的名称。

P: Phys=usb-0000:00:04.0-1.3/input1

S:
Sysfs=/devices/pci0000:00/0000:00:04.0/usb1/1-1/1-1.3/1-1.3:1.1/input/input3

这两行可用于识别该USB设备连接在Android设备的哪一个USB口.

F. Android如何设置USB的com3口

如下:
1、mainfest中注册监听USB拔插动作并且过滤对应vid,pid的设备。这个是静态的,在下面实例中用的是动态的,具体可以参考引用中的第【2】个。
2、查找所有的USB设备
3、动态注册需要用的USB设备权限
4、连接已注册的USB设备,并设置连接参数
5、设置返回监听,并对话
6、按照不同的协议解析byte[]数据获得对应数据(在此不表)
7、关闭连接等

G. android插USB才会收到系统广播怎么回事

android在UsbManager服务中有一个名为ACTION_USB_STATE常量,值为"android.hardware.usb.action.USB_STATE",它是一个广播供我们可以监听USB插入与拨出的状态。当USB连接状态发生改变时就会发送这个广播。为此我们只需要注册一个action="android.hardware.usb.action.USB_STATE" 的BrocastReceiver即可,如:
<receiver android:name="com.coeus.screentapdemo.receiver.UsbConnectionReceiver" >
<intent-filter android:priority="1000" >
<action android:name="android.hardware.usb.action.USB_STATE" />
</intent-filter>
</receiver>

值得注意的是android.hardware.usb.action.USB_STATE是一个粘性的广播,里面封装USB_CONNECTED(连接状态)、USB_CONFIGURED(配置信息)、USB_FUNCTION_MASS_STORAGE(大存储功能)、USB_FUNCTION_ADB(adb功能) 等状态,当这些状态发生改变时,就会发送广播。通常接收到USB状态广播是一连串的,需要我们自行区分。

作者:GooSky
链接:https://www.jianshu.com/p/a5c8b79b7fff
来源:简书
简书着作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

H. Android 有两个USB接口,我想检测检测目前U盘插在哪个接口

这个是需要底层的IO口表示的,插哪个U盘哪个IO口会被拉高,对上层是封装的,上层看不见,除非你自己写个API由下层传到上层。

I. android有没有提供检测USB状态和路径的方法

获取UBB等大容量的设备一般使用下面命令:
Environment.().getPath();
希望您试下。

热点内容
sql127001 发布:2025-01-21 18:31:50 浏览:112
服务器ip是什么格式 发布:2025-01-21 18:13:13 浏览:706
oa和邮箱的初始密码在哪里改 发布:2025-01-21 18:08:46 浏览:52
如何去除pdf的加密 发布:2025-01-21 18:08:46 浏览:565
云端的服务器怎么设置ip 发布:2025-01-21 17:48:52 浏览:186
会议脚本 发布:2025-01-21 17:41:29 浏览:23
android的toast 发布:2025-01-21 17:41:28 浏览:9
linux默认安装的mysql 发布:2025-01-21 17:40:08 浏览:912
java输出数据库 发布:2025-01-21 17:35:38 浏览:963
帧缓存的精度 发布:2025-01-21 17:35:02 浏览:657