欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

我個人的建議就是將一部分代碼(根據(jù)個人情況而定)放到服務里面,或者是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);
 //注冊廣播 動態(tài)注冊
 registerReceiver(receiver, filter);
 }
 /**
 * 創(chuàng)建廣播的類
 */
 BroadcastReceiver receiver = new BroadcastReceiver() {
 @Override
 public void onReceive(Context context, Intent intent) {
  String action = intent.getAction();
  //判斷外設
  if (action.equals(TAGIN)) {
  ToastUtils.shwotoast(context, "外設已經(jīng)連接");
  //Toast.makeText(context, "外設已經(jīng)連接", Toast.LENGTH_SHORT).show();
  }
  if (action.equals(TAGOUT)) {
  if (BOOLEAN) {
   ToastUtils.shwotoast(context, "外設已經(jīng)移除");
   //Toast.makeText(context, "外設已經(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();
   }
  }
  }
  //判斷耳機
  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開頭的是十六位的 然后轉化成十進制的數(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..................................");
  }

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

總結

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

相關文章

  • Android 讀取文件內容實現(xiàn)方法總結

    Android 讀取文件內容實現(xiàn)方法總結

    這篇文章主要介紹了Android 讀取文件內容實現(xiàn)方法的相關資料,這里提供了幾種方法,大家可以選擇使用,需要的朋友可以參考下
    2016-10-10
  • Android中一種巧妙的drawable.xml替代方案分享

    Android中一種巧妙的drawable.xml替代方案分享

    這篇文章主要給大家介紹了關于Android中一種巧妙的drawable.xml替代方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-09-09
  • Android電池電量監(jiān)聽的示例代碼

    Android電池電量監(jiān)聽的示例代碼

    本篇文章主要介紹了Android電池電量監(jiān)聽的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • Android仿微信對話列表滑動刪除效果

    Android仿微信對話列表滑動刪除效果

    這篇文章主要為大家詳細介紹了Android仿微信對話列表滑動刪除效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Android 使用版本控制工具時添加忽略文件的方式(詳解)

    Android 使用版本控制工具時添加忽略文件的方式(詳解)

    下面小編就為大家?guī)硪黄狝ndroid 使用版本控制工具時添加忽略文件的方式(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • Android動畫之TranslateAnimation用法案例詳解

    Android動畫之TranslateAnimation用法案例詳解

    這篇文章主要介紹了Android動畫之TranslateAnimation用法案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • Android使用Retrofit2.0技術仿微信發(fā)說說

    Android使用Retrofit2.0技術仿微信發(fā)說說

    這篇文章主要為大家詳細介紹了Android使用Retrofit2.0技術仿微信發(fā)說說,實現(xiàn)拍照,選圖庫,多圖案上傳功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 解決MySQL忘記密碼問題的方法

    解決MySQL忘記密碼問題的方法

    這篇文章主要為大家分享了一種解決MySQL忘記密碼問題的方法,MySQL忘記密碼怎么辦,不用著急,小編為大家解答,感興趣的小伙伴們可以參考一下
    2016-03-03
  • Android實現(xiàn)中軸旋轉特效 Android制作別樣的圖片瀏覽器

    Android實現(xiàn)中軸旋轉特效 Android制作別樣的圖片瀏覽器

    這篇文章主要為大家詳細介紹了Android實現(xiàn)中軸旋轉特效,制作別樣的圖片瀏覽器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Mac下完全卸載干凈Android Studio的方法

    Mac下完全卸載干凈Android Studio的方法

    這篇文章主要介紹了Mac下完全卸載干凈Android Studio的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04

最新評論