내 Raspberry Pi에 Android Things Developer Preview 5.1 (OIR1.170720.017)을 설치했습니다.첨부 된 USB 장치의/dev 장치 경로 가져 오기
앱은 Android 8 Platform API 레벨 26에 대해 Xamarin을 사용하여 만들어졌습니다. USB 엄지 드라이브가 연결될 때 hotplug 이벤트를 감지하고 싶습니다.
[BroadcastReceiver(Enabled = true)]
[IntentFilter(new[] { UsbManager.ActionUsbDeviceAttached, UsbManager.ActionUsbDeviceDetached })]
public class MyBroadCastReceiver : BroadcastReceiver
{
public event EventHandler UsbDeviceAttached;
public event EventHandler UsbDeviceDetached;
public override void OnReceive(Context context, Intent intent)
{
if (intent.Action.Equals(UsbManager.ActionUsbDeviceDetached)) UsbDeviceDetached?.Invoke(this, new EventArgs());
if (intent.Action.Equals(UsbManager.ActionUsbDeviceAttached)) UsbDeviceAttached?.Invoke(this, new EventArgs());
}
}
주요 활동 : 내 코드에서 방송 수신기를 사용하여이 작업을 archieved 이제
private MyBroadCastReceiver receiver;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.Main);
this.receiver = new MyBroadCastReceiver();
}
protected override void OnResume()
{
base.OnResume();
RegisterReceiver(this.receiver, new IntentFilter(UsbManager.ActionUsbDeviceAttached));
}
protected override void OnPause()
{
UnregisterReceiver(this.receiver);
base.OnPause();
}
, 나는 그것에 어떤 파티션 또는 파일 시스템에 빈 USB 썸 드라이브, 그냥 일반 블록 스토리지를 . 드라이브를 연결하거나 분리 할 때 OnReceive(Context, Intent)
메서드가 호출됩니다. context
및 intent
인수를 살펴 보았지만 연결된 장치에 대한 자세한 정보를 확인할 수 없었습니다. 많은 프로퍼티가 null 인 것으로 보입니다 : 디바이스의/dev 노드를 얻고 싶습니다 (/ mnt가 아니거나 드라이브에 파일 시스템이있을 때 사용할 수있는 마운트 포인트가 아닙니다). dmesg
을 보면 블록 장치가 노드 /dev/sda
에 할당 된 것을 볼 수 있습니다. 코드에서 노드 이름/경로를 가져 오는 방법이 있습니까? 이를위한 추가 권한이 필요합니까? 고맙습니다.
https://stackoverflow.com/a/42474815/3290339 – Onik
감사합니다. 그러나 이것은 내 질문에 대한 대답이 아닙니다. 연결되는 장치의/dev/노드를 어떻게 찾습니까? – Simon
[this] (https://stackoverflow.com/q/41890251/6950238) 질문 및 답변을보십시오. –