Back to project page usb-serial-for-android.
The source code is released under:
GNU Lesser General Public License
If you think the Android project usb-serial-for-android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
/* Copyright 2011 Google Inc. */* w w w . j a v a 2 s . c o m*/ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, * USA. * * Project home page: http://code.google.com/p/usb-serial-for-android/ */ package com.hoho.android.usbserial.examples; import android.app.Activity; import android.content.Context; import android.hardware.usb.UsbManager; import android.os.Bundle; import android.util.Log; import android.widget.ScrollView; import android.widget.TextView; import com.hoho.android.usbserial.driver.UsbSerialDriver; import com.hoho.android.usbserial.driver.UsbSerialProber; import com.hoho.android.usbserial.util.HexDump; import com.hoho.android.usbserial.util.SerialInputOutputManager; import java.io.IOException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * A sample Activity demonstrating USB-Serial support. * * @author mike wakerly (opensource@hoho.com) */ public class DemoActivity extends Activity { private final String TAG = DemoActivity.class.getSimpleName(); /** * The device currently in use, or {@code null}. */ private UsbSerialDriver mSerialDevice; /** * The system's USB service. */ private UsbManager mUsbManager; private TextView mTitleTextView; private TextView mDumpTextView; private ScrollView mScrollView; private final ExecutorService mExecutor = Executors.newSingleThreadExecutor(); private SerialInputOutputManager mSerialIoManager; private final SerialInputOutputManager.Listener mListener = new SerialInputOutputManager.Listener() { @Override public void onRunError(Exception e) { Log.d(TAG, "Runner stopped."); } @Override public void onNewData(final byte[] data) { DemoActivity.this.runOnUiThread(new Runnable() { @Override public void run() { DemoActivity.this.updateReceivedData(data); } }); } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE); mTitleTextView = (TextView) findViewById(R.id.demoTitle); mDumpTextView = (TextView) findViewById(R.id.demoText); mScrollView = (ScrollView) findViewById(R.id.demoScroller); } @Override protected void onPause() { super.onPause(); stopIoManager(); if (mSerialDevice != null) { try { mSerialDevice.close(); } catch (IOException e) { // Ignore. } mSerialDevice = null; } } @Override protected void onResume() { super.onResume(); mSerialDevice = UsbSerialProber.acquire(mUsbManager); Log.d(TAG, "Resumed, mSerialDevice=" + mSerialDevice); if (mSerialDevice == null) { mTitleTextView.setText("No serial device."); } else { try { mSerialDevice.open(); } catch (IOException e) { Log.e(TAG, "Error setting up device: " + e.getMessage(), e); mTitleTextView.setText("Error opening device: " + e.getMessage()); try { mSerialDevice.close(); } catch (IOException e2) { // Ignore. } mSerialDevice = null; return; } mTitleTextView.setText("Serial device: " + mSerialDevice); } onDeviceStateChange(); } private void stopIoManager() { if (mSerialIoManager != null) { Log.i(TAG, "Stopping io manager .."); mSerialIoManager.stop(); mSerialIoManager = null; } } private void startIoManager() { if (mSerialDevice != null) { Log.i(TAG, "Starting io manager .."); mSerialIoManager = new SerialInputOutputManager(mSerialDevice, mListener); mExecutor.submit(mSerialIoManager); } } private void onDeviceStateChange() { stopIoManager(); startIoManager(); } private void updateReceivedData(byte[] data) { final String message = "Read " + data.length + " bytes: \n" + HexDump.dumpHexString(data) + "\n\n"; mDumpTextView.append(message); mScrollView.smoothScrollTo(0, mDumpTextView.getBottom()); } }