所以就不用從頭自己寫一個了
使用時Android project底下的res新增xml資料夾並在該資料夾底下新增device_filter.xml
執行結果:
Arduino程式碼:
/* Name: Test.ino Created: 2017/2/28 上午 12:06:46 Author: C.Y.Fang */ // the setup function runs once when you press reset or power the board void setup() { Serial.begin(115200); } // the loop function runs over and over again until power down or reset void loop() { Serial.println("Hi"); delay(1000); }Android程式碼:
package com.example.cyfang.otgexample; import android.hardware.usb.UsbDeviceConnection; import android.hardware.usb.UsbManager; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.TextView; import com.hoho.android.usbserial.driver.UsbSerialDriver; import com.hoho.android.usbserial.driver.UsbSerialPort; import com.hoho.android.usbserial.driver.UsbSerialProber; import java.io.IOException; import java.util.List; public class MainActivity extends AppCompatActivity { private UsbManager manager; private UsbSerialPort port; private UsbSerialDriver driver; private UsbDeviceConnection connection; private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } private void init() { textView = (TextView) findViewById(R.id.textView); textView.postDelayed(runnable, 1000); manager = (UsbManager) getSystemService(USB_SERVICE); List<UsbSerialDriver> availableDrivers = UsbSerialProber.getDefaultProber().findAllDrivers(manager); if (availableDrivers.isEmpty()) { textView.setText("Can't not find usb device."); return; } driver = availableDrivers.get(0); connection = manager.openDevice(driver.getDevice()); if (connection == null) { textView.setText("Usb can't connect to mobile."); return; } port = driver.getPorts().get(0); try { port.open(connection); port.setParameters(115200, 8, UsbSerialPort.STOPBITS_1, UsbSerialPort.PARITY_NONE); } catch (IOException ex) { } } private final Runnable runnable = new Runnable() { byte buffer[] = new byte[1024]; @Override public void run() { if (port != null) { try { int number = port.read(buffer, 1000); String text = new String(buffer, "UTF-8"); textView.setText(text); textView.postDelayed(runnable, 1000); } catch (IOException ex) { } } } }; }
參考資料:
https://github.com/mik3y/usb-serial-for-android