Android USB host serial driver library for CDC, FTDI, Arduino and other devices.

Overview

Actions Status Jitpack Codacy codecov

usb-serial-for-android

This is a driver library for communication with Arduinos and other USB serial hardware on Android, using the Android USB Host Mode (OTG) available since Android 3.1 and working reliably since Android 4.2.

No root access, ADK, or special kernel drivers are required; all drivers are implemented in Java. You get a raw serial port with read(), write(), and other functions for use with your own protocols.

Quick Start

1. Add library to your project:

Add jitpack.io repository to your root build.gradle:

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

Add library to dependencies

dependencies {
    implementation 'com.github.mik3y:usb-serial-for-android:3.4.3'
}

2. If the app should be notified when a device is attached, add device_filter.xml to your project's res/xml/ directory and configure in your AndroidManifest.xml.

<activity
    android:name="..."
    ...>
    <intent-filter>
        <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
    </intent-filter>
    <meta-data
        android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
        android:resource="@xml/device_filter" />
</activity>

3. Use it! Example code snippet:

open device:

    // Find all available drivers from attached devices.
    UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
    List<UsbSerialDriver> availableDrivers = UsbSerialProber.getDefaultProber().findAllDrivers(manager);
    if (availableDrivers.isEmpty()) {
        return;
    }

    // Open a connection to the first available driver.
    UsbSerialDriver driver = availableDrivers.get(0);
    UsbDeviceConnection connection = manager.openDevice(driver.getDevice());
    if (connection == null) {
        // add UsbManager.requestPermission(driver.getDevice(), ..) handling here
        return;
    }

    UsbSerialPort port = driver.getPorts().get(0); // Most devices have just one port (port 0)
    port.open(connection);
    port.setParameters(115200, 8, UsbSerialPort.STOPBITS_1, UsbSerialPort.PARITY_NONE);

then use direct read/write

    port.write(request, WRITE_WAIT_MILLIS);
    len = port.read(response, READ_WAIT_MILLIS);

or direct write + event driven read:

    usbIoManager = new SerialInputOutputManager(usbSerialPort, this);
    usbIoManager.start();
    ...
    port.write("hello".getBytes(), WRITE_WAIT_MILLIS);
    
@Override
public void onNewData(byte[] data) {
    runOnUiThread(() -> { textView.append(new String(data)); });
}

and finally:

    port.close();

For a simple example, see UsbSerialExamples folder in this project.

For a more complete example with background service to stay connected while the app is not visible or rotating, see separate github project SimpleUsbTerminal.

Probing for Unrecognized Devices

Sometimes you may need to do a little extra work to support devices which usb-serial-for-android doesn't (yet) know about -- but which you know to be compatible with one of the built-in drivers. This may be the case for a brand new device or for one using a custom VID/PID pair.

UsbSerialProber is a class to help you find and instantiate compatible UsbSerialDrivers from the tree of connected UsbDevices. Normally, you will use the default prober returned by UsbSerialProber.getDefaultProber(), which uses the built-in list of well-known VIDs and PIDs that are supported by our drivers.

To use your own set of rules, create and use a custom prober:

// Probe for our custom CDC devices, which use VID 0x1234
// and PIDS 0x0001 and 0x0002.
ProbeTable customTable = new ProbeTable();
customTable.addProduct(0x1234, 0x0001, CdcAcmSerialDriver.class);
customTable.addProduct(0x1234, 0x0002, CdcAcmSerialDriver.class);

UsbSerialProber prober = new UsbSerialProber(customTable);
List<UsbSerialDriver> drivers = prober.findAllDrivers(usbManager);
// ...

Of course, nothing requires you to use UsbSerialProber at all: you can instantiate driver classes directly if you know what you're doing; just supply a compatible UsbDevice.

Compatible Devices

This library supports USB to serial converter chips:

  • FTDI FT232R, FT232H, FT2232H, FT4232H, FT230X, FT231X, FT234XD
  • Prolific PL2303
  • Silabs CP2102 and all other CP210x
  • Qinheng CH340, CH341A

and devices implementing the CDC/ACM protocol like

  • Arduino using ATmega32U4
  • Digispark using V-USB software USB
  • BBC micro:bit using ARM mbed DAPLink firmware
  • ...

