FireflyApi

1. Overview

FireflyApi provides some system interfaces and encapsulates the functional interface that users need, so that users can use the system’s common interfaces in an easy and simple way. This document is a brief introduction of the interfaces. The specific use cases are described below.

  • Support all series models of rk3288 Android5.1 platform
  • Support all series models of rk3399 Android7.1 platform
  • Support all series models of rk3128 Android5.1 platform

2. Resources download and use

When using FireflyApi, please check whether the firmware of device is the latest version. Find the corresponding model in the page of [Resource Download], and check if your firmware version is up-to-date. At the same time, you can also synchronize the SDK to the latest submission. The specific steps are as follows: first, select the corresponding [wiki], then find the synchronized method in the Android Development-> Build the Android Firmware.

A complete set of Demo used by FireflyApi:

Demo mainly includes the source codes of firefly_sdkapi_demo.apk, firefly-api.jar,libfirefly_api.so and firefly_sdkapi_demo, etc. About apk and the use of the library are as follows:

├── apk
│   └── firefly_sdkapi_demo.apk
├── lib
│   ├── armeabi-v7a
│   │   └── libfirefly_api.so
│   └── firefly-api.jar
├── Readme_CN.txt
├── Readme_EN.txt
└── src
    └── firefly_sdkapi_demo

2.1 Brief introduction of firefly_sdkapi_demo apk

firefly_sdkapi_demo apk is a Demo program based on the FireflyApi interface. Users can verify their own programs or related interfaces through the implementation of functions in the Demo. When using the latest version of firmware, there is a built-in firefly_sdkapi_demo app as shown in the figure

_images/apk_1.png

  • Click to enter the apk, there will be a corresponding interface implementation list, as shown below

_images/apk_2.png

  • System settings interface implementation

_images/apk_3.png

  • Time switch interface implementation

_images/apk_4.png

  • Hardware interface implementation

_images/apk_5.png

2.2 How to use FireflyApi in eclipse

firefly_sdkapi_demo apk is to provide the user with corresponding functions of the interface, if the user needs to write his own application, it is required to put firefly-api.jar in the libs directory, and libfirefly_api.so in the libs/armeabi-v7a directory.

|-libs  
 	|-firefly-api.jar  
 	|-armeabi-v7a  
       |-libfirefly_api.so

Adding method is as follows

_images/pic_1.png

_images/pic_2.png

_images/pic_3.png

3.FireflyApi interface description

3.1 System information

  1. FireflyApiversion information

    Function:public String getFireflyApiVersion()  
    Description:FireflyApi version information   
    Example:   
    String version = mFireflyApi.getFireflyApiVersion();
    
  2. Get the current device model

    Function:public String getAndroidModel()   
    Description:Get the current device model  
    Example:   
    String model= mFireflyApi.getAndroidModel(); 
    
  3. Get the current device android system version

    Function:public String getAndroidVersion()   
    Description:Get the current device android system version   
    Example:   
    String version= mFireflyApi.getAndroidVersion();
    
  4. Get the RAM size of the device. The unit of measurement is MB

    Function:public long getRamSpace()   
    Description:Get the RAM size of the device. The unit of measurement is MB   
    Return:Returns the RAM size in MB  
    Example:   
    long ram = mFireflyApi.getRamSpace();
    
  5. Get the RAM size of the device and format it as String

    Function:public String getFormattedRamSpace()   
    Description:Get the RAM size of the device and format it as String   
    Return: The RAM size of the device, String format (1.5GB)  
    Example:   
    String ram = mFireflyApi.getFormattedRamSpace();   
    
  6. Get the built-in Flash size of the device. The unit of measurement is MB

    Function:public long getFlashSpace()   
    Description:Get the built-in Flash size of the device. The unit of measurement is MB   
    Return: Returns the Flash size in MB   
    Example:   
    long flash = mFireflyApi.getFlashSpace();   
    
  7. Get the built-in Flash size of the device,and format it as String

    Function:public String getFormattedFlashSpace()   
    Description:Get the built-in Flash size of the device,and format it as String   
    Return: The Flash size of the device, String format (1.5GB)    
    Example:   
    String ram = mFireflyApi.getFormattedFlashSpace();
    
  8. Get the firmware kernel version of the device

    Function:public String getFormattedKernelVersion()   
    Description:Get the firmware kernel version of the device   
    Return: Kernel version   
    Example:   
    String kernel_version= mFireflyApi.getFormattedKernelVersion();
    
  9. Get the firmware system version and compile date of the device

    Function:public String getAndroidDisplay()   
    Description:Get the firmware system version and compile date of the device   
    Return: Firmware system version and compile date    
    Example:   
    String version= mFireflyApi.getAndroidDisplay();   
    

