最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android Usb設(shè)備的監(jiān)聽(Dev)外設(shè)端口的判定以及耳機(jī)的插拔

 更新時間:2018年12月13日 11:54:08   作者:ChaoLi_Chen  
今天小編就為大家分享一篇關(guān)于Android Usb設(shè)備的監(jiān)聽(Dev)外設(shè)端口的判定以及耳機(jī)的插拔,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

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

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

我個人的建議就是將一部分代碼(根據(jù)個人情況而定)放到服務(wù)里面,或者是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 {
 //耳機(jī)的廣播
 public static final String TAGLISTEN = "android.intent.action.HEADSET_PLUG";
 //usb線的廣播
 private final static String TAGUSB = "android.hardware.usb.action.USB_STATE";
 //外設(shè)的廣播
 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);
 //注冊廣播 動態(tài)注冊
 registerReceiver(receiver, filter);
 }
 /**
 * 創(chuàng)建廣播的類
 */
 BroadcastReceiver receiver = new BroadcastReceiver() {
 @Override
 public void onReceive(Context context, Intent intent) {
  String action = intent.getAction();
  //判斷外設(shè)
  if (action.equals(TAGIN)) {
  ToastUtils.shwotoast(context, "外設(shè)已經(jīng)連接");
  //Toast.makeText(context, "外設(shè)已經(jīng)連接", Toast.LENGTH_SHORT).show();
  }
  if (action.equals(TAGOUT)) {
  if (BOOLEAN) {
   ToastUtils.shwotoast(context, "外設(shè)已經(jīng)移除");
   //Toast.makeText(context, "外設(shè)已經(jīng)移除", Toast.LENGTH_SHORT).show();
  }
  }
  //判斷存儲usb
  if (action.equals(TAGUSB)) {
  boolean connected = intent.getExtras().getBoolean("connected");
  if (connected) {
   ToastUtils.shwotoast(context, "USB 已經(jīng)連接");
   //Toast.makeText(MainActivity.this, "USB 已經(jīng)連接",Toast.LENGTH_SHORT).show();
  
  } else {
   if (BOOLEAN) {
   ToastUtils.shwotoast(context, "USB 斷開");
   //Toast.makeText(MainActivity.this, "USB 斷開",Toast.LENGTH_SHORT).show();
   }
  }
  }
  //判斷耳機(jī)
  if (action.equals(TAGLISTEN)) {
  int intExtra = intent.getIntExtra("state", 0);
  // state --- 0代表拔出,1代表插入
  // name--- 字符串,代表headset的類型。
  // microphone -- 1代表這個headset有麥克風(fēng),0則沒有
  // int i=intent.getIntExtra("",0);
  if (intExtra == 0) {
   if (BOOLEAN) {
   ToastUtils.shwotoast(context,"拔出耳機(jī)");
   //Toast.makeText(context, "拔出耳機(jī)", Toast.LENGTH_SHORT).show();
   }
  }
  if (intExtra == 1) {
   ToastUtils.shwotoast(context, "耳機(jī)插入");
   //Toast.makeText(context, "耳機(jī)插入", Toast.LENGTH_SHORT).show();
   int intType = intent.getIntExtra("microphone", 0);
   if (intType == 0) {
   ToastUtils.shwotoast(context, "沒有麥克風(fēng)");
   //Toast.makeText(context, "沒有麥克風(fēng)" + 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的廣播里面調(diào)用這個方法判斷是否是自己的設(shè)備,這樣就可完成自己想要的操作了(注意當(dāng)看到設(shè)備的ID是以0x開頭的是十六位的 然后轉(zhuǎn)化成十進(jìn)制的數(shù)就能看到自己的東西了)

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..................................");
  }

結(jié)果我們都能看到有兩個設(shè)備

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

最新評論

内江市| 德江县| 伊金霍洛旗| 合川市| 普安县| 合肥市| 江山市| 浙江省| 新干县| 噶尔县| 苗栗县| 丘北县| 梅州市| 河南省| 五华县| 达日县| 恩施市| 塔河县| 拉萨市| 饶平县| 交城县| 思茅市| 曲阜市| 阿拉善左旗| 砚山县| 蒲城县| 响水县| 瓦房店市| 柞水县| 福州市| 贡觉县| 呼玛县| 青岛市| 玉山县| 武胜县| 杭锦旗| 广州市| 左权县| 丹东市| 黔西县| 康马县|