亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android Usb設備的監聽(Dev)外設端口的判定以及耳機的插拔

2019-10-21 21:33:21
字體:
來源:轉載
供稿:網友

最近在公司用到外設,需要判斷接入的外設的VendorId和ProductId,然后給大家說一下自己的學習成果把 ,首先我門可以通過android.hardware.usb.action.USB_STATE監聽自己的Usb連接的設備,只針對Usb設備。而想要監聽外部設備的時候卻需要另外的兩個廣播進行監聽"android.hardware.usb.action.USB_DEVICE_ATTACHED""android.hardware.usb.action.USB_DEVICE_DETACHED"。要是想對耳機或者耳機的狀態進行監聽的時候需要的廣播是"android.intent.action.HEADSET_PLUG" 通過

int inttype=intent.getIntExtra("microphone",0)來獲取耳機是否有麥克風。inttype==0表示沒有耳機inttype==1表示有耳機

我個人的建議就是將一部分代碼(根據個人情況而定)放到服務里面,或者是Application里面。

import com.example.usbusb.utils.ToastUtils;import android.app.Activity;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.os.Bundle;import android.widget.Toast;public class MainActivity extends Activity { //耳機的廣播 public static final String TAGLISTEN = "android.intent.action.HEADSET_PLUG"; //usb線的廣播 private final static String TAGUSB = "android.hardware.usb.action.USB_STATE"; //外設的廣播 public static final String TAGIN = "android.hardware.usb.action.USB_DEVICE_ATTACHED"; public static final String TAGOUT = "android.hardware.usb.action.USB_DEVICE_DETACHED";  private boolean BOOLEAN=false;  @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);  //賽選器 IntentFilter filter = new IntentFilter(); //篩選的條件 filter.addAction(TAGIN); filter.addAction(TAGOUT); filter.addAction(TAGUSB); //注冊廣播 動態注冊 registerReceiver(receiver, filter); } /** * 創建廣播的類 */ BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) {  String action = intent.getAction();  //判斷外設  if (action.equals(TAGIN)) {  ToastUtils.shwotoast(context, "外設已經連接");  //Toast.makeText(context, "外設已經連接", Toast.LENGTH_SHORT).show();  }  if (action.equals(TAGOUT)) {  if (BOOLEAN) {   ToastUtils.shwotoast(context, "外設已經移除");   //Toast.makeText(context, "外設已經移除", Toast.LENGTH_SHORT).show();  }  }  //判斷存儲usb  if (action.equals(TAGUSB)) {  boolean connected = intent.getExtras().getBoolean("connected");  if (connected) {   ToastUtils.shwotoast(context, "USB 已經連接");   //Toast.makeText(MainActivity.this, "USB 已經連接",Toast.LENGTH_SHORT).show();    } else {   if (BOOLEAN) {   ToastUtils.shwotoast(context, "USB 斷開");   //Toast.makeText(MainActivity.this, "USB 斷開",Toast.LENGTH_SHORT).show();   }  }  }  //判斷耳機  if (action.equals(TAGLISTEN)) {  int intExtra = intent.getIntExtra("state", 0);  // state --- 0代表拔出,1代表插入  // name--- 字符串,代表headset的類型。  // microphone -- 1代表這個headset有麥克風,0則沒有  // int i=intent.getIntExtra("",0);  if (intExtra == 0) {   if (BOOLEAN) {   ToastUtils.shwotoast(context,"拔出耳機");   //Toast.makeText(context, "拔出耳機", Toast.LENGTH_SHORT).show();   }  }  if (intExtra == 1) {   ToastUtils.shwotoast(context, "耳機插入");   //Toast.makeText(context, "耳機插入", Toast.LENGTH_SHORT).show();   int intType = intent.getIntExtra("microphone", 0);   if (intType == 0) {   ToastUtils.shwotoast(context, "沒有麥克風");   //Toast.makeText(context, "沒有麥克風" + intType,Toast.LENGTH_SHORT).show();   }   if (intType == 1) {   ToastUtils.shwotoast(context,"有話筒" );   //Toast.makeText(context, "有話筒" + intType,Toast.LENGTH_SHORT).show();   }  }   }  BOOLEAN=true; } }; /** * 注銷廣播 */ protected void onDestroy() { unregisterReceiver(receiver); };}

ToastUtils工具類

import android.content.Context;import android.widget.Toast;public class ToastUtils { public static Toast toast=null; private ToastUtils toastUtils=new ToastUtils(); private ToastUtils(){}  public static void shwotoast(Context context,String msg){   if (toast==null) {  toast=Toast.makeText(context, msg, Toast.LENGTH_SHORT); }else {  if (toast!=null) {  toast.setText(msg);  } }   toast.show();  }}

下面的一個就是獲取每一個Id的端口號通過在Usb的廣播里面調用這個方法判斷是否是自己的設備,這樣就可完成自己想要的操作了(注意當看到設備的ID是以0x開頭的是十六位的 然后轉化成十進制的數就能看到自己的東西了)

import java.util.HashMap;import android.annotation.SuppressLint;import android.content.Context;import android.hardware.usb.UsbDevice;import android.hardware.usb.UsbManager;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.util.Log; public class MainActivity extends ActionBarActivity {  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    UsbManager usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);    HashMap<String, UsbDevice> map = usbManager.getDeviceList();    System.out.println("......................befor....................................");    for(UsbDevice device : map.values()){     System.out.println(".......one..........dName: " + device.getDeviceName());     System.out.println(".......tow.........vid: " + device.getVendorId() + "/t pid: " + device.getProductId());    }    System.out.println("........................after..................................");  }