3.2 System settings

  1. System shutdown

    Function:public void shutDown(boolean showConfirm)   
    Description:System shutdown   
    Parameters:Does showConfirm display the shutdown box   
    Example:   
    mFireflyApi.shutDown(false);   
    
  2. System reboot

    Function:public void reboot()  
    Description:System shutdown  
    Example:  
    mFireflyApi.reboot();   
    
  3. System hibernation

    Function:public void sleep()  
    Description:System shutdown  
    Example:  
    mFireflyApi.sleep();   
    
  4. Screen capture

    Function:public boolean  takeScreenshot(String path,String name)  
    Description:Take a screenshot and save it to the specified path  
    Parameters:path storage path  
             name file stored name (available only in PNG format)  
    Return: Whether a screenshot is successfully captured true/false  
    Example:  
    mFireflyApi.takeScreenshot("/sdcard/","123.png");   
    
  5. Screen rotation

    Function:public boolean  setRotation(int rotation)  
    Description:Rotation   
    Screen parameters:rotation Screen direction:  Surface.ROTATION_0  
                                                   Surface.ROTATION_90  
                                                   Surface.ROTATION_180  
                                                   Surface.ROTATION_270  
    Example:mFireflyApi.setRotation(Surface.ROTATION_0);
    
  6. Get the screen direction

    Function:public int  getRotation()  
    Description:Get the screen direction  
    Return:rotation Screen direction:  Surface.ROTATION_0  
                                        Surface.ROTATION_90  
                                        Surface.ROTATION_180  
                                        Surface.ROTATION_270  
    Example:  
    int rotation = mFireflyApi.getRotation();
    
  7. Cancel screen rotation

    Function:public void  thawRotation()  
    Description:Cancel screen rotation  
    Example:  
    mFireflyApi.thawRotation();
    
  8. Display / Hide status bar

    Function:public void  setStatusBar(boolean show)  
    Description:Display / Hide status bar  
    Parameters:show is set to true, it means to display the status bar, otherwise, false to hide the status bar  
    Example:  
    mFireflyApi.setStatusBar(false);
    
  9. Backlight switch

    Function:public void  setLcdBackLight(boolean on)  
    Description:Turns the backlight off without hibernating the device, the software still runs  
    Parameters:on is set to true, it means to turn on the backlight, otherwise, false to turn it off  
    Example:  
    mFireflyApi.setLcdBackLight(false);
    
  10. Is there a backlight

    Function:public boolean  hasLcdBackLight()  
    Description:Determine if there is backlight  
    Return:The value is set to true, it means there is backlight, or false for no backlight otherwise  
    Example:  
    boolean has = mFireflyApi.hasLcdBackLight();
    
  11. Set the screen brightness

    Function:public boolean setBrightness(int brightness)  
    Description:Set the screen brightness  
    Parameters:brightness range 0-255  
    Return:true on success, false on failure 
    Example:  
    boolean success= mFireflyApi.setBrightness(130);
    
  12. Get screen brightness

    Function:public int getBrightness()  
    Description:Get screen brightness  
    Return:screen brightness,returns -1 when the failure occurs  
    Example:  
    int brightness= mFireflyApi.getBrightness();
    
  13. Set system time

    Function:public boolean setTime( int year, int month, int day, int hour,  
    	 int minute,int second)  
    Description:Set system time  
    Parameters:year       
             month    
             day      
             hour     
             minute   
             second   
    Return:true on success, false on failure  
    Example:  
    mFireflyApi.setTime(2018,5,18,5,30,45);
    
  14. Silent installation

    Function:public boolean silentInstall(String path)  
    Description:Silent installation 
    Parameters:path apk address  
    Return:true on successful installation  
    Example:  
    mFireflyApi.silentInstall("/sdcard/123.apk");
    
  15. Silent uninstallation

    Function:public boolean silentUnInstall(String package_name)  
    Description:Silent uninstallation  
    Parameters:package name the application to be uninstalled  
    Return:Returns true if the app is uninstalled successfully, or false otherwise 
    Remark:Only supports apps installed manually, but not for built-in apps  
    Example:  
    mFireflyApi.silentUnInstall("com.android.settings");
    
  16. Execute shell command

    Function:public Command execCmd(String cmd)  
    Description:Execute shell command  
    Parameters:cmd shell command  
    Return:Command  input command
                     output results  
                     exitStatus shell running status, 0 is normal exit  
    Example:  
    mFireflyApi.execCmd("ls");
    
  17. su permission to run shell command

    Function:public static Command execSuCmd(String cmd)  
    Description:su permission to run shell command  
    Parameters:cmd shell command  
    Return:Command   input command
               output results  
               exitStatus shell running status, 0 is normal exit  
    Example:  
    mFireflyApi.execSuCmd("cat init.rk30board.rc");//init.rk30board.rc Default permission 750
    
  18. Save system logcat

    Function:public void saveLogcat(String folderPath,String fileName)
    Description:Grab the LOG message in the Android layer and save it to the corresponding directory 
    Parameters:folderPath save path   
              fileName  save file name
    Example:  
    mFireflyApi.saveLogcat("/mnt/sdcard/","123.log");
    
  19. Get Hdmiin current connection status

    Function:public String getHdmiinStatus()
    Description:Get Hdmiin current connection status 
    Return:STATUS_HDMI_IN_CONNECT="1" hdmiin connected   
       STATUS_HDMI_IN_NO_CONNECT="0" hdmiin not connected     
    Example:  
    String hdmiin_status = mFireflyApi.getHdmiinStatus();
    
  20. Get the current number of screens

    Function:public int getScreenNumber(Context context)
    Description:Get the current number of screens
    Return:Returns 0 if it fails    
    Example:  
    int screen_number = mFireflyApi.getScreenNumber(context);
    

