MCPcopy Index your code
hub / github.com/Testinium/MobileDeviceInfo

github.com/Testinium/MobileDeviceInfo @v2.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.0 ↗ · + Follow
1,482 symbols 1,552 edges 17 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

MobileDeviceInfo

MobileDeviceInfo helps you fetch information from your mobile device such as UUID, Device Name, etc. You can integrate MobileDeviceInfo library into your Appium projects to manage your capabilities dynamically.

Prerequisites:

You need to have ADB and libimobiledevice installed on your machine

ADB installation can be done via this link

libimobiledevice can be found on this link

or

brew cask install android-platform-tools

brew install --HEAD libimobiledevice

Basic Usage

 DeviceInfo deviceInfo = new DeviceInfoImpl(DeviceType.ANDROID);
 if (deviceInfo.anyDeviceConnected()) {
        Device device = deviceInfo.getFirstDevice();
        System.out.println("Device Name - " + device.getDeviceProductName());
        System.out.println("Device id   - " + device.getUniqueDeviceID());

or

 DeviceInfo deviceInfo = new DeviceInfoImpl(DeviceType.IOS);
 if (deviceInfo.anyDeviceConnected()) {
        Device device = deviceInfo.getFirstDevice();
        System.out.println("Device Name - " + device.getDeviceProductName());
        System.out.println("Device id   - " + device.getUniqueDeviceID());

or ( Attention - Data Comes Late )

 DeviceInfo deviceInfo = new DeviceInfoImpl(DeviceType.IOSSIMULATOR);
 if (deviceInfo.anyDeviceConnected()) {
        Device device = deviceInfo.getFirstDevice();
        System.out.println("Device Name - " + device.getDeviceProductName());
        System.out.println("Device id   - " + device.getUniqueDeviceID());

or ( Only Android and IOS Devices Except IOS Simulator )

 DeviceInfo deviceInfo = new DeviceInfoImpl(DeviceType.ALL);
 if (deviceInfo.anyDeviceConnected()) {
        Device device = deviceInfo.getFirstDevice();
        System.out.println("Device Name - " + device.getDeviceProductName());
        System.out.println("Device id   - " + device.getUniqueDeviceID());

or ( Attention - Data Comes Late Due To IOS Simulator)

 DeviceInfo deviceInfo = new DeviceInfoImpl(DeviceType.ALLANDIOSSIMULATOR);
 if (deviceInfo.anyDeviceConnected()) {
        Device device = deviceInfo.getFirstDevice();
        System.out.println("Device Name - " + device.getDeviceProductName());
        System.out.println("Device id   - " + device.getUniqueDeviceID());

For Appium projects, here's a usage:

DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.PLATFORM, device.getDeviceProductName());
capabilities.setCapability("platformName", device.getDeviceProductName());
capabilities.setCapability(CapabilityType.VERSION, device.getProductVersion());
capabilities.setCapability("deviceName", device.getModelNumber());
capabilities.setCapability("udid", device.getUniqueDeviceID());
capabilities.setCapability("app", "#Your App File#");


driver = new RemoteWebDriver(new URL(URL), capabilities);

You can add your project as a maven dependency.

<dependency>
  <groupId>com.testinium.deviceinformation</groupId>
  <artifactId>device-information</artifactId>
  <version>1.0</version>
</dependency>

You have to add our repository to your pom.xml because it hasn't released to Maven Central repositories.

<repositories>
    <repository>
      <id>public</id>
      <name>public</name>
      <url>http://mvn.testinium.com/repository/public/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
</repositories>

Extension points exported contracts — how you extend this code

Device (Interface)
(no doc) [6 implementers]
src/main/java/com/testinium/deviceinformation/model/Device.java
DeviceFinder (Interface)
(no doc) [4 implementers]
src/main/java/com/testinium/deviceinformation/device/DeviceFinder.java
DeviceInfo (Interface)
(no doc) [1 implementers]
src/main/java/com/testinium/deviceinformation/DeviceInfo.java

Core symbols most depended-on inside this repo

getDevices
called by 10
src/main/java/com/testinium/deviceinformation/DeviceInfo.java
findDevices
called by 7
src/main/java/com/testinium/deviceinformation/device/DeviceFinder.java
getAndroidDevices
called by 1
src/main/java/com/testinium/deviceinformation/DeviceInfo.java
getIosDevices
called by 1
src/main/java/com/testinium/deviceinformation/DeviceInfo.java
getIosSimulatorDevices
called by 1
src/main/java/com/testinium/deviceinformation/DeviceInfo.java
anyDeviceConnected
called by 0
src/main/java/com/testinium/deviceinformation/DeviceInfo.java
getFirstDevice
called by 0
src/main/java/com/testinium/deviceinformation/DeviceInfo.java
getFirstAndroid
called by 0
src/main/java/com/testinium/deviceinformation/DeviceInfo.java

Shape

Method 1,465
Class 13
Interface 3
Enum 1

Languages

Java100%

Modules by API surface

src/main/java/com/testinium/deviceinformation/model/Android.java1,213 symbols
src/main/java/com/testinium/deviceinformation/model/Ios.java170 symbols
src/main/java/com/testinium/deviceinformation/model/IosSimulator.java34 symbols
src/main/java/com/testinium/deviceinformation/DeviceInfo.java16 symbols
src/main/java/com/testinium/deviceinformation/model/Device.java8 symbols
src/main/java/com/testinium/deviceinformation/DeviceInfoImpl.java7 symbols
src/main/java/com/testinium/deviceinformation/model/DeviceInfoModel.java6 symbols
src/main/java/com/testinium/deviceinformation/device/AllDeviceFinder.java4 symbols
src/main/java/com/testinium/deviceinformation/helper/ProcessHelper.java3 symbols
src/main/java/com/testinium/deviceinformation/helper/JsonHelper.java3 symbols
src/main/java/com/testinium/deviceinformation/device/IosSimulatorDeviceFinder.java3 symbols
src/main/java/com/testinium/deviceinformation/device/IosDeviceFinder.java3 symbols

For agents

$ claude mcp add MobileDeviceInfo \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact