當前位置:首頁 » 安卓系統 » 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();
希望您試下。

熱點內容
做解壓橡皮 發布:2025-01-21 15:03:06 瀏覽:990
雙系統win訪問mac 發布:2025-01-21 14:53:52 瀏覽:484
安卓車機系統如何安裝carplay 發布:2025-01-21 14:52:24 瀏覽:589
sql操作手冊 發布:2025-01-21 14:46:08 瀏覽:311
青橙腳本 發布:2025-01-21 14:44:05 瀏覽:218
東風本田crv時尚版是什麼配置 發布:2025-01-21 14:20:04 瀏覽:219
安卓如何多開軟體每個機型不一樣 發布:2025-01-21 14:15:29 瀏覽:501
iis配置php5 發布:2025-01-21 14:08:19 瀏覽:274
凱叔講故事為什麼聯系不到伺服器 發布:2025-01-21 13:56:50 瀏覽:387
linux鏡像文件下載 發布:2025-01-21 13:34:36 瀏覽:218