3.3 Hardware interface

  1. Enable watchdog

    Function:public boolean watchDogEnable(boolean enable)  
    Description:Open/Close watchdog  
    Parameters:enable is set to true, it means to open watchdog, otherwise, false to disenable 
    Return:true on success, false on failure  
    Remark:After opening the watchdog, you need to take care of feeding the watchdog once every 30s, otherwise, the watchdog will be closed.  
    Example:  
    boolean success = mFireflyApi.watchDogEnable(true);
    
  2. Feeding the dog

    Function:public boolean watchDogFeed()
    Description:Feeding the dog once 
    Return:Returns true if it feeds the dog successfully  
    Example:  
    boolean success = mFireflyApi.watchDogFeed();
    
  3. Microphone switch(3128 board type is not supported)

    Function:public boolean switchMic(int mic_type)  
    Description:Microphone is switched to onboard/headphone  
    Parameters:mic_type   TYPE_DEFAULT_MIC onboard mic   
                           TYPE_HEADSET_MIC headphone mic
    Return:Returns true if the switch is successful  
    Example:  
    boolean success = mFireflyApi.switchMic(FireflyApi.TYPE_DEFAULT_MIC);
    
  4. gpio control

    Function:public boolean gpioCtrl(int gpio, String direction, int value)  
    Description:Control gpio  
    Parameters:gpio  
             direction in, out, high, low high/low  
             value 1/0  
    Return:true on success  
    Example:  
    boolean success = mFireflyApi.gpioCtrl(263,"out",1);//GPIO8_A7 gpio the node is 263
    
  5. Read the value of gpio

    Function:public int gpioRead(int gpio)  
    Description:Read the value of gpio  
    Parameters:gpio  
    Return:Returns -1 when the read fails  
    Example:  
    int gpioValue = mFireflyApi.gpioRead(263);//GPIO8_A7 gpio the node is 263
    
  6. Check if the gpio port is occupied by the system

    Function:public boolean isGpioOccupied(int gpio)  
    Description:Check if the gpio port is occupied by the system  
    Parameters:gpio  
    Return:Returns true if occupied  
    Example:  
    boolean occupied  = mFireflyApi.isGpioOccupied(263);//GPIO8_A7 gpio the node is 263
    
  7. Parse the node value of gpio

    Function:public int gpioParse(String gpioStr)  
    Description:Parse the node value of gpio, for example GPIO8_A7 is converted to node 263  
    Parameters:gpioStr  
    Return:Returns -1 when the parse fails  
    Example:  
    int gpioValue= mFireflyApi.gpioParse("GPIO8_A7");//GPIO8_A7 gpio the node is 263
    
  8. Set USB power, choose to control OTG or USB interface

    Function:public boolean setUsbPower(int type, boolean connect )  
    Description:Set USB power, choose to control OTG or USB interface  
    Parameters:type  TYPE_USBHOST //Control USB port  
           TYPE_OTG     //Control OTG port  
           connect   
    Return:Returns to -1 if failed  
    Example:  
    mFireflyApi.setUsbPower("TYPE_USBHOST",ture);// connect USB HOST  
    mFireflyApi.setUsbPower("TYPE_USBHOST",false);// disconnect USB HOST  
    mFireflyApi.setUsbPower("TYPE_OTG",ture);// connect OTG  
    mFireflyApi.setUsbPower("TYPE_OTG",false);// disconnect OTG
    

    Note:Due to different hardware design, the OTG interface of the device with 3128 board type cannot be powered off when connected to the host.

  9. The use of serial port

  • Import header file

    import com.firefly.api.serialport.SerialPort;  
    import com.firefly.api.serialport.SerialPort.Callback;  
    import com.firefly.api.serialport.SerialPortFinder;
    
  • Open the serial port according to the path and baud rate, and set the callback function

    private boolean openSerialPort(String path,int baudrate)
    {
    		try {
    			SerialPort mSerialPort = new SerialPort(new File(path), baudrate, 0);
    			mSerialPort.setCallback(new Callback() {
    				@Override
    				public void onDataReceived(byte[] buffer, int size) {
    					// TODO Auto-generated method stub
    					String result = new String(buffer, 0, size);
    					Log.d(TAG, "onDataReceived:"+result);
    				}
            	});
    		} catch (SecurityException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			Log.d(TAG, "open serialport("+path +") error:"+e.toString());
    			return false;
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			Log.d(TAG, "open serialport("+path +") error:"+e.toString());
    			return false;
    		}
    		return true;
    }
    
  • Send a string to the serial port

    mSerialPort.sendMsg("112233445566");
    
  • Close the serial port

    mSerialPort.closeSerialPort();
    

