Android의 풀 소스에서는 UsbManager를 이용해서 연결/끊김을 체크한다.
그런데 우리가 사용하는 일반적인 sdk에서는 Usb의 State를 받아올 수 없다.(왜인지는 모르겠으나..)
그래서 Android의 풀 소스에서 Usb 연결을 담당하는
/package/apps/Settings/src/com/android/settings/에서 소스를 찾아보니
UsbManager.USB_STATE
UsbManager.USB_CONNECTED
와 같은 final String을 이용해 리시빙을 하고 있었다.
그래서 구글링을 통해 해당 intent의 String값을 알아내서 아래와 같이 USB_STATE를 체크하였다.
public void onReceive(Context context, Intent intent) { Log.d("mstag", "Received : "+intent.getAction()); String action = intent.getAction(); if(action.equals("android.hardware.usb.action.USB_STATE")) { // UsbManager.ACTION_USB_STATE Bundle extras = intent.getExtras(); boolean usbConnected = extras.getBoolean("connected"); // UsbManager.USB_CONNECTED String usbState = ""; if(usbConnected) { usbState = "connected"; } else { usbState = "disconnected"; } Toast.makeText(context, "usb state change:"+usbState, Toast.LENGTH_SHORT).show(); }
+onRecevice에 위와 같이 함수를 넣어놓고 리시버를 등록하면 USB를 빼거나 꼽을때마다 토스트가 날라온다.
+Settings Project의 AndroidManifest.xml을 열어보았다.
USB관련 리시빙을 시스템용과 유저용으로 나눠서 받는듯하다.
'소프트웨어 > Android/Java/Ndk' 카테고리의 다른 글
Android] android full soucre 다운로드 (1) | 2014.08.20 |
---|---|
Android] Nexus5에 android pull source가 올라갔는데 부팅안될때 (1) | 2014.08.20 |
Android] Android full source와 eclipse 연결 (1) | 2014.08.20 |
Android] ADB 를 이용한 apk 추출 (0) | 2014.08.18 |
Android] android ADB screen caputre (0) | 2014.08.17 |
Android] NDK Project (2) | 2014.08.17 |
Android] android NDK (0) | 2014.08.17 |