結果我們都能看到有兩個設備

Android,Usb設備,監聽,外設端口

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人激情视频在线播放| 日韩电视剧免费观看网站| 午夜美女久久久久爽久久| 亚洲精品资源美女情侣酒店| 久久理论片午夜琪琪电影网| 一区二区三区视频免费| 国产精品免费久久久久久| 精品香蕉一区二区三区| 亚洲精品资源美女情侣酒店| 欧美老妇交乱视频| 国产精品自拍偷拍| xxx欧美精品| 2018日韩中文字幕| 午夜精品久久久久久久99热| 国产精品欧美激情在线播放| 日本久久91av| 国产va免费精品高清在线观看| 亚洲成人a**站| xvideos国产精品| 久久久精品网站| 欧美日韩激情小视频| 国产福利精品在线| 日韩欧美国产免费播放| 久久精品在线视频| 国产精品露脸av在线| 精品无人区乱码1区2区3区在线| 欧美日韩亚洲91| 日本一区二三区好的精华液| 国产精品欧美日韩| 亚洲一区二区三区视频| 久久久久国产精品一区| 国产精品一区二区三区免费视频| 日韩中文字幕视频在线| 亚洲深夜福利视频| 国产精品亚洲欧美导航| 欧美影院在线播放| 91在线高清免费观看| 国产精品91一区| 国产精品中文字幕久久久| 欧美日韩中国免费专区在线看| 国产一区二区免费| 亚洲一区第一页| 久久久av亚洲男天堂| 激情成人在线视频| 欧美日韩另类视频| 日韩av在线免费观看| 日韩av免费在线播放| 欧美极品少妇全裸体| 国产日产欧美精品| www.欧美三级电影.com| 亚洲欧美国产一区二区三区| 中文字幕日韩在线播放| 神马久久久久久| 国产精品久久久一区| 九九精品在线播放| 成人精品一区二区三区电影黑人| 亚洲无线码在线一区观看| 亚洲网在线观看| 久久综合免费视频影院| 午夜精品一区二区三区视频免费看| 日韩美女视频中文字幕| 亚洲人成网站在线播| 欧美野外猛男的大粗鳮| 国产一区二区三区欧美| 欧美日韩亚洲视频| 91免费的视频在线播放| 大桥未久av一区二区三区| 成人免费网站在线观看| 中文综合在线观看| 91精品久久久久久久久久久久久| 国产精品亚洲片夜色在线| 一区二区三区www| 成人疯狂猛交xxx| 成人免费大片黄在线播放| 国产精品igao视频| 日韩成人av一区| 亚洲一区二区久久| 国产精品第3页| 亚洲国产天堂久久综合| 欧美丰满片xxx777| 国产亚洲精品成人av久久ww| 中文字幕亚洲综合久久筱田步美| 日本久久精品视频| 欧洲美女7788成人免费视频| www.久久撸.com| 久久精品国产亚洲精品2020| 国产精品影院在线观看| 最新亚洲国产精品| 亚洲最大av网| 久久亚洲私人国产精品va| 久久频这里精品99香蕉| 欧美日韩第一页| 亚洲国产成人久久| 欧美资源在线观看| 国产97在线观看| 一本大道亚洲视频| 国产精品久久久久久久久免费| 羞羞色国产精品| 日韩av综合中文字幕| 黑人巨大精品欧美一区二区一视频| 一区二区三区 在线观看视| 亚洲国产美女精品久久久久∴| 91久久久久久久久久久久久| 一个人看的www欧美| 91av视频在线观看| 亚洲欧美国内爽妇网| 深夜福利日韩在线看| 久久久久久国产精品美女| 欧美精品免费看| 国产精品日韩在线播放| 日韩av在线免播放器| 亚洲女同性videos| 91天堂在线视频| 91精品国产高清久久久久久91| 亚洲成人网久久久| 亚洲人免费视频| 97超碰蝌蚪网人人做人人爽| 91美女片黄在线观看游戏| 国产69精品久久久| www.国产精品一二区| 91精品综合久久久久久五月天| 国产精品一区二区三区免费视频| 亚洲综合小说区| 欧美视频在线观看免费网址| 欧美高清电影在线看| 久久久久亚洲精品国产| 亚洲欧美中文日韩在线| 在线成人一区二区| 成人免费淫片aa视频免费| 不卡中文字幕av| 伊人久久男人天堂| 伊人精品在线观看| 久久免费国产精品1| 国产免费一区二区三区在线能观看| 欧美性生交xxxxxdddd| 久久久亚洲欧洲日产国码aⅴ| 国产成人免费av| 日韩欧亚中文在线| 国产97在线亚洲| 欧美日韩一区二区免费在线观看| 国产综合视频在线观看| 日韩精品免费在线观看| 日韩在线观看免费av| 亚洲欧美色图片| 亚洲免费av网址| 欧美成人精品在线播放| 精品久久久久久亚洲精品| 国产在线精品自拍| 欧美成人三级视频网站| 992tv在线成人免费观看| 久久天天躁夜夜躁狠狠躁2022| 精品久久久久人成| 都市激情亚洲色图| 亚洲欧美国产制服动漫| 久久精品人人做人人爽| 久久久噜噜噜久久中文字免| 欧美裸体xxxx极品少妇| 尤物99国产成人精品视频| 久久久久久久成人| 久久精品视频在线播放| 国产精品69久久| 欧美黑人又粗大| 亚洲老司机av| 97视频免费观看|