3.4 Installation upgrade

  1. Local ota package upgrade

    Function:public void installPackage(String path) 
    Description:Restart the ota package upgrade. Currently, it only supports to put in the built-in storage root directory, i.e./sdcard/
    Parameters:Absolute path to the ota package
    Example:  
    mFireflyApi.installPackage("/mnt/sdcard/update.zip");
    
  2. Reboot into recovery

    Function:public void rebootRecovery() 
    Description:Reboot into recovery
    Example:  
    mFireflyApi.rebootRecovery();
    

3.5 Network

The network feature needs to add the following permissions:

android.permission.ACCESS_NETWORK_STATE  

android.permission.CHANGE_NETWORK_STATE  

android.permission.WRITE_SETTINGS
  1. Get the MAC address of the device’s Ethernet

    Function:public  String getEthMacAddress() 
    Description:Get the MAC address of the device's Ethernet
    Return:Returns null if failed 
    Example:  
    String ethMac  = mFireflyApi.getEthMacAddress();
    
  2. Get the IP address of the device’s Ethernet

    Function:public String getEthIpAddress() 
    Description:Get the IP address of the device's Ethernet
    Example:  
    String ip  = mFireflyApi.getEthIpAddress();
    
  3. Get device’s Ethernet information

    Function:public EthernetInfo getEthInfo()
    Description:Get device's Ethernet information (including: ip, netmask, gateway, dns1, dns2)
    Example:  
    EthernetInfo info  = mFireflyApi.getEthInfo();
    debug(info.isUseStatic()?"Static":"DHCP"+"\n");
    debug("IpAddress:"+info.getIpAddress()+"\n");
    debug("Netmask:"+info.getNetmask()+"\n");
    debug("Gateway:"+info.getGateway()+"\n");
    debug("Dns1:"+info.getDns1()+"\n");
    debug("Dns2:"+info.getDns2()+"\n");
    
  4. Set the IP address of the device’s Ethernet

    Function:public boolean setEthIPAddress(boolean use_static_ip,String mIpaddr, String mMask, String mGw, String mDns1,String mDns2)
    Description:Set the IP address of the device's Ethernet
    Parameters:use_static_ip. When true is set to static ip, other parameters are valid, otherwise, when false is set to dynamic ip, it will automatically obtain ip address
    Return:Returns false if failed
    Example:  
    boolean set_static_ip  = mFireflyApi.setEthIPAddress(true,"192.168.31.1",.....);
    boolean set_dhcp_ip  = mFireflyApi.setEthIPAddress(false,null,null,null,null,null);
    
  5. Whether Ethernet is currently connected

    Function:public boolean isEthConnect()
    Description:Whether Ethernet is currently connected
    Example:  
    boolean connect  = mFireflyApi.isEthConnect();
    
  6. Set Ethernet on/off

    Function:public boolean setEthernetEnabled(boolean enabled)
    Description:Set Ethernet on/off
    Parameters:enabled true(open)/false(close) 
    Example:  
    boolean connect  = mFireflyApi.isEthConnect();
    
  7. Get the type of current network connection

    Function:public String getCurNetworkType()
    Description:Get the type of current network connection
    Return:UNKNOWN/WIFI/ETHERNET/MOBILE
    Remark:Use BroadcatReceiver to monitor the Ethernet ConnectState changes through the monitoring of ETHERNET_STATE_CHANGED_ACTION = "android.net.ethernet.ETHERNET_STATE_CHANGED".
       int connectState=intent.getIntExtra("ethernet_state", -1)
    Example:  
    String netType  = mFireflyApi.getCurNetworkType();
    

