// Copyright 1998-2014 Epic Games, Inc. All Rights Reserved. /*============================================================================= AndroidTargetDevice.h: Declares the AndroidTargetDevice class. =============================================================================*/ #pragma once /** * Type definition for shared pointers to instances of FAndroidTargetDevice. */ typedef TSharedPtr FAndroidTargetDevicePtr; /** * Type definition for shared references to instances of FAndroidTargetDevice. */ typedef TSharedRef FAndroidTargetDeviceRef; /** * Implements a Android target device. */ class FAndroidTargetDevice : public ITargetDevice { public: /** * Creates and initializes a new Android target device. * * @param InTargetPlatform - The target platform. * @param InSerialNumber - The ADB serial number of the target device. * @param InAndroidVariant - The variant of the Android platform, i.e. ATC, DXT or PVRTC. */ FAndroidTargetDevice( const ITargetPlatform& InTargetPlatform, const FString& InSerialNumber, const FString& InAndroidVariant ) : AndroidVariant(InAndroidVariant) , Connected(false) , DeviceName(InSerialNumber) , Model(InSerialNumber) , SerialNumber(InSerialNumber) , TargetPlatform(InTargetPlatform) { } public: /** * Sets the device's connection state. * * @param InConnected - Whether the device is connected. */ void SetConnected( bool InConnected ) { Connected = InConnected; } /** * Sets the device name. * * @param InDeviceName - The device name to set. */ void SetDeviceName( const FString& InDeviceName ) { DeviceName = InDeviceName; } /** * Sets the device name. * * @param InDeviceName - The device name to set. */ void SetModel( const FString& InNodel ) { Model = InNodel; } public: // Begin ITargetDevice interface virtual bool Connect( ) override { return true; } virtual bool Deploy( const FString& SourceFolder, FString& OutAppId ) override; virtual void Disconnect( ) override { } virtual ETargetDeviceTypes::Type GetDeviceType( ) const override { return ETargetDeviceTypes::Tablet; } virtual FTargetDeviceId GetId( ) const override { return FTargetDeviceId(TargetPlatform.PlatformName(), SerialNumber); } virtual FString GetName( ) const override { if (AndroidVariant.IsEmpty()) { //return DeviceName; return Model; } //return FString::Printf(TEXT("%s (%s)"), *DeviceName, *AndroidVariant); return FString::Printf(TEXT("%s (%s)"), *Model, *AndroidVariant); } virtual FString GetOperatingSystemName( ) override { return TEXT("Android"); } virtual int32 GetProcessSnapshot( TArray& OutProcessInfos ) override; virtual const class ITargetPlatform& GetTargetPlatform( ) const override { return TargetPlatform; } virtual bool IsConnected( ) override { return Connected; } virtual bool IsDefault( ) const override { return true; } virtual bool PowerOff( bool Force ) override; virtual bool PowerOn( ) override { return true; } virtual bool Launch( const FString& AppId, EBuildConfigurations::Type BuildConfiguration, EBuildTargets::Type BuildTarget, const FString& Params, uint32* OutProcessId ); virtual bool Reboot( bool bReconnect = false ) override; virtual bool Run( const FString& ExecutablePath, const FString& Params, uint32* OutProcessId ) override; virtual bool SupportsFeature( ETargetDeviceFeatures::Type Feature ) const override; virtual bool SupportsSdkVersion( const FString& VersionString ) const override; virtual bool TerminateProcess( const int32 ProcessId ) override; virtual void SetUserCredentials( const FString & UserName, const FString & UserPassword ) override; virtual bool GetUserCredentials( FString & OutUserName, FString & OutUserPassword ) override; // End ITargetDevice interface protected: /** * Executes an SDK command with the specified command line on this device only using ADB. * * @param Params - The command line parameters. * @param OutStdOut - Optional pointer to a string that will hold the command's output log. * @param OutStdErr - Optional pointer to a string that will hold the error message, if any. * * @return true on success, false otherwise. */ bool ExecuteAdbCommand( const FString& Params, FString* OutStdOut, FString* OutStdErr ) const; private: // The variant of the Android platform, i.e. ATC, DXT or PVRTC. FString AndroidVariant; // Holds a flag indicating whether the device is currently connected. bool Connected; // Holds the device name. FString DeviceName; // Holds the device model. FString Model; // Holds the serial number (from ADB devices) of this target device. FString SerialNumber; // Holds a reference to the device's target platform. const ITargetPlatform& TargetPlatform; }; #include "AndroidTargetDevice.inl"