Help & Discussion

For common problems, see the FAQ wiki page.

Are you using the library? Add your project to ProjectsUsingUsbSerialForAndroid.

Comments
  • Support for PL2303 devices

    Support for PL2303 devices

    From [email protected] on July 27, 2012 07:36:03

    Would it be possible to add support for PL2303 USB to serial devices to your library? I found some sourcecode for PL2303 devices in this project: https://code.google.com/p/indiserver/source/browse/INDIserver/branches/version2#version2%2Fsrc%2Fde%2Fhallenbeck%2Findiserver%2Fcommunication_drivers

    Original issue: http://code.google.com/p/usb-serial-for-android/issues/detail?id=2

    enhancement 
    opened by mik3y 28
  • is this possible? Computer-android device interconnection

    is this possible? Computer-android device interconnection

    Good evening.

    Can i somehow write a python script that writes to a USB some raw data, and read them with my mobile device using cable ?

    like fake-COM port or something...

    question 
    opened by dkati 16
  • Reusing UsbRequest objects instead of creating new one

    Reusing UsbRequest objects instead of creating new one

    Hi,

    For now using library UsbRequestJNI is logging an init and close messages for every transaction over the USB interface (at least for CP21xx and FTDI) https://stackoverflow.com/questions/28559394/suppress-usbrequestjni-alogd-log-messages

    It can be filtered by "setprop log.tag.UsbRequestJNI SUPPRESS", but it seems it would be better to create mUsbRequest object in open() and reuse it in read() instead of creating new one on every read.

    opened by lukegluke 16
  • How to connect to a serial port with this library

    How to connect to a serial port with this library

    Hi, I appreciate your work. Unfortunately I couldn't find a right way to connect to serial port, There are two different ways that you mentioned. first of them relate to jar library and second one relate to the last commit. In the first sample Jar file doesn't support any of control values such as stop bit and so on. Can you guide me to fix it? Even I can't connect to an Arduino.

    Sample code: UsbSerialProber prober = UsbSerialProber.getDefaultProber(); UsbSerialDriver driver = prober.probeDevice(device); if(driver != null){ List ports = driver.getPorts(); }

    I have a device with vendor id 0x2341 but driver always return null.

    Thanks in advance.

    opened by BrotherV 15
  • Error reading FTDI port

    Error reading FTDI port

    In case only 2 bytes are read, the readFilter function and then the read function return 0.

    line 167 FtdiSerialDriver.java

    int length = Math.min(srcPos + maxPacketSize, totalBytesRead) - (srcPos + READ_HEADER_LENGTH);

    not-reproducible device:ftdi 
    opened by NetFix1 14
  • Add note about setDTR() for Arduino

    Add note about setDTR() for Arduino

    According to the description it can be reset using:

    • open
    • set baud rate 1200
    • close

    http://arduino.cc/en/Main/arduinoBoardMicro

    It works in pure java with RxTx library but it does not work on Android with this lib. The same problem with Arduino Leonardo board

    opened by 4ntoine 14
  • Unable to read from usb port, writing works well (FTDI).

    Unable to read from usb port, writing works well (FTDI).

    Hi guys.

    I've been using usb-serial-for-android for a few years now in my port of AspeQt - Atari Serial Peripheral Emulator for Android and it worked very well with SIO2PC-USB converters based on FT232 chip, but I started getting reports from users saying that despite their device fully supports USB Host, AspeQt doesn't work. I couldn't reproduce this problem, but finally I got two such devices, both with Android 7.1 where I'm observing similar behavior.

    What I've been able to conclude till now:

    1. Probably it's not due to missing permissions, in debug mode it shows they're granted: USB : Device found! USB : Received permission result OK USB : Device OK USB : Driver found for attached usb device D FtdiSerialDriver: claimInterface 0 SUCCESS USB : Device opened USB : setBaudrate: 19200

    2. One of AspeQt's features - loading of cassette images is working fine, possibly because it's only writing data to the usb port, without reading any Atari-specific data (eg command frame as in case of disks and exe files), so the communication is one way.

    3. I've also prepared an experimental version with d2xx library and is working - but it's much slower and closed-source, so I don't want to use it. But it's a good test for a user to make sure if device is fully supporting usb-host (otg).

    Now the hard part - what do you suggest to check? I've been fiddling around with endpoints, indexes, making sure that I'm talking to correct device, no luck so far. The symphtoms are - no data incoming from ftdi chip. Same code works well on my LG X Power, with 6.0 and Lolipop based tablets. Have you experienced something similar?

    Cheers, W.

    opened by greblus 12
  • Support multiple serial ports

    Support multiple serial ports

    The code looks like it assumes there is a single serial port on the usb device and grabs the first interface. This is fine for most commerical usb->serial adapters, but if you have a custom device (PIC) that implements a USB Composite device, you can have multiple interfaces that each provide a serial port.

    There is probably not a lot of demand for this, but I have such a device and would love to use this library.

    opened by bj0 12
  • mConnection.requestWait() block when data length==32

    mConnection.requestWait() block when data length==32

    Hi, I used usb-serial-for-android lib with a ch340 hardware, it recieve data from ch340, when the data length is not 32 or 32 * n, it works well, but it DOS NOT work when the data length is 32 or 32*n like "hellohellohellohellohellohellohe" (length = 32) or "hellohellohellohellohellohellohehellohellohellohellohellohellohe"(length = 64) . I debug it, found it block at mConnection.requestWait().

    And I set usbSerialPort.setParameters(115200, 8, UsbSerialPort.STOPBITS_1, UsbSerialPort.PARITY_NONE);

    Very strange problem, anyone can help?

    Thank U very much!

    device:ch34x 
    opened by yaphone 11
  • Event driven reading loads of data

    Event driven reading loads of data

    Hi,

    I am writing a project that has an arduino connected to an android headunit via USB, and the Arduino relays CAN Frames as 12 byte structs to the headunit over USB Serial (up to 300 per second).

    I am using the event driven reading to relay data to a JNI method that unpacks the sent data into structs:

    class SerialManager() : SerialInputOutputManager.Listener {
    
        override fun onNewData(data: ByteArray?) {
            // Add to our native buffer
            data?.let { CarComm.nativeCanbus.sendBytesToBuffer(it) }
        }
    
        override fun onRunError(e: Exception?) {
        }
    }
    

    I have noticed though, that as the Arduino is constantly sending data, it appears the Event driven reader actually misses data, which then means that data being sent is mis-aligned, causing loads of incorrect parsing of the sent data.

    Is there any way to create a JNI or custom method that can buffer all the read data to a large buffer? - Or increase the frequency of polling for new data? - I have managed to do this using JVM using strings and decoding the data into bytes, but this proved to be way too slow. I would like to simply transmit structs over serial and re-pack them on the JNI side of things if possible.

    The full Android code can be found here

    opened by rnd-ash 11
  • I want to donate your project.

    I want to donate your project.

    first of all , thank you for your efforts. But, can you tell me how can I include your library locally in my project? which folder should i copy to my project and what settings should i make?

    opened by sevketk 11
  • update adding repository

    update adding repository

    For newer version of Android Studio, you may need to add repository to setting.gradle instead of build.gradle. I found it in https://stackoverflow.com/a/69506760/6339474.

    opened by chobitsfan 0
  • Detect end of stream with onNewData

    Detect end of stream with onNewData

    Hello,

    Thank you for this package.

    From what I could see of this package how can I know that my data has all arrived before processing it?

    With the onNewData method I receive data substitution

    Would there be a solution to know when all the bytes received?

    InputStream returned -1 if reading data is complete

    Or is the only solution to detect a delimiter character and close the stream when found ?

    Thanks, Cyril

    question 
    opened by emendo-web 1
  • Drivers is empty with PCF8523 IC

    Drivers is empty with PCF8523 IC

    Hi, I am having an issue with finding the custom driver for my usb-serial device. This is my Adafruit device. As far as I researched, the IC is PCF8523. I could not find it on the supported list of custom prober. My question is: how can I communicate with the device using custom prober?

    {
    /dev/bus/usb/001/002=UsbDevice[mName=/dev/bus/usb/001/002,
    mVendorId=9114,
    mProductId=32971,
    mClass=239,
    mSubclass=2,
    mProtocol=1,
    mManufacturerName=Adafruit,
    mProductName=QT Py M0,
    mVersion=1.00,
    mSerialNumberReader=android.hardware.usb.IUsbSerialReader$Stub$Proxy@a29ca09, 
    mHasAudioPlayback=false, 
    mHasAudioCapture=false, 
    mHasMidi=false, 
    mHasVideoCapture=false, 
    mHasVideoPlayback=false,
    mConfigurations=
    	[
    		UsbConfiguration
    			[
    				mId=1,
    				mName=null,
    				mAttributes=160,
    				mMaxPower=50,
    				mInterfaces=
    				[
    					UsbInterface
    					[
    						mId=0,
    						mAlternateSetting=0,
    						mName=null,
    						mClass=2,
    						mSubclass=2,
    						mProtocol=0,
    						mEndpoints=
    						[
    							UsbEndpoint
    							[
    								mAddress=129,
    								mAttributes=3,
    								mMaxPacketSize=16,
    								mInterval=16
    							]
    						]
    					]
    					UsbInterface
    					[
    						mId=1,
    						mAlternateSetting=0,
    						mName=null,
    						mClass=10,
    						mSubclass=0,
    						mProtocol=0,
    						mEndpoints=
    						[
    							UsbEndpoint
    							[
    								mAddress=2,
    								mAttributes=2,
    								mMaxPacketSize=64,
    								mInterval=0
    							]
    							UsbEndpoint
    							[
    								mAddress=131,
    								mAttributes=2,
    								mMaxPacketSize=64,
    								mInterval=0
    							]
    						]
    					]	
    				]
    			]
    	]
    }
    
    question device:cdc 
    opened by kingfisherphuoc 1
  • Error 403 when downloading aar from jitpack.io

    Error 403 when downloading aar from jitpack.io

    Hello i have a problem on Windows when building my app that requires usb-serial-for-android . The gradle build returns this error

    Could not HEAD 'https://jitpack.io/com/github/mik3y/usb-serial-for-android/3.4.6/usb-serial-for-android-3.4.6.pom'. Received status code 403 from server: Forbidden

    This is happening only on Windows, it's working fine on Mac. And the app builds fine if the lib was already downloaded before today.

    Can i manually download the aar file ? Where do i need to place it ?

    not-reproducible 
    opened by CedricMuccioli 0
  • How to show all ports correctly?

    How to show all ports correctly?

    Hi mik3y,

    I tried to connect USB serial with 8ports to my computer and it shows 8ports. But, when i connect it to your example apps "Serial USB Terminal", it only shows 3ports. How is that possible? Is there any solution or things i could try to fix this?

    question device:multiport 
    opened by sintyasin 7
Releases(v3.4.6)
  • v3.4.6(Jul 22, 2022)

  • v3.4.5(Jul 5, 2022)

    features:

    • added VID/PID for Raspberry Pi Pico
    • use optimal buffer size in write() by default. Thus the SerialTimeoutException has valid bytesTransferred
    Source code(tar.gz)
    Source code(zip)
  • v3.4.4(Dec 22, 2021)

  • v3.4.3(Sep 21, 2021)

  • v3.4.2(Aug 5, 2021)

  • v3.4.1(Jul 1, 2021)

  • v3.4.0(May 14, 2021)

    features:

    • support PL2303GC/GB/GT/GL/GE/GS
    • custom baud rates for PL2303TA/TB
    • added VID 0x0483, PID 0x5740 to preconfigured CDC devices, as it is frequently used as STMicroelectronics virtual COM port
    Source code(tar.gz)
    Source code(zip)
  • v3.3.3(Apr 25, 2021)

    features:

    • new SerialInputOutputManager.start() method for starting ioManager thread

    fixes:

    • Previously recommended start action Executors.newSingleThreadExecutor().submit(ioManager) did not shutdown the executor, which caused a thread leak.
      Use new SerialInputOutputManager.start() method instead. It's still possible to use old style start, as SerialInputOutputManager continues to implement Runnable interface.
    • read w/o timeout now only throws exception on connection lost. Reverted buffer to small handling from f4166f3, as there might be unkown reasons for empty response
    Source code(tar.gz)
    Source code(zip)
  • v3.3.2(Apr 10, 2021)

    features:

    • use optimal read buffer size in SerialInputOutputManagerto reduce latency for FTDI and CH34x
    • getReadEndpoint() and getWriteEndpoint() methods moved to UsbSerialPort interface

    fixes:

    • read w/o timeout now throws exception on connection lost or buffer to small (when using SerialInputOutputManager the exception was already thrown before this change, because the next read failed)
    • Use monotonic clock for timeout calculation, to avoid issues when time is adjusted
    Source code(tar.gz)
    Source code(zip)
  • v3.3.1(Feb 27, 2021)

    features:

    • new SerialTimeoutException class
    • new getReadEndpoint() and getWriteEndpoint() methods in CommonUsbSerialPort class
    • distinguish generic IO error and timeout in write()
      • Return type of write() method changed to void. The return value was redundant before, as it was always the request length or an exception was thrown
      • If timeout is reached, write() now throws a SerialTimeoutException with ex.bytesTransferred filled with known transferred bytes
      • Optimal write buffer size can be set with port.setWriteBufferSize(port.getWriteEndpoint().getMaxPacketSize())
      • By default the write buffer size is > MaxPacketSize and the Linux kernel splits writes in chunks. When the timeout occurs, it's unknown how many chunks have already been transferred and 0 is returned in SerialTimeoutException.bytesTransferred. With optimal write buffer size, this value is known and returned in SerialTimeoutException.bytesTransferred as the chunking is done in this library, but due to more kernel round trips write() might take slightly longer and cause more CPU load
    • introduced IntDef annotation @Parity at setParameters(..., @Parity int parity) parameter for better warnings
    • disable debug logging in SerialInputOutputManager by default. Can be enabled with public static boolean DEBUG;

    fixes:

    • set thread priority in SerialInputOutputManager.run
    • improve error handling in close

    changes:

    • Return type of write() method changed to void. The return value was redundant before, as it was always the request length or an exception was thrown
    Source code(tar.gz)
    Source code(zip)
  • v3.3.0(Oct 17, 2020)

  • v3.2.0(Sep 30, 2020)

  • v3.1.0(Sep 12, 2020)

    features:

    • read with timeout now throws error on connection lost, e.g. device disconnected
    • Prolific input control line methods now throw error on connection lost
    • SerialInputOutputManager with configurable buffer size
    • SerialInputOutputManager with configurable threadpriority and higher default to prevent data loss

    fixes:

    • FTDI read now waits until timeout. previously returned after periodic FTDI status response (default 16 msec)
      If you relied on this early return, you should adapt your timeout values
    Source code(tar.gz)
    Source code(zip)
  • v3.0.1(Aug 24, 2020)

    features:

    • restore support for FTDI FT230X, FT231X, FT234XD (was removed in v.3.0.0 is it was untested and unclear if new FTDI implementation supports these devices)
    Source code(tar.gz)
    Source code(zip)
  • v3.0.0(Aug 1, 2020)

    features:

    • move from LGPL to MIT license, as FTDI driver is rewritten

    changes:

    • FTDI driver rewritten without LGPL code from libftdi
    • FTDI device FT231X removed from automatically detected devices as it is untested and unknown if it is supported by the new driver
    • setRts, getRts, getRCts, setDtr, getDtr, getDsr, getCd, getRi, purgeHwBuffers methods now throw UnsupportedOperationException instead of returning false if not supported
    Source code(tar.gz)
    Source code(zip)
  • v2.3.0(Jul 5, 2020)

    features:

    • added CH341A support
    • implement CH34x input control lines
    • implemented CP21xx input control lines
    • new getControlLines() and getSupportedControLines() methods
      • getControlLines()requires less USB transfers than calling getRTS() + ... + getRI() individually
      • getSupportedControlLines() tells you, which control lines are supported by a driver. Previously you had to check the driver implementation

    changes:

    • open() CP21xx with RTS, DTR unset, for consistency with other drivers
    Source code(tar.gz)
    Source code(zip)
  • v2.2.3(Jun 10, 2020)

  • v2.2.2(Mar 1, 2020)

  • v2.2.1(Feb 11, 2020)

  • v2.2.0(Jan 11, 2020)

    features:

    • support multi-port CDC devices
    • support FTDI control lines
    • added FTDI specific get/setLatencyTimer, getModemStatus methods

    refactoring:

    • reuse UsbRequest to reduce LogCat output
    Source code(tar.gz)
    Source code(zip)
  • v2.1.0(Nov 15, 2019)

    features:

    • DTR and RTS support for CP21xx drivers
    • reimplemented read timeout. caution: too short timeout can cause data loss, see wiki for details
    • include proguard rules in .aar library to retain driver classes instantiated by UsbSerialProber

    fixes:

    • improve error handling in close and more reliably interrupt read and terminate SerialInputOutputManager
    • harmonize + cleanup error messages
    • correct purgeHwBuffers parameter description
    • manage USB permission intent in sample app
    • more code coverage tests

    changes:

    • distinguish IllegalArgumentException and UnsupportedOperationException in setParameter If you had dedicated handling for IllegalArgumentException, you now have to handle both
    • SerialInputOutputManager now has infinite read/write timeout per default, to prevent data loss If you want to use SerialInputOutputManager.writeAsync you should set a readTimeout!=0 before starting the thread
    Source code(tar.gz)
    Source code(zip)
  • v2.0.0(Oct 12, 2019)

    merged back changes collected in kai-morich's fork

    new features:

    • support ft_232h, cp210_ multiport devices
    • CH34x: data bits, parity, stop bits
    • CP21xx: mark+space
    • support USB devices with other non CDC related endpoints
    • CH34x: support more baudrates

    changes:

    • increased minimum Android version to 4.3 (API 17)

    • Always use async read (UsbDeviceConnection.requestWait), as bulkTransfer (UsbDeviceConnection. bulkTransfer) can cause data loss at high baud rates. Before this release only the CdcAcm driver used async read.

      With async read currently read timeout != 0 is ignored. read blocks until data is available (except Ftdi, where status data is available each 16msec).

      Instead of using read you can use the asynchronuos SerialInputOutputManager to be notified on available data. SerialInputOutputManager.writeAsync is also affected, as the loop blocks in a read. Instead you can write directly in your UI thread.

    Source code(tar.gz)
    Source code(zip)
  • v0.1.0(Mar 4, 2014)

    Version: 0.1.0 Release date: November 13, 2012 Notes: First public release of usb-serial-for-android.

    Quick Start

    1. Download usb-serial-for-android-v010.jar

    2. Copy the jar to your Android project's libs/ directory. (See Android's FAQ for help).

    3. Copy device_filter.xml to your project's res/xml/ directory.

    4. Configure your AndroidManifest.xml to notify your app when a device is attached (see Android USB Host documentation for help).

    <activity
        android:name="..."
        ...>
      <intent-filter>
        <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
      </intent-filter>
      <meta-data
          android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" 
          android:resource="@xml/device_filter" />
    </activity>
    

    5. Use it! Example code snippet:

    // Get UsbManager from Android.
    UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
    
    // Find the first available driver.
    UsbSerialDriver driver = UsbSerialProber.acquire(manager);
    
    if (driver != null) {
      driver.open();
      try {
        driver.setBaudRate(115200);
    
        byte buffer[] = new byte[16];
        int numBytesRead = driver.read(buffer, 1000);
        Log.d(TAG, "Read " + numBytesRead + " bytes.");
      } catch (IOException e) {
        // Deal with error.
      } finally {
        driver.close();
      } 
    }
    

    For a more complete example, see the UsbSerialExamples/ project, which is a simple application for reading and showing serial data.

    A simple Arduino application is also available (in arduino/), which can be used for testing.

    Author, License, and Copyright

    usb-serial-for-android is written and maintained by mike wakerly.

    This library is licensed under LGPL Version 2.1. Please see LICENSE.txt for the complete license.

    Copyright 2011-2012, Google Inc. All Rights Reserved.

    Portions of this library are based on libftdi (http://www.intra2net.com/en/developer/libftdi). Please see FtdiSerialDriver.java for more information.

    Help & Discussion

    For common problems, see the Troubleshooting wiki page.

    For other help and discussion, please join our Google Group, usb-serial-for-android.

    Source code(tar.gz)
    Source code(zip)
    usb-serial-for-android-v010.jar(19.54 KB)
Owner
mike w
mike w
Connect adb from devices to androidstudio by wifi without usb anymore

WIFI ADB There are two projects in the repository. The first one is an android project,and the second is an intellij plugin project. You can see more

Huazhou 273 Jan 6, 2023
Create GIFs from Android devices (pronounced "gif cap")

gifcap A shell script to record GIFs from your Android devices A picture is worth 1,000 words - and, when prototyping animations, recording visual gli

Outlook 207 Nov 26, 2022
A tool to install components of the Android SDK into a Maven repository or repository manager to use with the Android Maven Plugin, Gradle and other tools.

Maven Android SDK Deployer Original author including numerous fixes and changes: Manfred Moser [email protected] at simpligility technologies i

simpligility 1.4k Dec 27, 2022
A tool to install components of the Android SDK into a Maven repository or repository manager to use with the Android Maven Plugin, Gradle and other tools.

Maven Android SDK Deployer Original author including numerous fixes and changes: Manfred Moser [email protected] at simpligility technologies i

simpligility 1.4k Dec 27, 2022
Simple library to generate and view PDF in Android

PDFCreatorAndroid Simple library to generate and view PDF in Android A simple library to create and view PDF with zero dependency Or native code. Add

Tej Pratap Singh 234 Dec 11, 2022
Android Material Design Theme UI and Tool Library. Support: 4.0.3~O

GitHub OSChina 中文 English Genius-Android Genius-Android: by Material Design style and some commonly used packages. Starting in 2015, The divided into

Qiujuer 2.3k Dec 27, 2022
Library that makes it possible to read, edit and write CSV files

AdaptiveTableLayout Welcome the new CSV Library AdaptiveTableLayout for Android by Cleveroad Pay your attention to our new library that makes it possi

Cleveroad 1.9k Jan 6, 2023
A library which will save you a lot of time from writing the same intent creation code. it consist of many intent creation codes like Share, Contacts, Email and etc, which you can easily use.

Android-Intent-Library A library which will save you a lot of time from writing the same intent creation code. it consist of many intent creation code

Next 67 Aug 24, 2022
Android Library Finder

alfi Android Library Finder Search through thousands of android libraries that can help you scale your projects elegantly Usage Search for something a

César Ferreira 509 Dec 8, 2022
Remote script to create a maven compatible release of an android library (aar)

release-android-library ?? Deprecated ?? This script is deprecated in favour of: novoda/bintray-release Remote script to create a maven compatible rel

Paul Blundell 144 Dec 13, 2022
:inbox_tray: [Android Library] Hunt down all package information

Android library to hunt down package information. The library is built for simplicity and approachability. It not only eliminates most boilerplate cod

Nishant Srivastava 141 Nov 17, 2022
An android library that handles the closing of your app interactively.

Shutdown A library that handles the closing of your app interactively. Overview of Shutdown library Shutdown library handles the closing of your app i

Emmanuel Kehinde 56 Oct 5, 2022
TaggerString is very light library which allows to build dynamic string resource in much more readable way.

TaggerString TaggerString is very light library which allows to build dynamic string resource in much more readable way. I guess that every Android de

polok 241 Jun 3, 2022
The Kotlin fake data generator library!

Fakeit This library is a port of the Ruby gem Faker. It generates realistic fake data — like names, emails, dates, countries — for a variety of scenar

Moove It 517 Nov 20, 2022
Android Resource Manager application to manage and analysis your app resources with many features like image resize, Color, Dimens and code Analysis

Android Resource Manager application to manage and analysis your app resources with many features like image resize, Color, Dimens and code Analysis

Amr Hesham 26 Nov 16, 2022
It makes a preview from an url, grabbing all the information such as title, relevant texts and images. This a version for Android of my web link preview https://github.com/LeonardoCardoso/Link-Preview

LeoCardz Link Preview for Android It makes a preview from an url, grabbing all the information such as title, relevant texts and images. Visual Exampl

Leonardo Cardoso 420 Nov 19, 2022