3.7 Timer switch

The timer switch has built-in a time switch apk in the system, and realizes the functions of different timers through interaction

Note: The rk3399 platform does not support the preset timer switch function.

3.7.1 Preset timer switch function

  1. Set power-on alarm

    Function:public void setPowerOnAlarm(boolean enabled,long alarm_time)
    Description:Specify the UTC time, set the power-on alarm with no repetition
    Parameters:enabled    enable/disenable
                alarm_time startup time (UTC time)
    Example:  
    mFireflyApi.setPowerOnAlarm(true,System.currentTimeMillis()+60);
    //set to boot up after 1 minute
    
  2. Set the repeat timer to boot up

    Function:setPowerOnAlarmRepeat( boolean enabled,int hour, int minutes,DaysOfWeek daysofweek)
    Description:Set a repeat cycle timer to boot up on a weekly basis
    Parameters:enabled    enable/disenable
                hour  hour of boot time
                minutes  minutes of boot time
                daysOfWeek  Set a repeat cycle date to boot up on a weekly basis
                SUNDAY -> MONDAY
     	            0b1111111
    Example:  
    mFireflyApi.setPowerOnAlarmRepeat(true,10,30,0b1000011);
    // Set to boot up at 10:30 on Monday, Tuesday and Sunday
    
  3. Get the state of scheduled boot-up

    Function:public Alarm getPowerOnAlarm()
    Description:Get the state of scheduled boot-up
    Example:  
    Alarm powerOnAlarm =mFireflyApi.getPowerOnAlarm();
    
  4. Set a timed shutdown

    Function:public void setPowerOffAlarm(boolean enabled,long alarm_time)
    Description:Specify the UTC time, set the power-off alarm with no repetition
    Parameters:enabled    enable/disenable
         alarm_time shutdown time (UTC time)
    Example:  
    mFireflyApi.setPowerOffAlarm(true,System.currentTimeMillis()+60);
    // set to boot up after 1 minute
    
  5. Set a repeat timer for automatic shutdown

    Function:setPowerOffAlarmRepeat( boolean enabled,int hour, int minutes,DaysOfWeek daysofweek)
    Description:Set a repeat cycle timer to boot up on a weekly basis
    Parameters:enabled    enable/disenable
                hour  hour of boot time
                minutes  minutes of boot time
                daysOfWeek  Set a repeat cycle date to boot up on a weekly basis
               SUNDAY -> MONDAY
     	            0b1111111
    Example:  
    mFireflyApi.setPowerOffAlarmRepeat(true,10,30,0b1000011);
    // Set to shut down device at 10:30 on Monday, Tuesday and Sunday
    
  6. Get the state of scheduled shutdown

    Function:public Alarm getPowerOffAlarm()
    Description:Get the state of scheduled shutdown
    Example:  
    Alarm powerOffAlarm =mFireflyApi.getPowerOffAlarm();
    

