2016-10-20 2 views
-2

인 텐트 필터 -> ACTION_ACL_CONNECTED, ACTION_ACL_DISCONNECT_REQUESTED 및 ACTION_ACL_DISCONNECTED를 사용하여 WiFi 및 Bluetooth 용으로 사용할 수 있습니다. 그러나 일반적으로 연결된 장치가 제거되었는지 여부를 확인하는 무언가가 있습니다. 예를 들어, Android 기기를 Mac에 연결했는데 이제 Smartphone이 잠겨서 Mac으로 연결이 끊어지면이 방향으로 로컬 푸시 또는 소리가 나올 수 있습니다 ...어떤 종류의 주변 장치가 제거되었는지 확인하는 방법이 있습니까?

업데이트

좋은하지만 불행히도 않았나 작업을 :(보이는 @Rajesh Gopu에서 답을 시도

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    IntentFilter filter = new IntentFilter(); 
    filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED); 
    filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED); 
    registerReceiver(mUsbReceiver, filter); //register 
    Toast.makeText(getApplicationContext(), "ON CREATE", Toast.LENGTH_LONG).show(); 

} 

// BroadcastReceiver when insert/remove the device USB plug into/from a USB port 
BroadcastReceiver mUsbReceiver = new BroadcastReceiver() { 
    public void onReceive(Context context, Intent intent) {//get Event 
     Toast.makeText(getApplicationContext(), "ON RECEIVE", Toast.LENGTH_LONG).show(); 

     String action = intent.getAction(); 
     System.out.println("BroadcastReceiver Event"); 
     if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) { 
      Toast.makeText(getApplicationContext(), "CONNECTED", Toast.LENGTH_LONG).show(); 
      System.out.println("BroadcastReceiver USB Connected"); 
     } else if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)) { 
      Toast.makeText(getApplicationContext(), "DISCONNECTED", Toast.LENGTH_LONG).show(); 
      System.out.println("BroadcastReceiver USB Disconnected"); 
     } 
    } 
}; 
} 
+0

"나는 나의 Mac으로 내 안드로이드 장치를 연결 한"- 그것을 연결 ... 어떻게? – CommonsWare

+0

정말 중요하지 않습니다. 나는 어떤 종류의 연결/연결 해제 청취자를 의미합니다. 블루투스와 와이파이는 연결이 끊어지면들을 수 있지만, 예를 들어 USB 케이블과 연결하면 어떨까요? – BigPun86

+0

"그다지 중요하지 않습니다."- 그렇습니다. 예를 들어, 문자열을 사용하여 장치를 Mac에 연결했는지 여부를 확인하는 수신기는 없습니다. 안드로이드에서 이러한 성질의 API는 연결 대상이 아닌 연결 기술에 집중되는 경향이 있습니다. "예를 들어 USB 케이블과 연결하면 어떨까요?"라는 말은 케이블의 특정 유스 케이스 (외부 저장소를 볼륨으로 마운트하기위한 "adb"MTP, USB 호스트/액세서리 API, 다른 것인가?)에 따라 달라질 수 있습니다. – CommonsWare

답변

2

사용 브로드 수신기, 안드로이드 시스템을 brodcasting으로 internel 이벤트를 알려 . 이 작업은 broadcastrecever로 동작을 등록함으로써 App에서 수신 할 수 있습니다.

다음은 usb 연결/연결 끊기 이벤트를 암시하는 예입니다.

IntentFilter filter = new IntentFilter(); 
filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED); 
filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED); 
registerReceiver(mUsbReceiver, filter); //register 

    // BroadcastReceiver when insert/remove the device USB plug into/from a USB port 
    BroadcastReceiver mUsbReceiver = new BroadcastReceiver() { 
    public void onReceive(Context context, Intent intent) {//get Event 
    String action = intent.getAction(); 
    System.out.println("BroadcastReceiver Event"); 
    if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) { 
     System.out.println("BroadcastReceiver USB Connected"); 
    } else if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)) { 
     System.out.println("BroadcastReceiver USB Disconnected"); 
    } 
    } 

}

+0

흠, 소리가 잘 들리지만, 코드를 사용할 때 아무 일도 일어나지 않습니다 ..... – BigPun86

+0

매니페스트 파일 android.hardware.usb.action.ACTION_USB_PERMISSION에 필요한 권한을 추가 했습니까? –

관련 문제