Android Usb 장치 의 감청(Dev)외부 포트 의 판정 및 이어폰 플러그
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 이어폰 이 있다 는 뜻
제 개인 적 인 건 의 는 일부 코드(개인 상황 에 따라 정 함)를 서비스 에 넣 거나 응용 프로그램 에 넣 는 것 입 니 다.
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 로 시작 하 는 16 자리 인 것 을 보면 10 진법 으로 바 뀌 면 자신의 물건 을 볼 수 있 습 니 다)
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..................................");
}
결국 우 리 는 두 개의 설 비 를 볼 수 있 었 다.총결산
이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.더 많은 내용 을 알 고 싶다 면 아래 링크 를 보 세 요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.