If the above functions do not meet your needs, you can use the interface to achieve the desired functions through the programming. This interface is the most basic function to boot up/shut down device at a fixed time. It is turned on/off by the incoming id control. It needs to be manually set again after restart.

3.7.2 Custom the interface to boot up/shut down device

  1. Set a scheduled boot-up

    Function:public void setSchedulePowerOn(int id,boolean enabled,long alarm_time)
    Description:Set a scheduled boot-up, id is defined by the user, which is used to turn on and off the scheduled boot-up. It needs to reset after restart
    Parameters:id    startup timer id
                enabled    enable/disenable  
                alarm_time startup time (UTC time)
    Remark: Multiple scheduled boot-ups can be realized by multiple sets of startup timer id
    Example:  
    mFireflyApi.setSchedulePowerOn("12",true,System.currentTimeMillis()+60);
    // Set to start up device after 1 minute, id is 12
    mFireflyApi.setSchedulePowerOn("12",true,0);
    // Cancel the id that is "12"
    
  2. Set a scheduled shutdown

    Function:public void setSchedulePowerOff(int id,boolean enabled,long alarm_time)
    Description:Set a scheduled shutdown, id is defined by the user, which is used to turn on and off the scheduled shutdown. It needs to reset after restart
    Parameters:id    shutdown timer id
                enabled    enable/disenable  
                alarm_time shutdown time (UTC time)
    Remark: Multiple scheduled shutdowns can be realized by multiple sets of shutdown timer id
    Example:  
    mFireflyApi.setSchedulePowerOff("12",true,System.currentTimeMillis()+60);
    // Set to shut down device after 1 minute, id is 12
    mFireflyApi.setSchedulePowerOff("12",true,0);
    // Cancel the id that is "12"