2016-10-20 57 views
-2

我知道有一些WiFi和藍牙通過使用意圖過濾器 - > ACTION_ACL_CONNECTED,ACTION_ACL_DISCONNECT_REQUESTED和ACTION_ACL_DISCONNECTED ...但是有什麼一般來檢查是否有任何一種連接的設備已被刪除。例如:我已將我的Android設備連接到我的Mac,現在智能手機已鎖定,並且移除了與我的Mac的連接,並且我可以觸發本地推送或聲音或此方向的任何內容...有沒有辦法確定是否有任何外圍設備已被刪除?

更新

試圖從@Rajesh Gopu這看起來不錯,但遺憾的是didn't工作:(答案

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

「我已經與我的Android設備我的Mac」 - 連接它...怎麼樣? – CommonsWare

+0

沒關係。我的意思是任何一種連接/斷開聽衆......藍牙和WiFi很容易聽,如果它已被斷開,但如何與USB電纜連接例如。 – BigPun86

+0

「不重要」 - 是的,它的確如此。例如,沒有聽衆確定您是否通過一串字符串將設備連接到Mac。 Android中這種性質的API往往側重於連接技術,而不是連接的目標。 「如何與USB電纜連接」 - 這可能取決於電纜的具體使用情況('adb'?MTP用於將外部存儲裝置作爲音量?USB主機/附件API?其他?)。 – CommonsWare

回答

2

使用轉播接收器, Android系統的通知通過brodcasting它個內事件。 應用程序可以通過向broadcastrecever註冊該操作來接收該應用程序。

下面是一個exmaple recive usb connect/disconnect事件。

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中添加了必需的權限 –

相關問題